This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle

What I Built

Snaplist is a listing writer for solo sellers on Etsy and eBay. You drop in a few photos of an item, pick a marketplace and a tone, add any facts the photos can't show (condition, size, backstory), and it drafts a title, a description, and up to 13 search tags. Every word is editable before you copy it out.

Who would pay for it? Anyone who lists secondhand or small-batch items and keeps rewriting the same kind of description. The idea is a one-time desktop package rather than a monthly subscription. My working guess is around ₹999, but that is a pricing hypothesis I haven't tested, not revenue.

Demo

Video walkthrough, generating a listing from photos of a kitchen timer: https://youtu.be/j0H6ZO6grRg

Code

Public repo, MIT licensed: https://github.com/anshraj3060/snaplist

How I Built It

The core is Gemma 3 (4B), an open-weight vision model, served by Ollama on my own MacBook Air. The app is a small Node.js server plus a browser UI. When you press Generate, the server sends your photos (base64) to Ollama's /api/chat endpoint and asks for structured JSON back, which the UI turns into an editable title, description, and tags.

I built the app with an AI coding agent (Arena) from a prompt, then ran it myself: installed Ollama, pulled gemma3:4b, switched Snaplist from its labeled demo mode to "Use my local model", and tested it with my own photos.

A few details I like:

  • No silent fallback. If the model fails, you see an error, never fake sample text passed off as AI output.
  • Demo mode is labeled "not AI generated" so nobody mistakes it for real analysis.
  • The model is swappable. OLLAMA_MODEL=gemma3:12b npm start is all it takes to try a bigger one.
  • Tags are capped at 13 and titles are limited per marketplace in code, not left to the model.

Why Does Open Innovation Matter?

  • Cost structure. With open weights running locally, there is no per-listing API bill. That is what makes a one-time license even thinkable. A closed API would push me toward a subscription just to cover inference.
  • Privacy. In local mode, photos go from the browser to the Snaplist server to Ollama, all on the seller's own computer. Unlisted products and supplier photos never reach a third party.
  • Control. I can inspect the prompts, change the model with one environment variable, and later fine-tune for a niche. With a closed API I get whatever the vendor ships this month.
  • Works offline. After the one-time model download, generation doesn't need the internet.

Where it did not beat a closed model: a 4B model is small. In my first test I uploaded photos of four unrelated items, and it merged them into one confused listing. It did read a brand name off a bottle, which was a nice surprise. Descriptions come out short and need a human edit. CPU inference can be slow, and there is a 180-second timeout. Hardware and electricity still cost something, and Gemma is open-weight under its own terms, not OSI-approved open source.

I also deliberately did not build price suggestions. Snaplist has no comparable-sales data, and I'd rather ship nothing than invent numbers.

My First User

I haven't had anyone else try it yet, so there is no first-user story to tell. Next step: put it in front of a real seller and ask what they'd pay, and what they'd want it to do next.

Prize Categories

Best Use of Gemma: the whole project runs on Gemma 3 vision through Ollama.