This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
I built ListCraft AI — a high-performance, privacy-first product listing generator designed specifically for e-commerce side hustlers and online sellers on Etsy, eBay, and Amazon.
The Problem it Solves
Selling online is one of the most accessible side hustles today, but writing listings is exhausting:
- Platform algorithms are demanding: Etsy requires 13 strict 20-character tags and keyword-dense titles; eBay demands concise 80-character titles and condition specs; Amazon requires feature-driven bullet points with backend search terms.
- Closed AI tools are expensive and risky: Tools powered by closed APIs charge $20–$50/month in subscriptions or token fees. Worse, independent sellers have to feed their proprietary supplier details, cost margins, and unreleased product drafts to third-party cloud servers. ### Who Would Pay For It (And Why It's Free) Small business owners, vintage collectors, artisan crafters, and dropshippers. Commercial copywriting tools charge $15–$75/month for similar listing generation. ListCraft AI does this for $0 forever by running open-weight models locally on the seller's machine. ---
Demo
- Live Application: https://listcraft-ai.onrender.com
- Source Code: https://github.com/LakshyaMulchandani/ListCraft-AI
Walkthrough & Screenshots
1. Modern Workspace with Ambient Craft Backdrop

Figure 1: The primary workspace featuring our custom faceted crystal SVG logo, connection telemetry, and a cosmic midnight glassmorphic UI. Notice the floating showcase cards in the periphery depicting real artisan items (leather journals, mechanical timepieces, sculptural ceramics) that provide visual inspiration while keeping the focus on copywriting.
2. Real-Time Token Streaming Inference

Figure 2: Real-time listing generation in progress. Utilizing Ollama's HTTP streaming protocol with ReadableStream and TextDecoder, tokens appear with sub-50ms latency alongside an animated terminal cursor, eliminating waiting spinners.
3. Structured Platform-Optimized Listing


Figure 3: Completed Etsy listing output. The raw model output is automatically parsed into discrete, production-ready modules: an algorithmically front-loaded Title, rich storytelling Description, interactive Tag Chips (strictly formatted for Etsy's 13-tag limit), and conversion-focused Bullet Points with one-click clipboard copying.
4. Zero-Cloud Local History Drawer

Figure 4: The slide-out History Drawer. Every generated listing is persisted locally in the browser's localStorage via a lightweight FIFO queue, allowing sellers to switch between catalog drafts without cloud databases or user tracking.
Code
- GitHub Repository: https://github.com/LakshyaMulchandani/ListCraft-AI.git
Repository structure:
-
index.html— Semantic HTML5 with SVG branding and ambient canvas layers -
css/styles.css— Custom design system with glassmorphism tokens, micro-animations, and responsive layout -
js/ollama.js— Client-side streaming connector to local Ollama endpoints (/api/generateand/api/tags) -
js/templates.js— Platform-engineered prompts tailored for Etsy, eBay, and Amazon SEO algorithms -
js/app.js— Reactive UI orchestrator, clipboard manager, local storage history cache, and ambient particle engine
How I Built It
ListCraft AI is built with a "Local-First, Zero-Dependency" architecture that connects client-side web primitives directly to local open-weight models:
[ Browser Client ]
├─ Product Input Form
├─ Prompt Engine (Etsy / eBay / Amazon)
└─ NDJSON Stream Parser & Glass UI
│
▼ HTTP / Streaming (localhost:11434)
[ Ollama Local AI Runtime ]
└─ Open-Weight Models (Llama 3.1 8B / Mistral / Gemma)
1. Real-Time Token Streaming (js/ollama.js)
Instead of waiting for generations to complete, the client streams tokens using native browser fetch and TextDecoder:
const reader = res.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
const chunk = decoder.decode(value, { stream: true });
const lines = chunk.split('\n').filter((l) => l.trim());
for (const line of lines) {
const parsed = JSON.parse(line);
if (parsed.message?.content) onChunk(parsed.message.content);
}
}
Auto-Discovery: Queries /api/tags on startup to detect and populate installed models automatically.
Heartbeat Check: Displays a setup guide if Ollama is offline.
2. Platform-Engineered Parsing (js/templates.js)
To handle strict marketplace SEO rules (Etsy's 13-tag limit, eBay's 80-char title, Amazon's 5 key bullets), prompts enforce structured delimiters:
===TITLE===
===DESCRIPTION===
===TAGS===
===BULLET_POINTS===
A client-side regex engine splits this stream into distinct UI modules with one-click copy buttons and interactive tag chips.
3. Glassmorphic UI & Ambient Visuals (css/styles.css)
Cosmic Midnight Theme: Styled with #070913 dark mode, glass cards (backdrop-filter: blur), and floating ambient orbs.
Floating Product Cards: High-res craft photos (leather journal, vintage timepiece, ceramic vase) floating in the periphery to provide visual context.
Interactive Canvas: Lightweight 60fps particle system that gently reacts to mouse movement.
4. 100% Private & Lightweight
Zero Frameworks: Pure HTML5, CSS3, and JavaScript (<50KB total bundle, sub-200ms load).
Local Persistence: Past generations are saved locally in localStorage without tracking or external databases.
Why Does Open Innovation Matter?
Open innovation is what made ListCraft AI possible. For an independent side-hustle tool, open-weight models beat closed APIs in every dimension:
- Trade Secret Protection: A seller's suppliers, wholesale unit costs, and unreleased designs are sensitive business intelligence. With local open-source models, the product data never leaves the seller's laptop.
- True $0 Marginal Cost: Closed APIs charge per token. A seller drafting 50 SKU listings or testing 10 tone variations would rack up recurring API bills. With open weights on Ollama, inference costs nothing.
- Offline Reliability: Sellers packing orders or setting up listings at craft fairs, flea markets, or in rural areas without reliable Wi-Fi can still generate listings 100% offline.
- No Vendor Lock-In: If one model provider raises prices or changes terms, users can swap from Llama 3.1 to Mistral or Gemma with a single click in the model dropdown.
Prize Categories
Hacktoberfest Open-Source AI Challenge Week 2 (Side Hustle): Overall Challenge Category.
Best Use of Render: I deployed the project on Render to host the agent's front end and serve the API layer.
Top comments (0)