Built for Tran: A Hands-Free Sales Logger on 2.1B Parameters

Community Article
Published June 15, 2026

Build for the Build Small Hackathon - Backyard AI Trackqq222q

italian market full photo

The person

There is a stretch of 9th Street in South Philadelphia you have probably seen, even if you have never been. It is the Italian Market, the one Rocky runs through. It has been operating outdoors since 1873, the oldest continuously running market of its kind in the country. Vendors own their stalls for generations and the market never closes. Rain, snow, heat, all of it.

One of those vendors is Tran. She came to Philadelphia after the Vietnam War and has run her produce stand for 40 years. Her employees serve customers in Spanish and English. She runs the whole business in Vietnamese.

tran_from_trans_produce

The problem

Watch a single sale and the gap is obvious. A customer hands over a basket. Tran adds up the prices in her head, punches them into a calculator, bags the items, and hands them back. Then the sale is gone. No record, no data, no way to know what sold best last Tuesday.

That gap is bigger than convenience. Cash leaves no paper trail, and no paper trail means no proof of revenue. No loan, no grant, no SBA application. A 40-year business is effectively invisible to a bank.

So the question I started with was simple: what if logging a sale was completely hands-free, in the language she actually speaks, fast enough that it never slows her down?

The solution

You speak the order once. The app does the rest.

A vendor says the order out loud in Vietnamese, Spanish, or English. The app transcribes it on-device, parses the items, maps them to catalog prices, and shows a total. The vendor reviews it and taps Confirm. Only then is it logged.

🇻🇳 "năm trái táo, ba quả cà chua, hai củ hành tây" → five apples, three tomatoes, two onions → $5.60

Nothing is recorded without her confirming it first. Over time that adds up to the thing she has never had: timestamped, itemized transactions. A financial history.

screenshot_dashboard

Demo: https://youtu.be/MCdxrAyBASU

Why this tech stack

The whole pipeline runs on 2.1 billion parameters with zero external APIs. That was a deliberate choice, not a constraint I tolerated.

Nemotron ASR (nvidia, 0.6B) handles speech. A market stall is a hostile place for cloud APIs. Connectivity is unreliable, latency kills the flow, and sending a small vendor's revenue data to a third party is a bad default. On-device transcription means it just works, at the stall, every time.

Qwen 2.5 (1.5B) does the parse and translate step. It takes messy spoken language across three languages and turns it into structured items mapped to a price catalog. A 1.5B model is plenty for this narrow job, and keeping it small keeps the whole thing on-device alongside the ASR model.

SQLite stores every transaction for now. It is a single file with no server to stand up, which kept the scope small while I got the core pipeline working. The ledger does need to live on a server eventually, and that is the next real step, but for the hackathon a local database was the right amount of complexity.

A custom Svelte frontend (via gr.Server) drives the Record → Confirm → Done flow. The confirm step is the most important part of the UX, so the interface needed to be purpose-built rather than a default layout.

Modal runs the dev inference in GPU containers so I could iterate without wiring up local hardware.

Total: 2.1B parameters, 3 languages, around 5 seconds per order, 0 external APIs. Well under the hackathon's 4B Tiny Titan line and far under the 32B cap.

The small-model thesis is not a handicap here. It is the entire reason the thing is usable. Private, offline, cheap, and fast is what a real market stall needs.

What's next

  • Move the database to a server so the ledger is not tied to one device
  • Fine-tune Nemotron on real produce market audio
  • Time-series charts for which items peak at which hours
  • A weather overlay to correlate sales with conditions
  • Multi-vendor support for neighboring stalls

Try it

Built for Tran. Built small. Built to last.

View on Hugging Face →

Ethan Markwalter · Philadelphia, PA

Community

Sign up or log in to comment