1. The hero — money in & out
Top of /dashboard/cashflow is a fortress-dark card with the totals across your imported window: money in, money out, and net. Below sits the buckets tile (Locked / Essential / Choice), a 30-day forecast, and the full transaction ledger.
2. Import a bank CSV
Tap + Import CSV in the header. Drop in an export from your banking app. Supported: CBA, ANZ, NAB, Westpac, Macquarie, plus any generic format with columns for date + amount + description. The importer:
- De-dupes against previous imports (won’t double-count the same transaction)
- Auto-categorises using merchant patterns + your prior classifications
- Attaches an account label to every row (so you can filter by CBA card vs offset)
3. What gets stored
Transactions go into bank_transactions. Fields: date, amount (signed), description, category, account label, source bank, tags. RLS locked to your account. Never shared, never sold.
4. Filter + drill
Below the summary, the ledger renders 12 months of transactions. Chips at the top let you filter by account or category. Tap any row to correct its category (learns for next import).
5. Buckets — Locked / Essential / Choice
Each transaction rolls into one of three buckets. Locked = fixed recurring bills.Essential = groceries, fuel, health — needed but variable.Choice = discretionary. The Buckets tile shows monthly averages so you see “how much room after fixed” at a glance.
6. 30-day forecast
Combines: known upcoming events from your calendar (bills, wages, FTB, CCS), plus a pattern estimate from your bank history when calendar-events are sparse. Every figure is labelled “known” vs “estimate” so you don’t confuse them.
7. Account labels on every bill
Every recurring bill can point at a specific account it’s paid from. Bills list shows a small teal “from <account>” chip beside the amount — useful when you’re trying to cancel a card and want to see what breaks. Cashflow reads the same account labels.
8. Older data
The visible ledger caps at 12 months but older rows aren’t deleted — still counted in your reports, just outside the current view. The subtitle line tells you how many older rows are on file.