This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle.
What I Built
Making a product and writing about it require different kinds of work. An independent seller might know exactly how a handmade item was made, yet still spend time turning those details into a listing and social captions.
I built SellerCraft AI, a browser-based listing studio that helps sellers turn confirmed product details into editable drafts using open-weight AI running on their own device.
The app includes:
- A product workspace for photos, attributes, and saved drafts.
- Local AI generation for product descriptions and social captions.
- Optional image captioning to suggest what a photo might show.
- Listing fields assembled from confirmed facts and templates.
- Batch drafting, CSV export, and JSON import/export.
- Model management and an installable PWA with offline support after the required files have been downloaded and cached.
The intended users are independent Etsy and eBay sellers, Shopify store owners, and makers managing small catalogs. The problem is repetitive writing: describing products clearly while keeping track of drafts and avoiding invented details.
The current MVP is free. My business hypothesis is that sellers could pay for reusable niche templates, brand voice tools, or more advanced catalog workflows. These are future opportunities, not validated demand: I have not activated billing or claimed paying customers.
Demo
Try SellerCraft AI: Live website
Jump into the workspace: Dashboard
To try the main workflow:
- Open AI models and download a text model. The first download can be substantial.
- Open Listing studio and enter a product's confirmed details.
- Generate a draft, edit the result, and check its factual accuracy.
- Save the product and export it from your workspace.
No account or AI API key is required. Product data stays in the browser's local storage databases. Initial app and model downloads require a connection; local generation can then work offline on supported devices when caching is complete.
Small models can invent details. SellerCraft treats generated text as a draft, displays factual warnings, and requires seller review before saving content as reviewed. Image captions are also unconfirmed suggestions and do not automatically become product facts.
Code
The source code is public:
HSC-Logic/SellerCraftAI on GitHub
SellerCraft AI
A private, local-first product content studio for independent sellers. React, TypeScript, Vite, Tailwind, shadcn-style Radix components, Lucide, Dexie, Transformers.js, ONNX Runtime Web and an installable PWA. No backend, API keys, account or paid AI API.
Run
Requires Node 22+.
npm install
npm run dev
npm test
npm run build
npx playwright install chromium
npm run test:e2e
Start at the landing page or /#/dashboard. Add photos and confirmed facts, review attributes, generate a listing, edit and save, then create social copy or export TXT/JSON/CSV/ZIP. Initial AI use downloads model files from Hugging Face; the UI never substitutes canned text for failed inference. CPU WASM runs in a worker. Cancellation terminates the worker. Batch processing has concurrency one.
Offline
Visit the production build online to install the service worker. Download models in AI models. Disconnect and use Verify while offline. A complete model cache and cached runtime are…
The repository includes implementation notes, model documentation, validation results, and contribution guidance.
How I Built It
The interface uses React, TypeScript, and Vite, with Tailwind CSS, Lucide icons, and a reusable component layer. Dexie and IndexedDB store products, drafts, and cached model files locally. A service worker provides the PWA app shell, and GitHub Pages hosts the static application.
The AI runs through Transformers.js and ONNX Runtime Web inside a Web Worker. Moving inference into a worker keeps the interface responsive while a model loads or generates text.
The available model options include:
-
Qwen2.5-0.5B-Instruct, through
onnx-community/Qwen2.5-0.5B-Instruct, as the recommended text model. -
SmolLM2-135M-Instruct, through
HuggingFaceTB/SmolLM2-135M-Instruct, as a smaller text option. -
ViT-GPT2 image captioning, through
Xenova/vit-gpt2-image-captioning, for optional photo suggestions.
CPU inference through WebAssembly is the default. WebGPU is an experimental option with CPU fallback; I have not verified it across devices.
One of the hardest parts was making offline model loading reliable. Caching the interface was relatively straightforward, but having an offline page did not prove that all model weights were available.
I implemented a chunked IndexedDB model cache that stores large files in smaller pieces and only marks a file complete after every piece has been saved. Interrupted downloads remain incomplete, and retries can clean them up. This made it possible to reload the app without a network connection and still load a fully cached model.
Another challenge was factual reliability. Smaller models sometimes added materials, design details, or popularity claims that the seller had never supplied. I added a warning heuristic, a stricter retry, and an explicit review step. Those checks help surface problems, but they cannot guarantee correctness.
I also kept the role of AI clear: descriptions and social captions use model generation, while other listing fields use confirmed facts and templates. The app does not claim to provide measured keyword search volumes.
Validation included 12 passing unit tests and 5 passing end-to-end tests, including real text and vision model scenarios. I tested interrupted downloads, retry behavior, draft editing and saving, offline text generation after a reload, and offline image-model loading. These results were verified on a Windows Chromium desktop using CPU inference; they do not establish support for every browser or mobile device.
GitHub Actions runs the standard tests and builds and deploys the site to GitHub Pages. The heavier real-model tests are opt-in.
Why Does Open Innovation Matter?
Open-weight models made the core product possible: a seller can generate drafts locally without sending each product description or photo to a paid inference API.
That changes both privacy and the business model. Local inference avoids a mandatory per-request AI service bill, although it still uses the seller's hardware, storage, and electricity. It also makes offline work possible after installation and complete model caching.
The open-source inference stack lets me inspect model loading, change prompts, replace providers, and fix caching behavior. When offline loading failed, I could work directly on the storage path rather than depend on a hosted service's behavior.
There are tradeoffs. Downloads are large, devices vary, and compact models require careful human review. A hosted API could offer stronger models and simpler setup. For this project, however, control over inference and data handling is part of the value I want to offer independent sellers.
My next step is to put SellerCraft in front of real sellers and measure whether it helps them produce useful drafts faster, how much editing they need, and which features they would actually pay for.
Prize Categories
Best Use of GitHub Copilot: The challenge's category description includes automating a project with GitHub Actions. SellerCraft uses Actions to run checks, build the application, and deploy it to GitHub Pages. The development assistant used was Codex; I am claiming the GitHub Actions usage described in the category requirements.
Top comments (0)