This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
So one evening i was just sitting at my local grocery store, gossiping with bhaiya like i usually do. While we were talking a customer came, bought 2 Maggi and a Parle-G and bhaiya opened this old diary and wrote it down by hand. Then another customer came. And another. Same diary, same pen.
I asked him "bhaiya aapko kaise pata chalta hai kya sabse zyada bikta hai?" and he just laughed and said "andaaza hai, roz dekhta hoon toh pata chal jaata hai". No numbers, no research, just a guess. And that guess decides how much stock he buys from the wholesaler every week. If he guesses wrong his money is stuck in stuff that doesnt sell, or he runs out of the stuff that does.
That's where ShopKaro came from.
ShopKaro is a simple app for small kirana shops that replaces the paper diary. Every product is a big button, the shopkeeper just taps it when something sells and thats it. From those taps ShopKaro builds real data:
- Tap to sell: every product is a tile, one tap records a sale. It works offline too and syncs when internet comes back
- Add new products: type the name and price, or just click a photo of the packet and AI fills the details
- Voice and text entry: say "2 Maggi, 1 doodh" in Hinglish and it gets added
- Dashboard: best sellers, slow movers, sales by hour and day, revenue
- Weekly reorder list: it predicts how much of each product to buy next week
- Weekly report: a simple summary in Hindi or English, like "Maggi sold 30% more this week, order 2 extra boxes"
Who would pay? There are millions of kirana shops in India and most of them still run on a diary. A shopkeeper who stops overstocking even a few slow items saves way more than a small monthly fee. So the plan is a cheap subscription, something like ₹99/month, with a free first month.
Demo
Live app: ShopKaro
(Its hosted on Render's free plan so the first load can take 30 to 60 seconds while it wakes up)
Code
ShopKaro
Tap-to-sell billing for Indian kirana shops — works even when the internet doesn't.
Entry for the DEV Hacktoberfest 2026 Challenges, Week 2: Side Hustle (Oct 12–18, 2026).
Why
A kirana shopkeeper serves 150+ customers a day. Billing apps today assume a stable internet connection, English literacy, and a keyboard. When the network drops mid-sale (and in a small shop it does), the queue stalls and the customer waits.
ShopKaro is built for that reality:
-
Tap tiles, not forms. Products are big tappable tiles with monogram chips — no typing
during a sale.
×1 ×2 ×3 ×5multipliers cover the common cases in one tap. -
Works offline. Every sale is written to IndexedDB first, then replayed to the API with
idempotent
client_ids when the connection returns. The UI shows exactly how many sales are waiting to sync. - Speak your…
How I Built It
The stack is stuff i already like using:
- SvelteKit + TypeScript for the frontend. Its mobile first because a shopkeeper is going to use it on a cheap phone, so big buttons, bottom navigation on phones and a sidebar on desktop. It also has an offline queue with a service worker so a bad network doesnt lose any sales
- Go for the backend API
- PostgreSQL on Tiger Data (Timescale) for storing sales. Every tap is a time series event so hypertables made the hourly and daily dashboards really fast
The open source AI parts:
- Gemma (gemma3:4b) running through Ollama is the core. It turns messy Hinglish like "do Amul doodh aur ek Surf" into proper sale entries, reads product details from a packet photo, and writes the weekly summary in simple Hindi or English. If Gemma isnt reachable, theres a rule based fallback so the shop never stops working
- Whisper for voice input, with the browser speech API as a fallback
- TabPFN for the weekly reorder forecast. A single shop doesnt have a huge dataset, and TabPFN is really good with small tabular data, so it fits perfectly. Theres a seasonal trend fallback when the API key isnt set
- Temporal runs the weekly report and reorder jobs on a schedule so they dont get missed
- Render for deployment
Why Does Open Innovation Matter?
For a kirana shop, cost and privacy matter a lot. A shopkeeper is never going to pay for expensive API calls every time he adds a sale. With an open weight model like Gemma, the AI can run on cheap hardware or even locally, so the cost stays tiny and the shop's sales data doesnt have to go to some big company's servers.
Open models also let me tune things for how real Indian shopkeepers talk. Hinglish, local product names like "doodh" or "Parle-G". With a closed API i'd just have to hope it works. With open models i can control it, run it anywhere and keep it cheap enough that a ₹99/month price actually makes sense.
My First User
I gave ShopKaro to bhaiya, the same shopkeeper who gave me the idea.
thought he find is a little confusing i will try to make it more simpler and he said he cant pay me yet 🥲 but hey atleast his review matter
Prize Categories
- Best Use of Gemma
- Best Use of TabPFN
- Best Use of Render
- Best Use of Temporal
- Best Use of Tiger Data







Top comments (0)