Household Finance Tracker
in-progressA household finance app for two users sharing one set of books, rebuilt from an 18-tab Google Sheets workbook that collapsed under manual data entry.
Timeframe
Q3 2026
Status
in-progress
Last Updated
Categories
About This Project
A household finance app for two users sharing one set of books, rebuilt from an 18-tab Google Sheets workbook that collapsed under manual data entry.
Owns the full pipeline: bank sync and CSV import, deduplication, transfer detection, rule-based categorization, a review inbox, envelope budgeting, reporting, and investment valuation.
Multi-currency by design - every amount keeps its native currency against a dated FX table, so EUR net worth is computed rather than approximated by one global rate.
Built on a few non-negotiables: the bank feed is the source of truth, nothing counts until a human confirms it, transfers are never double-counted, manual category overrides are never overwritten, and imports are idempotent.
Grew out of the earlier Smart Spending Companion concept, but scoped up from a solo, chat-first spending coach into a shared household ledger spanning US and European banks, multiple currencies, and investments.
Tech Stack
Why I Built This
The spreadsheet it replaced died in April 2024 - manual export-and-paste was unsustainable, so the data simply stopped.
Roughly 10,700 Google-only formulas were locked into a tool I did not own. Rewriting them as ordinary code makes the logic portable and testable.
Off-the-shelf budgeting apps handle one currency and one person well; a two-person, multi-currency household across US and European banks is exactly where they break down.
Wanted a single owned pipeline from raw bank feed through to net worth, rather than three disconnected tools that each tell a different story.
Smart Spending Companion explored the same problem from the consumer side. Working through that concept made it clear the real constraint at home was not insight into spending but getting trustworthy multi-currency data in at all - so this build starts at the import pipeline instead.