Logan Jonesupdated jul 2026
← index

WealthWatch

2026 · self-hosted · in daily use

Money apps want your bank login and your data. WealthWatch keeps both at home. Import the statements, keep everything local, and get answers: where the money goes, what the portfolio is doing, how far out retirement is.

What it does

  • CSV imports from Fidelity, Chase, Capital One, and Wells Fargo, deduplicated. Merchants categorized automatically.
  • Net worth across all accounts with historical snapshots. Investment positions with cost basis and trade lots. Home equity with improvement records.
  • Spending, cash flow, and income with rolling averages and monthly breakdowns. Recurring-bill detection. Coverage-gap flags that admit when a card’s history is permanently lost rather than pretending completeness.
  • Live market data: watchlist quotes, OHLCV candles from one-minute to monthly, company financials, the treasury yield curve, economic and earnings calendars.
  • FIRE timelines under configurable assumptions (spending, returns, inflation, withdrawal rate, Social Security). Coast FI calculator, milestone tracking, side-by-side scenarios.

How it’s built

.NET 10 API, React 18 frontend, SQLite, packaged in Docker. A background service backfills candle data across two market-data providers so charts stay warm without hammering either one. Playwright covers the UI end to end.

The hard parts

  • Four banks, four export dialects, overlapping date ranges, and no stable transaction IDs. The import pipeline has to deduplicate without ever silently dropping a real transaction.
  • Being honest about missing data. Lost statement periods are detected and flagged as permanent gaps instead of being papered over. An analytics tool that guesses is worse than one that admits.
screenshot: net worth dashboard
fig. 1 · net worth history across accounts
screenshot: FIRE projections
fig. 2 · retirement scenarios under configurable assumptions
[0] ~/portfoliominnesota