DEV Community

Anshika Pandey
Anshika Pandey

Posted on

Listing Writer: An Open-Source AI Tool That Writes Etsy & eBay Listings

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

Writing a good product listing takes a small seller 15-20 minutes per item, and most of them hate doing it. Listing Writer turns a product name and a few details (plus an optional photo) into a ready-to-paste title, description and 13 search tags for Etsy or eBay. It runs on Gemma, Google's open-weight model, so there's no paid API behind it.

What I Built

Listing Writer is a small web app for people who sell physical products online: Etsy makers, eBay resellers, and people flipping used tech.

You fill in four things:

  • Product name, like "Refurbished iPhone 13"
  • Details, like storage, colour, battery health and condition
  • Platform: Etsy or eBay
  • Tone: Friendly, Professional or Playful

You can also add a photo, since Gemma 3 can read images. The app returns a keyword-first title under 140 characters, a short description with a bullet list of specs, and 13 tags sized for Etsy's tag limit.

The idea is simple on purpose. A seller listing 30 items a week loses hours to writing. This gives them a solid first draft in seconds that they only need to check.

Who would pay? Sellers who list a lot of items, like eBay resellers flipping used phones and Etsy shops with big catalogues. The selling point is time: seconds instead of 15-20 minutes per item. As a seller myself, I'd pay around ₹99 a month for this, or a one-time fee for a version that runs on my own laptop.

Demo

Earbuds listing on Etsy after the prompt fix
Earbuds on Etsy with a Friendly tone. The title, description bullets and tags all stick to the five details I typed in.

Refurbished iPhone 13 listing on eBay with a Professional tone

Refurbished iPhone 13 on eBay, Professional tone.

20000 mAh power bank listing on Etsy

20000 mAh power bank on Etsy, Friendly tone.

Code

Listing Writer

Turn a product name and a few details (plus an optional photo) into a ready-to-paste Etsy or eBay listing: a title, a description and 13 search tags.

Built for the Hacktoberfest 2026 Open-Source AI Challenge (Week 2: Side Hustle).

Built with

  • Gemma 3 (4B), Google's open-weight model
  • Ollama to serve the model locally
  • Gradio for the web interface

No paid API: every listing is generated by an open model running on your own hardware or a free Colab GPU.

Run it in Google Colab (no install)

  1. Open listing_writer_colab.ipynb in Google Colab.
  2. Go to Runtime > Change runtime type > T4 GPU and save.
  3. Run the three cells in order:
    • Cell 1 installs Ollama and the Python libraries.
    • Cell 2 starts Ollama and downloads Gemma.
    • Cell 3 starts the app.
  4. Open the gradio.live link printed by Cell 3.

Run it on your laptop

# 1. Install Ollama
…
Enter fullscreen mode Exit fullscreen mode

The repo has one Colab notebook with three cells: install Ollama and Gradio, start Ollama and pull Gemma, and run the app. Open it in Google Colab, pick a T4 GPU runtime, run the cells in order, and open the gradio.live link it prints. The same Python code also runs on a laptop with Ollama installed.

How I Built It

The stack is three open-source pieces:

  • Gemma 3 (4B), Google's open-weight model. It is small enough to run on a free Colab T4 GPU or a normal laptop, and it understands images.
  • Ollama to download and serve the model locally with one command (ollama pull gemma3:4b).
  • Gradio for the web interface. Its share=True option gives a public link, so anyone can try the app from their phone.

The app itself is about 90 lines of Python. A system prompt tells Gemma how to write listings and fixes the output format (TITLE, DESCRIPTION, TAGS). Each request sends the seller's details, chosen platform and tone, plus the photo if there is one.

I didn't want to install anything on my machine, so I ran it all in Google Colab. My first attempt failed with "Failed to connect to Ollama" because the Ollama server wasn't running when the app started. I split the notebook into three cells in a fixed order and added a check that waits until Ollama replies before going on.

Testing: The Model Made Things Up, So I Fixed the Prompt

I didn't have a real seller to test with in time, so I tested it myself as a seller, with four tech products: wireless earbuds, a mechanical keyboard, a 20000 mAh power bank and a refurbished iPhone 13.

The first earbuds listing looked great at a glance, but it invented things I never gave it:

What I typed What the first version wrote
Type-C charging "Type-C Charging Cable Included"
Touch controls "Touch Controls - Volume, Play/Pause, Next/Previous Track"
(nothing) "I've been really impressed with how smoothly they connect"
(nothing) An intro line: "Okay, here's a product listing draft..."

For a real seller this is dangerous. If the listing says a cable is included and it isn't, the buyer complains or asks for a refund.

I rewrote the system prompt with strict rules: only use facts the seller gave or that are visible in the photo, never add accessories or specs, never write as if you used the product, and start directly with "TITLE:". After that, the bullet list contained exactly the five details I typed, and the fake review and intro line were gone.

It still isn't perfect. One tag said "waterproof", but IPX5 only means splash and sweat resistant. A small model still needs a human to check before publishing, and I'd say that clearly to any seller using it.

The iPhone and power bank listings were also clean: the iPhone listing kept "minor scratches" and "89% battery health" clearly in the description, which matters a lot for a refurbished item.

Why Does Open Innovation Matter?

For a side hustle, the cost per listing decides whether the business works at all.

  • No per-request bill. With a paid API, every listing costs money, and a seller writing hundreds of drafts pays every time. Gemma runs on hardware you already have, so a draft costs nothing extra.
  • Seller data can stay private. On a laptop with Ollama, a seller's product details, prices and photos never leave their machine. I used Colab for this demo, but the same code runs fully offline.
  • No lock-in. If a better open model comes out, I change one line (MODEL = ...). If a provider raises prices or shuts down an API, nothing breaks.
  • Room to specialise. A general API writes generic listings. With open weights, I could fine-tune Gemma on real high-performing listings for a niche like refurbished phones, which a closed API won't let me do.

Where closed models were better: a big hosted model probably wouldn't have invented the cable and controls in the first place. With a 4B model, I had to be much stricter in the prompt. For this use case, that trade was worth it.

What's Next

Next I want to:

  1. Put it in front of real sellers and see which listings they actually keep.
  2. Add a bulk mode that reads a CSV of products and writes all the listings at once.
  3. Add a check that flags risky words like "waterproof" or "brand new" when the details don't support them.
  4. Fine-tune Gemma on good listings for one niche, like refurbished phones.

Prize Categories

  • Best Use of Gemma: the whole app runs on Gemma 3 (4B), served with Ollama, including reading product photos.

Thanks for reading! Feedback and ideas are very welcome in the comments.

Top comments (0)