Features
What Tally does.
Two sides. The Track side handles this month's spend — dashboard, transactions, budgets, recurring bills, and a cashflow Sankey. The Plan side handles the next ten years — forecasts, loan scenarios, net-worth flow, Moorr alignment, per-property reporting. Below — every screenshot is from the live demo with sample data.
Operational
Track this month.
Five surfaces handle the daily and monthly view. The screenshots below are from the demo persona's May 2026 — a Melbourne household with two mortgages, $11,718 spent of a $15,915 budget, three days left in the month.
Dashboard
One page, the whole month. Net worth, this-month vs last-month spend, cashflow, discretionary composition, recent activity, and the next seven days of upcoming bills.
- This / Last month toggle across every card
- Discretionary composition — pie of just the spend that responds to choices, ignoring the fixed costs that don't move
- Pace + projected end-of-month on the budget card
- Register summary — open items across Comments / Budget / Actions
- Two layouts: Cockpit (default) and Stream (single-column)
Transactions + categories + AI
85+ pre-seeded categories tuned for Australian households. Every leaf carries four independent axes, so the same row reads four different ways.
- Claude Haiku categorisation on ingest — every new transaction gets categorised inside three seconds
- Confidence threshold < 0.7 lands in the Review queue, never silently mis-tagged
- Rules engine with priority + hit-count tracking
- Find similar — match a tx pattern to bulk-recategorise
- Optional property tag — for households with an investment property; ignorable for everyone else
Four axes per leaf: parent · funding source · kind · essential.
Budget grid
Budgets in Tally are caps with variance, not contracts with grades. Each row shows budget, spent, remaining, variance, pace, and any operational flags (fast burn, essential, chronic over).
Monthly
- Per-category budget vs spent
- Inline-editable
- Trailing 3-month avg shown as reference
Subscriptions
- Recurring charges, annual run-rate
- Snooze / dismiss states
Annual expenses
- Year-ahead view of quarterly + annual bills
- Grouped by predicted next month
Recurring detector + Bills
A daily cron walks the transaction history and identifies any merchant that's appeared 3+ times at a stable cadence. No user setup. The Bills page then shows what's coming in the next 30 / 60 / 90 days.
- Cadence detection — weekly / monthly / quarterly / annual / irregular
- Drift signal — surfaces when a subscription quietly went up
- User curation — snooze, ignore, edit cadence; user-set fields override the detector
- Confidence shown — values below 0.7 carry a "verify before relying on it" disclaimer
Cash flow + Sankey
Every dollar, from where it came to where it went. The Sankey is the headline visual — read it as a flow, not a pie. Click any node to drill into the transactions behind it.
- Sankey diagram — full income → category routing
- Moorr funding-source view — same numbers, advisor side
- Subscription audit embedded — annualised cost of every recurring charge
- Period toggle — this month, last month, FY-to-date, custom range
Macro
Plan the decade.
Five surfaces handle the long horizon. A cash-position forecast (Moorr-style), a loan engine with stacked scenarios, monthly net-worth snapshots, Moorr funding-bucket mapping, and per-property reporting. The numbers used across the screenshots below are the demo persona's: a Brunswick PPOR ($620k mortgage at 6.10%) and a Bendigo IP ($410k IO loan at 6.35%).
Forecast
Paste your Moorr cashflow projection once. The chart overlays it against the actual cash position, month by month. Horizons range from one quarter out to 2029.
- Moorr cashflow overlay — projection line + actual line on the same axis
- Multiple horizons — quarter / 12 mo / 24 mo / 60 mo / to 2029
- Per-account breakdown on hover — which account drives the trajectory
- Snapshot capture — pin today's bank balances to the curve manually
Forecast widget on the Dashboard. The full Forecast page is a richer version of the same.
Loans + scenarios
P&I, IO with transition, offset, lump sums, named scenarios — every shape an Australian mortgage takes. The IP loan in the screenshot is $410,000 at 6.35% interest-only for 5 years then reverting to P&I. Adding a +0.75% rate scenario shifts lifetime interest by ~$65,000.
- Full AU repayment shapes — P&I or IO with transition, weekly / fortnightly / monthly, true-fortnightly vs half-monthly
- Lump-sum payments — model one-off extra principal at specific dates (tax refunds, bonuses)
- Offset modelling — interest accrues on (balance − offset); daily cron snapshots the offset balance from a linked savings account
- Named scenarios — "Rate +0.25%", "Extra $200/fortnight", "Switch to P&I from year 5". Stack as many as the question needs.
- Drift signal — link a loan to its bank account; the worker surfaces ahead-of-plan or behind-of-plan against the schedule
- Three chart modes — balance over time, interest vs principal per period, cumulative interest
Net worth flow
Monthly account snapshots across every linked + manual account. The persona below sits at $446,600 net worth — $1.5M in assets (Brunswick PPOR, Bendigo IP, CommSec, cash, crypto) against $1.06M in liabilities (two mortgages, a car loan, a credit card).
- 30 / 90 / 365-day horizons
- Asset / liability breakdown grouped by subtype (transaction, savings, investment, mortgage, loan, crypto, manual)
- Manual valuations — anchor a value on a date; the running sum walks from there
- Per-account 30-day delta — quick glance at where the line moved most
Moorr alignment
Tally complements Moorr — Stuart Wemyss's household-finance methodology. The plan lives in Moorr; the actuals live in Tally. Every category carries its Moorr funding bucket as a first-class column.
- Every leaf category mapped to one of five Moorr funding buckets
- "Group by Moorr" toggle on Budget Monthly — same numbers, advisor view
- Forecast tab overlays the Moorr cashflow projection against the actual cash position
- Insights surface Fixed / Variable / Discretionary breakdown — what the buckets should be sized for
Every category maps to one of five Moorr buckets.
Per-property reporting optional
Households with an investment property can tag transactions, bills, and loans to that property. The Transactions filter pulls a property-scoped P&L without leaving the app — net rental income, deductible expenses, depreciable items. Households without an IP can ignore the surface entirely.
- Per-property income + expense breakdown on Transactions, Budget Monthly, BudgetTrends
- System-tagged categories that mirror Housing for separate ATO reporting (Rental income, Landlord insurance, Strata, Loan interest)
- Recurring transactions inherit the property tag — set once, future occurrences carry it forward
Filter set to a property on the Transactions page; every other page picks up the filter via the URL.
Live data
Australian Open Banking.
Tally receives transactions via Fiskil — an Australian CDR-accredited Data Recipient. CDR (Consumer Data Right) is the Treasury-regulated framework that replaced screen-scraping for bank data in 2020. Bank credentials never touch Tally or Fiskil — you authenticate at the bank itself, the bank confirms what's allowed, and Fiskil receives only the data you've authorised.
- No passwords on Tally — bank authentication happens at the bank's own portal. Required by CDR.
- Per-account consent — you choose which accounts to share. Revoke any time from your bank's CDR dashboard.
- Webhook delivery — transactions arrive within minutes of clearing. No daily polling, no manual refresh.
- HMAC-signed payloads — every webhook is signed by Fiskil; Tally verifies the signature before processing. Replay attacks rejected by timestamp window.
- 12-month CDR consent windows — by regulation. Tally prompts you to re-authorise before expiry.
- Raw payload archive — every webhook payload kept in encrypted R2 for 90 days for forensics and reproducibility.
Banks + brokerage supported
All four major Australian banks plus most mid-tier ADIs. Brokerage coverage is narrower — Treasury's CDR rollout to investment products is still in progress — but the most- asked-for platforms are already supported.
Sharing
Built for couples. Three access levels via the admin's Settings → Users.
None
Their own empty data silo. Default for new users.
Full
See and edit the data — transactions, categories, loans, register, everything. For partners.
View only
See the data, but the worker blocks every non-GET request. Useful during focused work.
- Each user signs in with their own Google account; the audit log shows who
- One-click sign out ends the session within seconds, ahead of JWT expiry
- Per-user activity log — every login attempt recorded with IP, device, outcome
Security & privacy
- No passwords on Tally. Sign-in is delegated to Google OIDC — whatever 2-step verification Google asks for is what protects the account.
- 1-hour session JWT. Even a stolen device's cookie self-destructs within the hour.
- Allowlist-only. No self-signup; the admin invites users explicitly.
- Per-user audit log — every sign-in attempt recorded with IP, device, outcome. Force sign-out any session from one click.
Under the hood
Built on Cloudflare's edge stack so it's fast everywhere and cheap to run.
Tech stack details
- Cloudflare Workers (Hono framework) — sub-100ms API responses, globally distributed
- D1 — SQLite at the edge, ACID transactions
- R2 — webhook archive (raw payloads kept 90 days) + receipt attachments
- KV — aggregate cache + JWKS cache
- Anthropic Claude — Haiku for categorisation, Sonnet for insights
- React 18 + Vite + Tailwind + Radix on the frontend
- Drizzle ORM — typed queries, portable if we ever outgrow D1
See it for yourself.
A full sample household — six months of transactions, two mortgages, $469k net worth, monthly insights — one click away. No sign-up, no card.