← cd ../projects
2026 · Solo · design + build
FinLivre
A local-first personal finance app I built because I knew I was spending, but couldn't see where.

context
I use credit cards across several banks, and every statement tells a different partial story. The Brazilian apps that promise to unify them either ask for bank credentials or keep your data on their servers. I wanted one honest picture of my money without handing it to anyone.
So I built it for myself first: dogfooding was the point, a portfolio piece second. It imports OFX files, reads statement photos and PDFs, projects installments and recurring items into future months, and splits spending into a 50/30/20 budget.
stack
Next.jsReactTypeScriptDexieClaude Vision
decisions
01
Everything stays in the browser; no backend
- considered
- A conventional server with accounts and a database, like the apps I was trying to avoid.
- why
- The whole premise is that you never have to trust me, or anyone, with your financial data, because it never leaves your machine. Entries live in IndexedDB through Dexie, so there is no account, no server and nothing to breach, and it still persists across reloads.
02
Code parses OFX; AI only reads what code can't
- considered
- Sending every import through a model, which is the fashionable default.
- why
- Parsing a known format is a job for code, not for AI: OFX parsing is deterministic and unit-tested. Claude Vision is reserved for photos and PDFs, runs on the user's own API key straight from the browser: no project key, no proxy server. The first plan had no AI at all; it became an opt-in importer once the deterministic path was solid.
03
Future months are computed, never stored
- considered
- Writing projected installments and recurring bills into the database as rows.
- why
- Materialized projections go stale the moment a real statement arrives and risk double counting. Computing them on read means the real OFX always wins, with nothing to reconcile.
outcome
- ▸I use it every month with my own data.
- ▸112 unit tests across 11 suites: OFX parsing, projections, budget buckets and the import pipeline.
- ▸Every source (OFX, Vision, manual, recurring) flows into one
Entryledger, so a new importer never needs its own path through the app. - ▸Built across 22 commits between late June and the end of July 2026, then launched publicly. Live.