// the problem
Budgeting apps tell you what you already spent, which is a report card issued after the damage. They also assume bank feeds — and in a cash-heavy market like the Dominican Republic, a huge share of spending never touches an account the app can read. So the tool is both too late and half-blind.
// the build
An intervention engine rather than a dashboard: it gets in the way of the purchase, and it works without a signal or a bank.
›A 3-gate decision cascade where only the last gate costs money: an amount threshold and a safe-to-spend calculation both run locally and instantly, and the LLM is called only when those cannot settle it — which keeps inference under $5/month instead of one API call per expense.
›On-device OCR through Google ML Kit at 80–90% extraction accuracy — free, fully offline, and no receipt image ever leaves the phone, so cash spending gets counted without a bank feed or a privacy trade.
›Genuinely offline-first on a local Hive database with background sync: every core feature works with no connection, which is a requirement rather than a nice-to-have in the target market.
›Quick manual entry in two taps and about five seconds — preset amounts and one-tap categories — because an expense tracker that takes thirty seconds is an expense tracker nobody uses twice.
›Selectable intervention tone from gentle nudge to blunt refusal, defaulting to the direct end for the Dominican market: "NO. Rent is due in 3 days. Buy this and you have RD$400 left for food."
// what shipped
MVP complete and in beta with a small onboarded test group. Backend, Flutter client, and offline sync all shipped and integrated; the intervention engine is working end to end, OCR is holding above 80% accuracy, and total running cost sits around $5–10/month including hosting and inference.