Quicken has thirty-two years of my financial history in it and almost no useful way to look at that history as a whole. This reads the register export and builds the view I actually wanted: what we really spend in a normal year, what that trend has done over three decades, and what it implies about when work becomes optional.
The output is one HTML file. Not a site, not a server — a file. It opens
from file://, with Chart.js vendored and the entire dataset inlined.
Nothing leaves the machine
This is the whole reason it is built the way it is. There are no network calls,
no CDN links, and no analytics in the generated dashboard. Chart.js is vendored
into assets/ rather than pulled from a CDN, so the file works on a laptop with
the Wi-Fi off and keeps working in ten years when that CDN URL has rotted.
data/raw/ is gitignored. Real financial data never enters version control.
Running it
uv venv .venv && uv pip install --python .venv pandas pyarrow pytest
.venv/bin/python src/build_dashboard.py
open output/dashboard.html
Re-export from Quicken whenever you want fresh numbers, drop the CSV into
data/raw/, and re-run. The newest CSV in that folder is picked up
automatically.
Exporting from Quicken Mac
The parser expects Quicken's exact layout — a seven-row preamble, a blank leading column, and a three-row footer — so the export settings matter:
- Open the register and select the All Transactions view.
- Set the date filter to All Dates and the account filter to All Accounts.
- File → Export → Report to CSV.
- Save it into
data/raw/, and do not edit the file.
What it computes
A true spending baseline. Raw yearly totals are useless because they are dominated by one-off events — a roof, a car, a wedding. The build separates recurring spending from one-time spending so the baseline reflects what a normal year actually costs.
Net worth over time, assembled from account balances across the full history rather than from a single point-in-time snapshot.
Savings rate, as income minus true spending, tracked per year so the trend is visible rather than just the current number.
A FIRE-style projection that takes the spending baseline, applies a withdrawal rate, and shows what the number would have to be — and given current savings rate, roughly when.
A caveat worth stating
The projection is arithmetic, not advice. It assumes a constant real return and a constant withdrawal rate, and it does not know about taxes, sequence-of-returns risk, healthcare before Medicare, or anything else that makes real retirement planning hard. It is a good way to see the shape of the problem and a bad way to make an irreversible decision.