DEV Community

qife422
qife422

Posted on

Listing Writer: a 270M Gemma in your browser that writes eBay listings that sell

Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle Submission ๐Ÿ’ธ

What I built

Listing Writer is a single-page web app that turns a 30-second item description into a polished eBay / Facebook Marketplace listing. You add a photo, the brand, the condition, and any flaws โ€” a 270M-parameter Gemma 3 running entirely in your browser (Transformers.js, no server, no API key) writes you back:

  • an SEO-friendly title under 80 characters,
  • an honest 2โ€“4 sentence description,
  • item specifics built only from facts you actually gave it,
  • pricing guidance โ€” what sold comps to check โ€” never an invented dollar amount.

Each section has a copy button. Paste straight into eBay.

Live demo: https://qife422.github.io/listing-writer/
Code: https://github.com/qife422/listing-writer

Listing Writer live test โ€” Sony WH-1000XM4 listing generated in the browser

Who would pay for this

Resellers. I did a cross-border e-commerce internship this summer (AI solutions for product selection and listing SOPs), and I'm gearing up to sell secondhand goods on eBay and Facebook Marketplace myself. Listing writing is the most tedious, most skipped step in resale: bad titles bury your item in search, vague descriptions invite returns.

A tool like this earns its keep two ways: it saves ~10 minutes per listing, and better titles measurably get more views. For a seller moving 20 items a week, that's an afternoon back โ€” or the difference between listing and not listing.

My first user is me. I fed the app the spec for a test item โ€” a Sony WH-1000XM4 wireless headset, black, like new, light scratches on the earcup, with the original case and cable โ€” and it wrote back, in one pass:

Title (52 characters)
Sony WH-1000XM4 Wireless Headphones Black - Like New

Description
Like-new Sony WH-1000XM4 in black with light scratches on the earcup. Includes the original case and cable.

Item specifics
Brand: Sony, Model: WH-1000XM4, Color: Black, Condition: Like new

Pricing guidance
Check 3 sold listings for this model in like-new condition and price slightly below their average for a faster sale.

It didn't invent a single brand, model number, or price, and hitting Rewrite gave the same four-section format instead of echoing my input back. (Honest footnote: the first prompt version just paraphrased what I typed and blew past the 80-char title limit, so I taught the prompt with a full format example and re-ran. The pipeline held; the prompt needed the lesson.)

Why open innovation matters

Three reasons, all economic:

  1. Zero marginal cost. A closed API charges per listing. When your margin is $8 on a used headset, a $0.02 API call plus a photo-upload round trip is a tax on every sale. A local open-weight model costs nothing after the one-time download.
  2. Privacy. Sourcing notes ("bought at the Corvallis Goodwill for $4") and product photos stay on the seller's laptop โ€” never on someone else's server.
  3. No lock-in. I can swap the model, tune the prompt for a niche (vintage cameras, sneakers), or run the whole thing offline at a flea market with no signal. Try that with a hosted API.

How I built it

  • Model: onnx-community/gemma-3-270m-it-ONNX via Transformers.js 4.2.0, fp32 (the fp16 WebGPU path overflows on this model โ€” learned that the hard way in Week 1).
  • Honesty rules in the system prompt: never invent brands/models/features, refuse counterfeit listings, never hallucinate a price.
  • Stack: one HTML file. No build step, no backend.

Prize Categories

  • Best Use of Gemma

Top comments (0)