A finance app that checks its own maths
My own money app. Spending arrives as a bank notification, a receipt photo or a sentence to a Telegram bot — and nothing reaches the ledger until it has been checked, approved or reconciled.



Desktop and Android · generic demo data
Four ways in, one gate
Logging money has to take one tap or nobody does it. Every path lands in the same draft and the same approval card.
- Bank notificationA native Android listener turns a bank or wallet notification into a draft.
- Receipt photoMistral OCR reads it, a small model extracts fields, RAG suggests the category.
- A plain sentence“Spent 12.50 at the market yesterday” — in English or Portuguese.
- Guided /addExpense, income or transfer, filled with the card’s buttons.
Statements are parsed, never guessed
Each bank’s statement gets a deterministic parser, not a model — it can’t invent a row. Then the numbers have to add up:
- 1Every row’s running balance
- 2Opening + movements = closing
- 3The declared debit and credit totals
Forty cents out and the whole import is refused. A format with nothing to check says “unverifiable”, never “passed”.

Backups that get reopened
Nightly copies are taken from memory, read back, integrity-checked and row-counted before they count.
One warning a week, or none
Habit alerts are templates over measured numbers — no model to invent a figure, and silence below threshold.
Money moves atomically
Every balance-changing write runs in one transaction — half a write is silent corruption.
Two auth layers
Edge auth plus app-level device tokens, stored hashed and revocable instantly.


