Pablo Zarate
All projects

Flujo

Personal finance for Mexico, local-first and AI-assisted.

Client
My own product
Role
Founder · Design, mobile, backend, AI
Year
2025 – 2026
Status
Beta · coming to the App Store
Daily ledger with monthly balance
Daily ledger with monthly balance
Accounts and credit cards with amount due
Accounts and credit cards with amount due
Spending analysis by category
Spending analysis by category
Logging a new movement
Logging a new movement
Monthly budgets
Monthly budgets
Calendar view
Calendar view
3
platforms, one codebase
15
MCP tools for Claude
$0–5
monthly infra cost

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

01

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.

02

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.

03

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.

04

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.

05

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.

06

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.

Next project
Kyloy
One wallet for every local loyalty card.