A local-first Android expense companion that turns WhatsApp-style messages into a reliable trip ledger.
An Android expense companion that uses natural language for convenience while keeping balances, corrections and duplicate handling deterministic.
Expense tracking during a trip fails when recording a purchase feels slower than making it. People already send short WhatsApp messages, so TripHisaab uses that behaviour as the capture interface. The challenge is that conversational extraction is probabilistic while money is not. A model can interpret 'fuel 1800 near Naran', but the ledger must store the amount exactly, avoid duplicates and let the user correct a mistake.
The Android app uses Kotlin and Jetpack Compose with Room as the local source of truth. A paired WhatsApp interaction layer captures supported commands and sends text for Groq-assisted parsing into structured expense fields. Amounts are stored as integer paisa. A taxonomy supports categories, while dated entries, budgets, balances, location totals and summaries make the stored data useful. Message identifiers and processing state prevent repeated notifications from producing duplicate expenses. Correction and undo paths acknowledge that parsing can fail. Backup and export reduce lock-in without requiring cloud-first storage.
Store money as integer paisa instead of floating-point values.
Keep Room as the canonical local ledger even when an LLM helps interpret messages.
Use duplicate-safe message processing so notification retries do not create repeated expenses.
Support correction and undo because conversational extraction can be wrong.
Keep the product useful through budgets, balances, summaries, location totals and export rather than treating it as an LLM demo.
Test the RAG retrieval pipeline by asking specific questions about this case study: