DEV Community

Cover image for I built an offline AI listing writer for small sellers in Cameroon
Haoua Tamaivou
Haoua Tamaivou

Posted on Edited on

I built an offline AI listing writer for small sellers in Cameroon

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

Offline Listing Writer: a tool for small sellers in Cameroon who post products on WhatsApp, Facebook, and Instagram. The seller types a few hints (product, condition, price, details, contact), picks the language (French or English), the platform, and the tone, and an AI model running on their own computer writes the listing. A listing takes about 3 seconds on my laptop [ 8GB].

Who would pay for it: sellers who post every day. Writing and describing every product is slow, is harder in a language you are not fluent in, and needs a good connection if you use an online AI tool. This tool works offline and has no subscription.

Demo

It runs locally on the seller's computer, so there is no deployed link. Here it is working:

[Screenshot: English listing]

[Screenshot: French listing]

Offline test, with the internet turned off and the network showing "Not connected":

Code

GitHub logo Queeninherprime / offline-listing-writer

Offline AI listing writer for small sellers, powered by Gemma and Ollama

Offline Listing Writer

Write product listings for WhatsApp, Facebook Marketplace and Instagram in French or English, using an open-weight AI model that runs entirely on your own computer. No internet, no subscription, and your prices and customer details never leave the machine English listing French listing

Built for the Hacktoberfest 2026 DEV Challenge (Week 2: Side Hustle).

Requirements

  • Ollama installed
  • Python 3.8+ (no extra packages needed)
  • A small open-weight model, for example Gemma 4B

Setup (needs internet once)

ollama pull gemma3:4b

Run

python app.py

Open http://localhost:8000 in your browser.

To use a different model: MODEL=gemma3:1b python app.py (on Windows PowerShell: $env:MODEL="gemma3:1b"; python app.py).

How it works

app.py is a tiny local server. It serves the page and sends your product details to Ollama at localhost:11434, then returns the generated listing. Saved listings are kept in your browser on this computer.

Offline note

Writing and copying listings works with no connection. Posting to…

https://github.com/Queeninherprime/offline-listing-writer

How I Built It

  • Model: Gemma 3 4B, an open-weight model from Google, running locally through Ollama.
  • Backend: a small Python server using only the standard library, so there is nothing to install. It serves the page and sends the product details to Ollama on the same machine.
  • Frontend: plain HTML and JavaScript with system fonts, so the page loads nothing from the internet. It shows the listing in a message-style preview with a copy button, a "Send on WhatsApp" link, and saved listings.
  • AI assistance: I used an AI assistant (Claude) to help me plan and write the code, and I tested and fixed it on my own laptop.

What went wrong, and how I fixed it. In my first French test I entered a price of 100,000 FCFA, and the model wrote "100 000 FC". It dropped two letters, and "FC" is a different currency. Small local models sometimes change numbers and symbols even when told not to. I fixed it by having the model write placeholders for the price and phone number, then inserting the seller's exact values in code. If the model ignores the placeholder and writes its own amount, the app replaces it. The app also turns a plain number like 65000 into "65,000 FCFA".

I also learned that the app only repeats what it is given. When I entered a phone as "new" with an "88% battery", it wrote both. Sellers should still read each listing before posting.

Why Does Open Innovation Matter?

  • It works offline. The model lives on the laptop, so a seller can write listings anywhere and connect only to post.
  • It costs nothing to run. No subscription and no per-use fee, which matters for people with small margins.
  • It keeps data private. Prices and phone numbers never leave the computer.
  • It is not locked to one provider. I can swap the model or change the prompt without rewriting the app, and later fine-tune it for local products and wording.

A closed API would need a connection and a paid plan for every listing.

Limits: it needs a computer able to run the model, small models can be clumsy at times, and it cannot post for the seller. Most sellers use phones, so a phone-friendly version is the obvious next step.

My First User

I showed the app to a friend who is a seller. He tried it and said it is very nice, because it cuts down the time a seller spends writing and describing products. He said it would be especially useful for people who post every day and have a lot of work. His view was that sellers should pay for it, since it eases so much of their workload.

This is one person's reaction, not a market test. He did not name a price, and I have not yet tested whether sellers will actually pay.

Prize Categories

  • Best Use of Gemma


Top comments (1)

Collapse
 
haoua_tamaivou_ffc766d53f profile image
Haoua Tamaivou •

So proud of myself my first live project