Full-stack PWA for manual-first personal finance tracking, reporting, forecasting, and asset management.
TallyFolio
Privacy-first personal finance tracker
A full-stack PWA for manual-first personal finance tracking, built with deterministic financial calculations, CSV import workflows, reports, forecasting, subscriptions, investments, and asset tracking.
- Full-stack product
- Financial correctness
- Privacy boundaries

Context
TallyFolio is a manual-first personal finance product built around privacy, deterministic calculations, and everyday workflows that do not depend on bank aggregation. The product needed modern import, reporting, and forecasting UX without losing user control over the data model.
Diagram
Where deterministic finance logic ends and AI begins
Select a layer to see what it owns.
Dashboard, imports, budgets, reports, forecasts, subscriptions, investments, and assets, built for everyday mobile use.
Constrained to explaining already-computed figures, never generating new financial advice.
Budgets, forecasts, reports, subscriptions, investments, and assets calculated deterministically and testably.
Financial values are stored as integer minor units rather than scattered across UI and persistence math.
Problem
Most personal finance apps force users into either bank aggregation or spreadsheets. I wanted a private, manual-first system that could still provide modern product workflows: import review, categorization, subscriptions, cash-flow forecasting, investment contributions, reports, and asset tracking.
Diagram
Bank aggregation, spreadsheets, and a manual-first product
Bank aggregation
- Requires handing over bank credentials
- Product workflows depend on aggregation as the baseline
Spreadsheets
- Manual and private, without bank aggregation
- Leaves out the modern product workflows people expect
Manual-first TallyFolio
- No bank credentials required
- CSV import review before data becomes product state
- Subscriptions and recurring schedules drive the forecast
- Deterministic totals across budgets, reports, investments, and assets
My role
- Defined the product strategy, UX, frontend architecture, backend shape, and data model.
- Built the authenticated product workflows for imports, reporting, budgets, forecasting, subscriptions, investments, and assets.
- Designed the system boundaries around deterministic finance logic, privacy, and optional AI explanations.
What I built
- Dashboard and authenticated home workflows.
- CSV import review and transaction management.
- Budgets, reports, subscriptions, recurring schedules, and forecast views.
- Investments, asset register, and export/settings flows.
- Public landing and support pages for the product.
Technical decisions
Decision
Store financial values as integer minor units and keep calculations in pure domain modules.
Why
Budgets, forecasts, reports, subscriptions, investments, and assets all needed deterministic results that could be tested and explained.
Trade-off
This adds domain-modeling overhead compared with scattering financial math across UI and persistence layers.
Result
Totals, forecasts, and finance workflows remain deterministic and easier to validate.
Decision
Make imports manual-first and parse CSV/XLSX files in memory for review rather than persisting raw files.
Why
The product needed modern import workflows without giving up user control or widening the privacy surface unnecessarily.
Trade-off
Manual review adds friction compared with fully automated ingestion and requires more explicit UI states.
Result
Import review stays privacy-conscious and gives users a clearer verification step before data becomes product state.
Decision
Keep AI usage optional and constrained to explaining already-computed figures rather than generating new financial advice.
Why
Financial trust depends on the product staying explicit about what is deterministic system output versus optional interpretation.
Trade-off
This keeps the AI surface narrower and less flashy than broader assistant-style features.
Result
The product can offer assistance without weakening the boundary around financial correctness.
Diagram
Manual-first import review
Select a step to see what happens there.
Step 1 of 5
Choose file
The user selects a CSV or XLSX export to import.
UX and detail decisions
- Used a manual-first import flow instead of requiring bank aggregation so users stay in control of what enters the system.
- Modeled subscriptions and recurring schedules as first-class workflows so forecasting stays aligned to schedule truth rather than transaction guesswork.
- Kept the product mobile/PWA-friendly for everyday use instead of assuming a desktop-only finance workflow.
- Separated asset tracking from everyday spending flows so investment and cash workflows do not blur together in the UI.
Interface evidence

Outcome
- Shipped a live full-stack finance product with privacy-conscious workflows and production-grade auth.
- Established deterministic finance logic across budgets, reports, forecasts, subscriptions, investments, and asset tracking.
- Created modern import and review workflows without depending on bank aggregation as the product baseline.
What I would improve
- Expand more product-level evidence around forecast edge cases, import recovery, and mobile-specific workflow detail.
- Continue refining the boundary between deterministic finance output and optional AI explanations as the product grows.