Koshi
An app that helps village agro retailers manage their farmers and grow their business. I'm the sole engineer on the app and its backend.
The poster harness postProblem
Agro retailers, the village shops that sell farmers seeds, fertiliser and crop protection, need to keep up with their farmers and grow their business. Many owners have limited literacy.
Shipped
Farmer records, billing that works offline, a crop calendar, WhatsApp broadcasts and AI posters. On the Play internal track and TestFlight.
How AI is kept honest
Every poster is read back with OCR and approved by a person. Evaluations took product extraction from about 42% to about 80% accuracy.
2026, in testing
Built for the shop counter
Koshi gives a retailer their farmers, billing, a crop calendar, WhatsApp broadcasts and AI posters in one app. The screens stay simple, and complex things, like a crop cycle, are shown in an easy form.
Billing that works offline
- A bill is saved on the phone first and sent when the network returns, so a bill isn't lost when the network drops.
One message to every farmer
- WhatsApp broadcasts with consent: a farmer who replies STOP stops getting them.
Growth
- Analytics show which Facebook and Instagram ads bring retailers to the app.
AI
Posters a person can trust
Three agents, one approval
- A retailer's voice note becomes a Gujarati marketing poster with the pack, the price and the shop's number.
- Two pack photos become a catalogue entry: the product, a clean packshot, its Gujarati name and the crops it is for.
- A signboard or visiting-card photo, or a picture the retailer picks, becomes a logo for a shop that mostly never had one.
- A person approves or edits every result before it is used.
Checked, not trusted
- Image models garble or invent Gujarati text, so every poster is read back with OCR and checked word for word against the intended text. One wrong digit in a price fails it, and a wrong line is redrawn, up to three times, before a person sees it. How the harness works.
- I built evaluations around the product-onboarding agent. Its extraction accuracy rose from about 42% to about 80% on an 86-pack evaluation set.
Architecture
How it fits together
- Koshi appBilling works offline and syncs when the network returns.
- BackendThe system of record.
- AI agentsHand back results through jobs; never write to the backend.
The agents run apart from the backend and reach it only through jobs. They hand back a result, a person approves it, and only then is it saved, so an agent that fails cannot corrupt a retailer's data.
How I build AI
Four rules
- Agents never write to the system of record. They return a result; the backend decides what is saved.
- LLMs never do arithmetic. Prices, totals and quantities come from code.
- Generated output is checked. Posters are read back with OCR; agents are held to an evaluation set.
- A person approves. Every poster, catalogue entry and logo, before it ships.
Stack
Built with
An Expo and React Native app, a Django backend, LangGraph agents, and a Next.js admin console for the team.
I built it with Claude Code. I set the architecture and the rules the agents follow, and reviewed every change before it was merged.