#
What I Built ๐๏ธโจ
Selling handmade crafts, vintage goods, or boutique items online is exciting, but writing product listings is exhausting.
Independent creators on Etsy, eBay, and Instagram spend 20 to 30 minutes on every single item trying to write:
- ๐ SEO-friendly product titles
- โ๏ธ Engaging story descriptions
- ๐ Bullet points for materials, dimensions, and specs
- ๐ท๏ธ Search tags (like Etsy's 13-tag limit)
- ๐ฑ Social media captions with hashtags
Most commercial AI tools charge expensive monthly subscriptions or make up fake facts like false certifications and fake materials.
To fix this, I built Open List: an AI listing generator created specifically for small business owners and side hustlers.
You simply type in basic product notes (or pick a sample preset), and Open List turns them into a complete, professional listing in just 3 seconds.
Core Features ๐
-
๐ก๏ธ Zero Hallucinations: The AI strictly sticks to the facts and materials you enter.
-
๐ฏ Multi-Channel Ready: Formats listings for Etsy, eBay, Instagram, WhatsApp, or standard online stores.
-
๐จ Brand Voice: Lets you set your shop tone (like "Warm & Artisanal" or "Playful") and ban words you dislike.
-
๐ Smart Similarity Search: Uses MongoDB Atlas Vector Search so you can find similar past listings instantly.
-
โ๏ธ Edit & Export Anywhere: Edit any section on the spot and download as Text (.txt), Spreadsheet (.csv), or JSON.
#
Demo ๐๐ฑ
Experience Open List in action:
#
Code ๐ป๐ฆ
You can view the full source code and setup instructions on GitHub:
๐ GitHub Repository: https://github.com/PruthviRajG25/Hacktoberfest-Week2
AI-Powered Ecommerce Listing Generator Powered by Open-Weight Models & MongoDB Atlas
AI-Powered Ecommerce Listing Generator Powered by Open-Weight Models & MongoDB Atlas
Open List is a modern, production-minded web application engineered for small businesses, independent artisans, Etsy/eBay sellers, Instagram boutiques, and local retailers. It transforms basic product specifications into SEO-optimized ecommerce listings, targeted search keywords, bullet-point highlights, and engaging social media captions using open-weight AI (Gemma 3 1B via Ollama) and MongoDB Atlas.
๐๏ธ System Architecture #
<div class="js-render-enrichment-target" data-json='{"data":"flowchart TD\n subgraph Client["Frontend Client (React + TypeScript + Vite)"]\n UI["Dashboard & Form Interfaces"]\n Editable["Editable Listing Sections"]\n Export["Export Engine (TXT, CSV, JSON)"]\n end\n\n subgraph Service["Unified Backend (FastAPI + Uvicorn)"]\n Static["Static Vite Asset Server (SPA Fallback)"]\n API["REST API (/api/
*)"]\n Router["Health / Listings / Brand / Search"]\n Guard["Factual Anti-Hallucination Guardrails"]\n end\n\n subgraph AI["Open-Weight Inference Layer"]\n Ollama["Local Ollama Service (gemma3:1b)"]\n Hosted["Hosted Open-Weight Endpoint (vLLM / Groq / Together)"]\n end\n\n subgraph DB["Database & Search (MongoDB Atlas)"]\n Atlas["MongoDB Atlas Cluster (open_list_db)"]\n Vector["Atlas $vectorSearch Index (vector_index)"]\n Fallback["Resilient In-Memory Fallback"]\n end\n\n UI --> API\n Editable --> API\n Export --> UI\n Static -.-> UI\n API --> Guard\n Guard --> Ollama\n Guard -.-> Hosted\n API --> Atlas\n Atlas --> Vector\n Atlas -.-> Fallback\n"}' data-plain='flowchart TD
subgraph Client["Frontend Client (React + TypeScript + Vite)"]
UI["Dashboard & Form Interfaces"]
Editable["Editable Listing Sections"]
Export["Export Engine (TXT, CSV, JSON)"]
end
subgraph Service["Unified Backend (FastAPI + Uvicorn)"]
Static["Static Vite Asset Server (SPA Fallback)"]
API["REST API (/api/*
)"]
Router["Health / Listings / Brand / Search"]
Guard["Factual Anti-Hallucination Guardrails"]
end
' dir="auto">
Built with:
- ๐ Backend : FastAPI (Python 3.11+) with Pydantic validation
- โ๏ธ Frontend : React, TypeScript, Tailwind CSS, Vite
- ๐ **Database** : MongoDB Atlas with Vector Search ($vectorSearch)
- โ๏ธ **Deployment** : Render Blueprint (render.yaml)
#
How I Built It ๐ ๏ธ๐ง
Open List is built around open-weight AI so it runs fast and free:
- ๐ฆ Google Gemma 3 1B with Ollama : Runs locally on an ordinary 8 GB RAM laptop. It is fast, lightweight (~800 MB), and costs $0 in cloud API bills. For cloud deployments, it also connects to hosted Gemma 2 9B.
- ๐ก๏ธ Anti-Hallucination Guardrails : Product details are isolated inside protected tags. The AI is strictly instructed never to invent unverified materials, fake warranties, or medical claims.
- ๐ MongoDB Atlas & Vector Search : Saves your listing history and brand profile. When searching past products, MongoDB Atlas Vector Search calculates cosine similarity across embeddings to surface relevant listings immediately.
- ๐ Unified Single-Service on Render : FastAPI serves both the backend API and the compiled React frontend together as a single service, making deployment on Render simple and zero-maintenance.
#
Why Does Open Innovation Matter? ๐๐ก
Open innovation makes this project possible for real side hustles:
- ๐ธ $0 Cost for Solopreneurs : Proprietary AI APIs charge per token. A maker listing hundreds of items would get hit with unpredictable bills. With open-weight Gemma running locally, generation costs nothing.
- ๐ 100% Privacy : Proprietary scent formulas, secret craft methods, and supplier pricing never leave the creator's computer.
- ๐ด Works Completely Offline : Artisans can draft listings in craft workshops, basements, or outdoor flea markets without an internet connection.
- ๐ No Vendor Lock-in : No surprise pricing hikes or discontinued APIs. You own your software and model forever.
#
My Agent Session ๐ค๐ค
During the build, I used Antigravity and Gemini-powered pair programming to:
- ๐ Architect the unified FastAPI + React Vite project.
- ๐ก๏ธ Create strict Pydantic anti-hallucination validation filters.
- ๐ Wire up MongoDB Atlas Vector Search and resilient fallback search.
- ๐งช Write automated tests using pytest to verify health probes and listing generators.
#
My First User ๐ฉ๐จ๐ฏ๏ธ
I tested Open List with a friend who runs a handmade scented soy candle business on Etsy.
The Test:
He previously spent 25 minutes writing each listing. I entered her candle notes: 100% soy wax, cotton wick, lavender scent, 45-hour burn time, and 8 oz glass jar.
The Result:
In 3 seconds, Open List generated:
- A clean Etsy title with holiday keywords
- 5 bullet points with exact burn specifications
- 13 ready-to-paste Etsy search tags
- An Instagram caption with hashtags and a call-to-action
What He Said:
"I dread writing listings on Sunday nights. This did in 5 seconds what takes me half an hour, and it didn't invent fake ingredients! I would gladly pay $10 to $15 a month just for the time this saves me."
Her feedback inspired the 1-click title swap and section-by-section rewrite buttons!
#
Prize Categories ๐๐ฏ
Entering the following partner categories:
- ๐ Best Use of Gemma : Built directly around Google's open-weight Gemma 3 1B (via Ollama) and Gemma 2 9B.
- ๐ Best Use of MongoDB Atlas : Uses MongoDB Atlas for listing storage and MongoDB Atlas Vector Search ($vectorSearch) for semantic catalog discovery.
- ๐ Best Use of Render : Production-ready deployment using Render Blueprint (render.yaml) that builds and serves both the React frontend and FastAPI backend in a single web service.
#
Conclusion โจ๐
Building Open List proved something important: AI doesn't need to replace human craftsmanship. It should remove the boring, repetitive chores so creators can focus on what they actually love doing.
For an independent artist, every hour saved on marketing copy is an extra hour spent making art, pouring candles, or fulfilling orders. By combining Google Gemma, MongoDB Atlas, and Render, solo entrepreneurs can have the marketing power of big brands at zero extra cost.
What's Next? ๐ฎ
- ๐ฆ 1-Click direct publishing to Etsy and Shopify stores
- ๐ท AI image-to-specs extraction from product photos
- ๐ Multi-language translations for global buyers
Give it a spin, run it locally, and let me know your thoughts in the comments!
Happy Hacktoberfest and happy hacking! ๐๐ปโจ