← All workCase study 06 / 07

House of Hearth

Local-first finance tracker you can question in plain English, through a read-only MCP server.

StackFastAPIPythonReactSQLitePlaidMCPAES-GCM

How it works

Links bank, credit, and brokerage accounts through Plaid and keeps everything in one local SQLite file — nothing hosted. Long-lived Plaid tokens are sealed with AES-GCM (bound to their item_id via AAD) and the master key lives in the OS keychain, so a leaked finance.db is useless without your login. An incremental /transactions/sync (cursor + per-page commits) resumes cleanly after a crash.

A pure-Python core/ layer (db, crypto, Plaid, queries) is shared by a FastAPI + React dashboard and a least-privilege stdio MCP server that opens SQLite read-only — Claude can answer "what did I spend on groceries?" but has no path to move money.