The chart was easy. Categorization was the whole product.
I expected the chart to be the hard problem. It was the opposite. Different CSV exports tag categories their own way, or not at all. Getting one consistent taxonomy, then making it correctable in seconds, is what made the dashboard trustworthy.
The first version made you fix transactions one at a time with a pencil icon, which is where motivation went to die. The second version is a dedicated triage view that groups every uncategorized transaction by merchant, sorts the queue by dollar impact (biggest first), suggests the most likely category, and lets you commit each decision with one keystroke. Enter accepts the suggestion, 1–9 pick from the grid, ⌘Z undoes. Going from 700 uncategorized rows to zero takes about three minutes, and it feels good.
The Sort view. One decision categorizes every transaction from a merchant at once, and optionally saves a rule so future imports catch the same pattern.
The floor versus the discretionary.
Once recurring charges (rent, utilities, subscriptions, the gym) are detected and pinned, the rest of the spend reads completely differently. You can finally separate the floor (what you owe) from the discretionary (what you choose). That distinction is the entire game.
Forecast tab. Recurring charges separated from variable budgets, each line individually toggleable.