Projects / Designed and built

Tally

Personal finance dashboard: net worth, spending, bills and holdings on one page

Tally: Personal finance dashboard: net worth, spending, bills and holdings on one page

You want one number: what you are worth today. Getting it takes six logins, two banks that make you re-authenticate, and a spreadsheet that goes stale before you finish typing it.

Tally puts that number on one page.

Connect your banks, cards, loans and brokerages through Plaid, and Tally keeps them current on its own:

  • Net worth tracked every day, with assets and liabilities charted over time
  • Every transaction across every account in one searchable, categorized list
  • Spending by category each month, measured against the months before it
  • Recurring bills and subscriptions detected for you, with what is due next and what the price was last time
  • Holdings with cost basis and gain, alongside card APRs, loan balances and payment due dates
  • Bring your own AI: point Claude or any MCP client at your own finances over OAuth, ask what changed this month, and have it write findings back to your dashboard

Security

Security came first, because this is the most sensitive data a person has:

  • Bank credentials never reach the server, Plaid handles that handoff
  • Plaid tokens and authenticator secrets encrypted with AES-256-GCM under a key held outside the database
  • A second factor required before any financial data loads
  • An audit log covering sign-ins, password changes, token issues and app connections
  • Export everything as JSON or CSV, and deleting your account removes each bank connection before the data goes

How it's built

I designed and built it end to end, from product spec to production:

  • 7,600 lines of TypeScript across 86 modules
  • 28 API routes and 18 screens running on Cloudflare's edge
  • An 18-table database with scheduled sync, webhook handling and exponential backoff when a bank fails
  • Its own OAuth 2.1 authorization server and MCP endpoint, written to spec

Live and in private use while I widen bank coverage.