How we built WhatsApp-native accounting for Indian small businesses, with AI that turns chat messages into bookkeeping entries.
FinTech / SMB Tools
Internal Portfolio Build
Bookkeeping that doesn't need a laptop or accounting know-how. It reads your WhatsApp messages and handles GST.
A WhatsApp-first accounting tool. A shop owner sends a message or a photo of a receipt, and the AI turns it into a categorized, GST-ready entry that exports straight to Tally.
Millions of Indian small businesses still track money in paper notebooks or a basic spreadsheet. WhatsApp is already where they do business. We built KhataGO to meet them there instead of asking them to learn accounting software.
Most accounting apps assume a desktop and some accounting knowledge. KhataGO assumes a phone and a WhatsApp habit. Send 'sold 5000 to Rahul cash' and you get a categorized, GST-ready entry back.
What was hard, and why it's worth solving well.
Indian SMBs run on WhatsApp but track money somewhere else. Every switch between the two loses data and adds errors.
Most accounting software is English-only. A lot of Indian business runs in Hindi, Gujarati, and other regional languages.
GST calculation, categorization, and filing trip up small businesses. A manual mistake means a penalty or wasted hours.
The pieces that make it work.
Send a text or a photo of a receipt, and the AI turns it into a structured entry — amount, party, category, GST.
Recording a transaction takes seconds, not a data-entry session.
Full UI in English, Hindi, and Gujarati, and the parser reads mixed-language messages.
It works for people who do business in their own language.
GST worked out per transaction, with one-click CSV and Tally XML for the accountant.
Monthly filing goes from a manual slog to an export.
Accountant access with date-range filtering and bulk export.
Clean, structured data without the back-and-forth calls.
A running view of sales vs. expenses by day, week, and month, with GST liability tracked alongside.
You see where the business stands without knowing accounting.
Aggregated with Prisma queries over date ranges and cached summaries.

Send 'sold 5000 to Rahul cash' or a photo of a receipt, and KhataGO files a categorized entry.
No manual data entry. It's as quick as sending a WhatsApp message.
Google Gemini with structured output schemas, HMAC-verified webhooks, and idempotent message handling so nothing is recorded twice.

GST worked out per transaction, monthly collected-vs-paid summaries, and Tally-compatible XML export.
The part of Indian small-business accounting people dread becomes one click.
GST rates stored per category with overrides; export builds Tally 9+ voucher XML.

Track who owes what, log part payments, and send WhatsApp reminders for overdue amounts.
Helps with late payments — the cash-flow problem most small shops have.
A cron-driven reminder system using WhatsApp templates, rate-limited to stay inside Meta's quotas.

Next.js 15 with React, Tailwind CSS, and Radix UI for accessible, mobile-first components.
Next.js API routes with Prisma, PostgreSQL on Supabase, and Zod validation on every endpoint.
Vercel serverless with Supabase connection pooling, Pino logging, and Sentry for monitoring.
WhatsApp Business API webhooks with HMAC signature checks, idempotent processing, and rate-limited outbound messages.
Every production system hides engineering decisions that don't show up in the UI. Here's what was actually difficult.
We used Google Gemini with structured output schemas that pull amount, party, type, and category out of Hinglish, Gujarati, or English — whatever the message mixes in.
“For pulling structured data out of natural language, output schemas beat prompt-tuning.”
Vercel functions are ephemeral, so an in-memory queue loses jobs on a cold start. We made processing idempotent, tracked status in the database, and added a cron job to recover orphaned messages.
“On serverless, every bit of state belongs in the database. In-memory is a cache, never a queue.”
Every endpoint checks resource ownership before a write, and row-level security at the Supabase layer backs it up as a second line of defense.
“An ownership check in the ORM isn't enough on its own. You want database-level policies behind it.”
KhataGO went from empty repo to a live product in 3 weeks — WhatsApp parsing, a three-language UI, GST export, and the security work fintech needs: HMAC-verified webhooks, idempotent processing, and row-level isolation. It's live, and you can open it.
26
Production API endpoints
3 languages
English, Hindi, Gujarati
3 weeks
From empty repo to live demo
Tell us what you're building and where you're stuck. We'll tell you if we're the right team for it.