The story
Most budgeting apps are built for the US: one checking account and one card. In Mexico you juggle several cards, each with its own closing date, payment date and "meses sin intereses" purchases running in parallel. Flujo answers the question that matters every month: how much do I owe, on which card, and by when.
The app is local-first. Data lives in SQLite on the device, there is no account, no ads and it is protected with Face ID. The same Expo codebase ships to iOS, Android and the web, where it switches to a desktop layout on wide screens.
The optional cloud is a Cloudflare Worker that syncs devices and keeps an encrypted vault of bank statements. Statements are read by Claude with structured output, reviewed by the user and imported without duplicates. An MCP server with full OAuth 2.1 lets Claude read and edit the ledger from a chat, so a statement pasted into Claude ends up reconciled on the phone.
Flujo is the third iteration of the idea: a 2025 Express + GPT-4 prototype, a 2026 NestJS + Postgres version, and finally this rebuild designed to run for almost nothing.
Engineering highlights
Local-first sync engine
SQLite triggers track changes, cursor-based push/pull, per-row last-write-wins and soft deletes. Works fully offline; the engine has no Expo dependency so it runs under tests.
AI statement import
PDF, image or CSV statements go to Claude as native documents with a Zod-enforced schema. Re-imports are idempotent and every call counts against a hard monthly AI budget.
Encrypted statement vault
Every statement is encrypted with its own key before it is stored, keys can be rotated without re-uploading anything, and files are validated before they are accepted.
MCP server + OAuth 2.1
Discovery metadata, dynamic client registration, mandatory PKCE and rotating refresh tokens, so it works as a claude.ai custom connector out of the box.
Cross-account reconciliation
Pure scoring functions pair the same transfer seen from two accounts and card payments that show up on both statements; medium-confidence matches go to Claude Haiku.
Release pipeline
A version tag builds with EAS and lands in TestFlight; API, web app and site deploy from GitHub Actions. App Store screenshots are rendered from a demo-data seed.






