Built with ❤️ for my father for the Hacktoberfest Weekend Challenge: Build for a Friend
Entering Prize Category: Best Use of Gemma (Featured Category)
My father runs a local neighbourhood store in India. Like millions of small business owners and community elders, managing daily credit (udhaar) is a constant headache. Customers frequently buy items on credit and repay later in installments.
My father used to write these transactions down in dog-eared paper notebooks (bahi khata). Typing on smartphone keyboards is clumsy, especially when hands are busy with store merchandise and customers are waiting in line. Existing digital bookkeeping apps are bloated, littered with advertisements, in English-first terminology, and store sensitive financial records on third-party cloud servers.
Udhaar Khata changes this completely.
My father simply presses the big mic button and speaks naturally in Hindi or Hinglish:
- "Ramesh ne 200 udhaar liya" (Ramesh took ₹200 on credit)
- "Sunita ne 500 wapas kiye" (Sunita repaid ₹500)
- "Sharma ji ko 1200 ka ration udhaar diya" (Sharma ji bought ₹1200 ration on credit)
- "Mukesh ne 450 jama karwaye" (Mukesh deposited ₹450)
The app transcribes the audio, extracts structured ledger entries using Google Gemma 2 (2B), displays a clean confirmation card, updates the customer's balance sheet, and even drafts polite Hindi payment reminders with 1-click WhatsApp messaging!
-
🎙️ Natural Voice Accounting (आवाज़ से हिसाब)
- Speak colloquial Hindi or Hinglish with zero typing needed.
- Dual speech recognition: Open-weight OpenAI Whisper (
faster-whisper) + browser Web Speech API.
-
🧠 Open-Weights Intelligence (Google Gemma 2 2B)
- Extracts customer name, rupee amount, transaction direction (
udhaarvsjama), and items/notes. - 100% local inference on Apple Silicon / CPU via Ollama with sub-second latency.
- Resilient hybrid architecture with sub-millisecond local Indic NLP fallback.
- Extracts customer name, rupee amount, transaction direction (
-
✅ Interactive Confirmation Card (पुष्टि करें)
- Shows detected details before committing to the ledger.
- Father can review, adjust, or listen to voice feedback before saving.
- Celebratory micro-interactions (confetti animation).
-
📊 Real-time Balance Sheet (खाता बही)
- Instantly tracks who owes what:
- 🔴 लेना है (To Collect / Debtors)
- 🟢 हिसाब चुकता (Settled Accounts)
- Comprehensive customer statement drawer with chronological transaction timeline.
- Instantly tracks who owes what:
-
💬 Culturally Respectful Hindi Payment Reminders (तगादा / तकाज़ा)
- Asking for money can be socially uncomfortable. The app drafts reminders in 4 distinct tones:
- विनम्र (Polite & Respectful)
- मित्रतापूर्ण (Friendly & Casual)
- व्यावसायिक (Formal Business Notice)
- Gemma 2 AI Custom Draft (e.g. "Tell them distributor payment is due tomorrow")
- 1-click WhatsApp Share (
https://wa.me/...) with pre-filled message + 1-click Copy.
- Asking for money can be socially uncomfortable. The app drafts reminders in 4 distinct tones:
-
⚡ 1-Click "Hisaab Chukta" (Account Settlement)
- Clear entire balance with a single click.
-
📥 Export & Print Statements
- Download complete ledger as CSV or print customer statement.
-
🌐 Full Bilingual Support
- Instant toggle between हिंदी (Hindi), Hinglish, and English.
| Requirement | Closed APIs (e.g. OpenAI / Claude) | Our Open-Weights Stack (Gemma 2 + Whisper) |
|---|---|---|
| Privacy & Financial Sovereignty | Ledger data & phone numbers sent to third-party servers | 100% On-Device: Financial records never leave father's laptop |
| Offline Reliability | Fails completely whenever shop Wi-Fi or mobile data drops | Always Works: 0% dependence on internet connectivity |
| Operating Cost | Metered token fees & recurring monthly subscriptions | ₹0 Forever: Free execution on consumer hardware |
| Colloquial Hinglish Adaptation | Generic responses; strict safety guardrails on money phrasing | Tailored Prompts: Understands rokda, chukta, baaki, saman |
[ Father Speaks in Hindi/Hinglish ]
│
▼
[ Open-Weight Whisper STT ] ──── (Local speech transcription)
│
▼
[ Google Gemma 2 2B ] ──── (Local Ollama inference / Metal acceleration)
│
▼
[ Structured Ledger JSON ] ──── (Customer Name, Amount, Type, Note)
│
▼
[ Confirmation Modal ] ──── (Father reviews & confirms)
│
▼
[ SQLite Local Database ] ──── (100% private, local storage)
│
▼
[ 1-Click WhatsApp Reminders ] ── (Polite Hindi reminders generated by Gemma 2)
- LLM: Google Gemma 2 2B (
gemma2:2b) running via Ollama. - STT: OpenAI Whisper (
faster-whispertiny/base) running locally on CPU/Metal. - Backend: Python 3.10 + FastAPI + SQLite.
- Frontend: React 19 + Vite + Vanilla CSS design system.
- Typography: Google Fonts (Plus Jakarta Sans & Noto Sans Devanagari).
- Mac, Linux, or Windows with Python 3.10+ and Node.js 18+.
- Ollama installed.
ollama pull gemma2:2bpython3 -m venv backend/venv
source backend/venv/bin/activate
pip install -r backend/requirements.txt
# Start backend server (runs on http://localhost:8000)
PYTHONPATH=backend python -m uvicorn main:app --host 0.0.0.0 --port 8000cd frontend
npm install
npm run dev
# Open http://localhost:5173 in browser- Agent Session: Embed via DevRelay tag
{% agent_session building-udhaar-khata-voice-ai-digital-ledger-for-father-using-local-gemma-2-and-whisper-iaj7jh %} - Challenge: Hacktoberfest Weekend Challenge: Build for a Friend
- Prize Category: Best Use of Gemma ($200 Featured Category)