DEV Community

Sourabh Kumar
Sourabh Kumar

Posted on

I Built a Product Listing Writer That Costs $0 Per Listing to Run

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

A friend who sells on Etsy told me her weekly ritual: every Sunday night, she rewrites product listings. Titles that fit Etsy's character limit but read like a human wrote them. Bullets that sell instead of describe. Backend keywords nobody sees but the algorithm does. It takes her hours, and she pays a copywriter when the backlog gets bad.

Listing-writer tools exist, but every one I looked at is a thin wrapper over a paid API. That means the tool's margins shrink with every listing it generates, and your product catalog is sent to someone else's server on every click. I wanted the opposite: a listing writer whose marginal cost is close to zero and whose data never leaves the seller's laptop.

ListCraft takes raw product details and produces a complete, marketplace-ready listing:

  • An SEO title that respects the selected marketplace's title limits
  • Exactly 5 benefit-led bullets (Amazon's format, enforced)
  • A full product description
  • 10 backend keywords for search

It ships with presets for Amazon, Flipkart, Etsy, and Shopify, each with its own title rules and tone. You can export with an "Export .md" button, or use the one-click flow: pick the platform, and the listing generates and downloads as Markdown in a single action.

A generated listing with title, bullets, description, keywords, and export

ListCraft studio: a stepped flow from product spec to finished listing

A generated listing with title, bullets, description, keywords, and export

Who would pay: marketplace sellers drowning in listings, small D2C brands without a copywriter, and freelancers who write listings for clients. The pricing math is the point. Charge per listing or a small monthly fee, and because the model runs locally, there's no per-generation bill eating into it. A freelancer could white-label this for a dozen seller clients and run the whole thing from one laptop.

Demo

There's no hosted demo, because ListCraft runs on your machine, and that's the thesis. To try it:

  1. Install Ollama and run ollama pull gemma2:2b
  2. Clone the repo and run ./run.sh
  3. Open the UI, paste product details, pick a marketplace, and hit generate

After the one-time model download, everything happens locally. Unplug your router mid-generation and it keeps working.

Code

GitHub logo Sourabh-Kumar04 / ListCraft

ListingWriter: marketplace-ready product listings generated 100% locally by open-weight AI (Hacktoberfest Week 2)

ListCraft 🛍️

Hacktoberfest Week 2 Project — Theme: Side Hustle
An open-weight model product listing writer for e-commerce sellers, D2C brands, and listing agencies.

Python 3.12+ FastAPI Ollama License: MIT


💡 What It Does

ListCraft converts raw, messy product information (name, specs, dimensions, materials, price) into marketplace-ready, high-converting product listings in seconds.

For any input product, ListCraft generates:

  1. SEO-Optimized Title: Tailored to strict marketplace character limits.
  2. Exactly 5 Bullet Points: Highlighting features, customer benefits, and technical specifications.
  3. Full Product Description: Formatted copy with appropriate tone and emotional hooks.
  4. Backend Search Keywords: High-intent search tags, deduplicated and sanitized for seller backend indexing.

Supported Marketplace Presets

Marketplace Title Limit Tone & Style Guide Output Focus
Amazon 200 chars Factual, authoritative, policy-compliant Feature-benefit headers, zero promotional fluff
Flipkart 200 chars Value-driven, spec-focused, high discovery Clear Indian e-commerce specs (pack, color, capacity)
Etsy 140 chars Artisanal, conversational, warm, story-driven Handmade charm, gifting keywords, craftsmanship
Shopify Flexible
…

FastAPI backend, vanilla HTML/CSS/JS frontend, 21/21 tests passing, including a real end-to-end run against the local model. The interesting parts are the per-marketplace prompt assembly (each platform gets its own title rules and tone baked into the prompt) and the compliance validation that checks a generated listing against Amazon's listing rules before it reaches you.

How I Built It

The pipeline is deliberately boring, because the interesting decision was made before any of it:

  1. Input. Product details as free text: name, specs, materials, what makes it worth buying.
  2. Prompt assembly. The selected marketplace's rules (title length, tone, bullet conventions) are compiled into the prompt. Etsy gets a craft-market voice; Amazon gets keyword-dense and compliant.
  3. Local generation. gemma2:2b via Ollama. No API key, no network call, no per-token meter.
  4. Validation. The output is parsed and checked: exactly 5 bullets, title within limits, no banned promo phrases, keywords present. A live-generated listing passed 9/9 Amazon compliance checks.
  5. Export. Copy to clipboard, download as Markdown, or use the one-click generate-and-export flow.

The UI went through twelve rounds of iteration, from a dark theme through a Stripe-like minimal pass and several full rebuilds, to the current dark-premium single-page site: hero, how-it-works, features, and the stepped studio flow. Each round was judged against real browser screenshots, not mockups. The 21 tests cover the API, the marketplace presets, the export flow, and a genuine end-to-end generation against the local model.

Why Does Open Innovation Matter?

The theme asks whether running your own model keeps costs low enough that the business works. For ListCraft, that question is the whole pitch.

  • Per-listing pricing needs near-zero marginal cost. A tool that pays an API provider a few cents per generation can't price at a few cents per listing. With a local open-weight model, listing #10,000 costs no more in API fees than listing #1: nothing. (You still pay for the laptop and electricity, but those are costs the seller already has.)
  • A seller's catalog is their business. Product details, pricing strategy, supplier names, and margins are all commercially sensitive. A closed-API tool ships them to a third party on every generation. With local inference, the catalog never leaves the laptop, which is what makes a seller willing to use the tool at all.
  • It works where sellers actually work. Warehouses, workshops, and small-town sellers don't all have reliable internet. After setup, ListCraft generates with the router unplugged.
  • It's swappable and fine-tunable, not rented. gemma2:2b today, a variant fine-tuned on a seller's own catalog voice tomorrow, a bigger model when the laptop gets better. No vendor can deprecate the endpoint, double the price, or change the terms mid-business.
  • The license fits the business. Gemma's terms allow commercial use, so the model I'm building on doesn't block the side hustle. That's worth checking for any open model you plan to charge for.

A closed-API version of ListCraft would cost money on every listing, send seller data off the machine, need connectivity, and make a vendor the business's core dependency. Open weights didn't just make this cheaper. They made the business model workable.

My Agent Session

ListCraft was built with AI coding agents as the hands: architecture, implementation, the test suite, and all twelve UI rounds were agent-driven, with a hostile-review loop after each build. An agent played a harsh judge in a real browser and caught real failures, including one round where a redesign silently deleted a server import and crashed the app, which was fixed before it shipped. The most useful thing the loop did wasn't writing code. It was refusing to let "looks fine" pass for "works."

My First User

Honest answer: not yet. The build consumed the week, and twelve UI rounds will do that. The next step is putting it in front of actual Etsy and Amazon sellers and finding out what they'd pay and what they'd ask for next. If you're a seller reading this, the repo is public and I'd genuinely like to hear from you.

Prize Categories

Best Use of Gemma: ListCraft runs Google's Gemma 2 (gemma2:2b) locally via Ollama as its core open-weight model. Every listing is generated on-device with no cloud dependency.

Also competing for the overall prize and the completion badge.


ListCraft: describe the product, pick the marketplace, done. The model lives on your laptop, the data never leaves it, and listing #10,000 costs the same to generate as listing #1.

Top comments (0)