This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
Listing Writer is a local-first, AI-powered listing generator for Etsy and eBay sellers.
Imagine a vintage reseller or a handmade crafter with 20 items to photograph and list over the weekend. They don't have a copywriter. They use a generic cloud AI tool, but it forces them to upload photos of unreleased inventory to a server they don't control. Worse, generic AI often hallucinates details—confidently writing "approximately 8 inches wide" for an item it cannot actually measure.
Listing Writer solves this by running entirely on the seller's laptop. It uses an open-weight vision model to read the photo, generate a title, description, tags, and price range, and streams the result instantly.
But its most important feature is honesty: if the model cannot see the size, material, or quantity in the photo, it writes [seller to confirm] instead of guessing. The seller gets a perfect starting point without being fed AI hallucinations.
Demo
(Note: Because I am running Gemma 3 locally on my CPU, text generation takes about 90 seconds. The video is trimmed to show the setup, the offline proof, and the final result.)
https://www.youtube.com/watch?v=gXQ9E0Teu8s
Code
How I Built It
The stack is incredibly lightweight: Python, Streamlit, and Ollama.
I used Gemma 3 (4B), an open-weight vision model, served locally via Ollama. The Streamlit frontend communicates with the local Ollama server via localhost:11434.
When the user clicks "Generate," the app reads the image bytes, packages them with a carefully engineered prompt (which includes the selected "voice"), and sends them to Ollama. The app uses ollama.chat(..., stream=True) so the text renders progressively on the screen rather than making the user stare at a blank loading screen.
Because I built this for real people, I also focused heavily on error handling. Here is what happens when the user doesn't have Ollama running, and what the one-time ~3.3GB model download looks like:
Why Does Open Innovation Matter?
For this specific use case, closed APIs are a dealbreaker.
Privacy & Unreleased Inventory: Sellers often list handmade items or vintage finds they haven't publicly announced yet. Uploading those photos to a third-party API (like OpenAI or Anthropic) means that data is on a server they don't control. With local open weights, the photo never leaves the laptop.
Zero Marginal Cost: A seller listing 200 items a month would be billed for 200 vision API calls. With an open model running locally, the cost of generating 1 or 1,000 listings is exactly $0. The only cost is the electricity to run the laptop.
True Offline Capability: Sellers source inventory at flea markets, warehouses, and craft fairs—places with terrible WiFi. A closed API fails completely without internet. My tool works completely offline after the initial one-time model download.
No Lock-in: If Gemma 3 isn't good enough for a specific niche, I can swap the
model="gemma3:4b"string tollama3.2-visionin a single line of code. I am not locked into one provider's pricing changes or deprecations.


Top comments (0)