Observe โข Understand โข Verify โข Assist
Turning raw transaction signals into intelligent financial records
The live deployment is primarily intended for demonstration. Some capabilities โ particularly native Android SMS ingestion and cloud synchronization โ remain under active development.
Most finance apps expect users to input everything manually.
KhaataKitab behaves more like an assistant that watches, processes, and verifies โ reading signals that already exist (bank SMS, receipts) and turning them into structured, categorized ledger entries, with a human in the loop to confirm or correct.
| ๐จ Problem | ๐ก Insight | โก Solution |
|---|---|---|
| Scattered payments across apps/cash | Bank SMS already contains the truth | Parse SMS into structured transactions |
| Manual entry is tedious and error-prone | Users forget to log transactions | Auto-capture + review queue |
| Miscategorized spending | Keyword rules alone don't generalize | Multi-tier ML categorization with online learning |
| Numbers without context | Data โ insight | Dashboards, cashflow trends, financial health score |
flowchart TB
U[User]
U --> WEB[React Web App]
U --> AND[Capacitor Android App]
WEB --> AUTH[Supabase Auth]
AND --> AUTH
WEB --> DB[Dexie / IndexedDB]
AND --> DB
AND --> SMS[SMS Ingestion]
SMS --> PARSER[Transaction Parser]
PARSER --> CLASSIFIER[Local Categorization Engine]
DB --> CLASSIFIER
CLASSIFIER --> REVIEW[Human Verification]
REVIEW --> DB
CLASSIFIER --> AI[Supabase Edge Functions]
AI --> LLM[AI Provider]
DB --> INSIGHTS[Insights Engine]
AI --> INSIGHTS
flowchart LR
A[Transaction Signals] --> B[Parse]
B --> C[Categorize]
C --> D{Confidence}
D -->|High| E[Ledger]
D -->|Low| F[AI Assistance]
F --> G[User Verification]
G --> H[Learn From Correction]
H --> C
E --> I[Insights]
- Observe โ capture transaction signals from SMS and receipts
- Understand โ extract and categorize transaction data
- Verify โ confidence-based review and human confirmation
- Assist โ generate summaries and financial insights
- Learn โ incorporate user corrections into local categorization
- Regex-based parser extracts amount, direction (credit/debit), payment method, last 4 digits, and reference ID from raw bank SMS text
- Runs entirely client-side โ no data leaves the device for parsing
- Native Android auto-read (real-time SMS listener) is in progress; current build supports import of sample SMS for testing the parsing pipeline
A cascading pipeline that only escalates cost when it needs to:
- User-learned mappings (IndexedDB) โ instant, from your own corrections
- Merchant dictionary match โ e.g. "Swiggy" โ Food & Dining
- On-device Naive Bayes classifier โ probabilistic categorization with confidence scoring, Laplace smoothing, online learning from corrections
- AI fallback (Supabase Edge Function โ AI provider) โ triggered only when local confidence is low
- Transactions below a confidence threshold are flagged Needs Review
- Correcting a category updates the on-device classifier's word-frequency table, improving it over time
- Manual entries are cross-checked against parsed SMS (amount/time/merchant/method) to support verified vs. needs-review status
- Monthly income/expense summaries, category breakdown, cashflow trend charts
- Financial Health Score (0โ100) from three weighted factors: income regularity, expense control, consistency
- Cashflow "prediction" is currently a deterministic heuristic (rolling average), not a trained forecasting model โ labeled accordingly in-app, because the distinction between a heuristic and a model matters
- CRUD for stock items with quantity and computed value
- Ledger โ Inventory integration (in progress): sales transactions will automatically decrement stock
- Fully responsive: 1 column (mobile) โ 2 (tablet) โ 3 (desktop)
- Offline-first: reads and writes continue uninterrupted with no network connection, backed by IndexedDB (Dexie)
- Dark mode, smooth transitions, real-time reactive updates on data change
| Capability | Status |
|---|---|
| Local ledger (add/edit/delete, filtering, search) | โ |
| Offline persistence | โ |
| AI categorization (Naive Bayes + fallback) | โ |
| SMS parsing | โ |
| AI chat copilot | โ |
| Receipt processing (cloud vision) | โ |
| Supabase authentication | โ |
| Cloud synchronization | ๐ง |
| Native Android SMS auto-capture | ๐ง |
| Inventory โ ledger integration | ๐ง |
Frontend: React ยท TypeScript ยท Vite ยท Tailwind CSS ยท shadcn/ui Data & Persistence: Dexie ยท IndexedDB Backend: Supabase ยท PostgreSQL ยท Edge Functions AI: AI Edge Functions ยท local Naive Bayes classifier Mobile: Capacitor ยท Android Visualization: Recharts
- Multi-tier categorization pipeline balancing cost, latency, and accuracy (local-first, cloud fallback only when needed)
- Online-learning classifier that improves from user corrections without a server round-trip
- Offline-first architecture with reactive local persistence
- Structured extraction from unstructured bank SMS text via regex parsing
- Real authentication via Supabase Auth, replacing the earlier local-session prototype
git clone <YOUR_GIT_URL>
cd <PROJECT_NAME>
npm install
npm run devEnvironment variables required (see .env.example):
VITE_SUPABASE_URL=
VITE_SUPABASE_ANON_KEY=
- ๐ฅ Contacts / party ledger ("who owes me, whom do I owe") โ the core khata use case, in progress
- โ๏ธ Genuine cloud sync with conflict resolution
- ๐ฆ Ledger โ inventory integration (sales auto-adjust stock)
- ๐ฑ Native Android SMS auto-capture
- ๐งช Automated test coverage (parser, classifier)
- ๐ณ Credit/trust scoring for repeat customers
- ๐ Multi-language input (Hindi/Marathi voice and text)
The future of apps is not interaction. It's automation with intelligence โ and a human who can still check its work.
MIT License