DEV Community

Anurag Yadav
Anurag Yadav

Posted on

ListingLoom: an Etsy and eBay listing writer that runs on an open model I control

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

ListingLoom is a listing writer for small sellers on Etsy and eBay. You describe what you made (product, materials, scent or style, a few details, and what it cost you), pick a voice, and it returns a title, a description, tags, and a suggested price range.

The person who would pay for it is the maker who lists a few new items every week and hates the writing part. Anyone who sells candles, ceramics, prints or resale finds knows the routine: you finish the product, then spend twenty minutes staring at an empty description box and guessing which tags buyers search for.

The price suggestion is what I think makes it more than a text generator. Most sellers price by feel and forget that marketplace fees take a real bite. ListingLoom takes your cost to make, subtracts estimated fees for the marketplace you chose, and shows a range that leaves you roughly 30 to 45 percent profit.

There are three plans on the pricing section: Free for people who self-host, Seller at $9 a month for a hosted version with saved voices and listing history, and Studio at $29 a month for bulk CSV uploads and a model tuned on a shop's best sellers. The paid plans are a waitlist for now, and the form on the page collects emails.

Demo

Live app: https://listingloom.onrender.com

[Video demo: https://youtu.be/0fweN4gcJL8]

Code

https://github.com/ypunit757-prog/ListingLoom

How I Built It

The app is a small Node and Express server with a plain HTML, CSS and JavaScript front end. There is one real dependency, Express.

The writing is handled by an open-weight model, Gemma [confirm the exact model you ran, for example gemma3:1b], through a standard OpenAI-style chat endpoint. The server only needs three settings: a base URL, a model name and an optional key. That means the same code works with Ollama on a laptop, a model server on a private network, or a hosted provider that serves open models.

A few details that took more work than I expected:

  • Structured output from a small model. The server asks for a single JSON object, then pulls the first object out of the reply and checks it. It also trims the title to the marketplace's limit (140 characters on Etsy, 80 on eBay) and caps the number of tags.
  • No made-up facts. The system prompt tells the model to use only what the seller provided and to avoid inventing sizes, certifications or health claims. A candle listing that claims it is "allergy safe" can cause real trouble, so I kept the model on a short leash.
  • A fallback that is honest about itself. If no model is connected, or the model call fails, the server returns a simple template draft instead of an error. The result card says which one wrote the listing, either the model's name or "Template draft", so a seller is never told a template is AI output.
  • The price math lives on the server. It is deterministic, not generated by the model. The fee percentages sit in one table and are estimates, so they need checking against current marketplace fees.
  • Basic protection. Inputs are length-limited, and the endpoints have a small rate limiter.

I deployed it as a web service on Render, with the model settings kept in environment variables so the key never touches the repository.

Why Does Open Innovation Matter?

A listing writer only works as a business if two things hold, and an open model helps with both.

Margins. A closed API charges per token. At $9 a month, a heavy user who generates dozens of listings and regenerates the ones they dislike can quietly cost more than they pay. With an open-weight model I control, the cost of the thousandth listing is the same as the first, so a low price stays viable.

Privacy. A seller's cost of goods, supplier names and unreleased designs are the most sensitive things they own. With an open model on a server I control, none of that has to be sent to a third-party AI company. That is a practical selling point for a small business, not just a principle.

It also gives me room to change things. Swapping the model is a two-line settings change, and the Studio plan idea (a model tuned on a shop's own best-selling listings) is only possible because the weights are open. I can't fine-tune a closed API on a customer's catalogue the way I can an open model.

Prize Categories

  • Best Use of Gemma: the writing is done by Gemma running behind an open chat endpoint.
  • Best Use of Render: the app is deployed as a Render web service at https://listingloom.onrender.com.

Top comments (0)