DEV Community

Harsh Verma
Harsh Verma

Posted on

Listing Writer: Etsy and eBay listings from a local open model

Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle Submission πŸ’Έ

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

What I Built

Listing Writer makes an Etsy or eBay listing from a few notes about a product. It gives you a title, a description, and tags.

Small sellers spend a lot of time on listings. Twenty new candles means twenty new titles and descriptions. This tool does that work in seconds.

Small sellers who list many items will pay for this. They do not want a monthly fee for each listing. They also do not want to send their product data to a server that they do not control. A one-time price for a tool on their own laptop is a better fit.

Demo

Input: "Handmade soy candle, lavender and vanilla, 200g tin, 40 hour burn time, cotton wick"

Output title: Lavender & Vanilla Soy Candle, 200g

Output tags: soy candle, lavender candle, vanilla candle, handmade candle, 40 hour burn, cotton wick

Code

GitHub logo harshverma27 / listing-writer

Etsy and eBay listing writer that runs locally on Gemma via Ollama

Listing Writer

Type a few notes about something you're selling and get an Etsy or eBay listing back: a search-friendly title, a description, and tags. It runs on your own computer with Google's open-weight Gemma model through Ollama, so your product notes never leave your machine and there's no per-listing API bill.

Run it

You need Python 3 and Ollama.

ollama pull gemma3:1b
Enter fullscreen mode Exit fullscreen mode
python3 app.py
Enter fullscreen mode Exit fullscreen mode

Then open http://localhost:8000.

The first listing takes a few extra seconds while Ollama loads the model. After that it takes 5 to 15 seconds on a laptop CPU.

Use a bigger model

gemma3:1b is small enough for almost any laptop. If you have the RAM, a bigger model writes better copy:

ollama pull gemma3:4b
Enter fullscreen mode Exit fullscreen mode
MODEL=gemma3:4b python3 app.py
Enter fullscreen mode Exit fullscreen mode

Other settings: OLLAMA_URL (default http://localhost:11434) and PORT (default 8000).

How it works

  • app.py is a small standard-library web server. It sends the notes to…

How I Built It

The app uses Gemma 3 1B. Gemma is an open-weight model from Google. Ollama runs the model on my laptop CPU. One listing takes 5 to 15 seconds.

The app is a small Python web server and one HTML page. It uses only the Python standard library.

Ollama makes the model reply in a fixed JSON format with a title, a description, and tags. Then the Python code applies the rules of each marketplace. For example, an Etsy title can have a maximum of 140 characters. An eBay title can have a maximum of 80 characters.

I had two problems:

  1. Sometimes the model gave bad JSON. I added a JSON schema and one example to the prompt. If the JSON is bad, the app tries again one time.
  2. The model added false facts. For example, it said that a soy candle had coconut wax. I told the model to use only the facts in the notes. I also set the temperature to 0.3. After these changes, the listings used only true facts.

Why Does Open Innovation Matter?

  • Cost: A hosted API costs money for each listing. A local model costs nothing for each listing. Thus, a one-time price can work.
  • Privacy: The product data stays on the laptop of the seller.
  • Choice: You can change the model with one setting. A user with more memory can use gemma3:4b for better text.
  • Offline: The app works with no internet, for example at a craft fair.

A large closed model writes better text. But for short listings, the small open model is sufficient, and it costs nothing to run.

Prize Categories

  • Best Use of Gemma

Top comments (0)