Data engineering · 2026

Where did it actually go?

Statements and card bills arrive as email. This ingests them, categorises the spend, tracks budgets and flags anomalies — and because it holds real financial records, it is behind auth and there are no screenshots of it here.

Nightly
ingestion
Cash-basis
wallet accounting
Built with
PythonSQLiteReactVercel

Wallets break accrual accounting

Money loaded into a payments wallet is not spent when it is loaded, and is not income when it is refunded. Treating wallet top-ups on a cash basis and only recognising the spend at the merchant was the difference between a budget that reconciled and one that double-counted.

Credentials first

The project began with an audit of which services could read that mailbox and with what scope, before a line of ingestion was written. A finance tool is a credential-handling tool that happens to draw charts.