SmrtCash docs

SmrtCash — Roadmap#

Vision#

SmrtCash is a personal-finance manager in the spirit of Quicken and Monarch, delivered as SaaS. Customers sign up, get a tenant, pay via Stripe, and use the app at our URL. The single-container Dockerfile remains in the repo (it's the dev-loop image, and it's what the SaaS itself runs in production behind Nginx Proxy Manager) but self-hosting is not a marketed customer option — the business model is recurring SaaS revenue.

Two real moats vs every cloud competitor:

The product is delivered in phases + slices. Each one produces a usable application — nothing is "all or nothing."

Phase / series Theme Status
1 Foundation & Import ✅ Complete — 2026-05-22
2 AI Transaction Normalization ✅ Complete — 2026-05-22
3 Receipts & Attachments ✅ Complete — 2026-05-22
4 Insights & Reconciliation ✅ Complete — 2026-05-22
5 Dockerization, Auth & Hardening ✅ Complete — 2026-05-22
6 Budgeting & Cash Flow ✅ Complete — 2026-05-22
7 Wealth & Net Worth ✅ Complete — 2026-05-23
8 Connectivity & Automation ✅ Complete — 2026-05-23
9 Mobile, Assistant & Experience ✅ Complete — 2026-05-23
0.13.x Post-Phase-9 backlog (taxes, anomalies, crypto, sharing, permissions) ✅ Complete — 2026-05-23
0.14.x Multi-tenant isolation hardening (72 dedicated tests) ✅ Complete — 2026-05-23
0.15.x SaaS pivot — Stripe billing, gating, dunning, operator readiness ✅ Complete — 2026-05-24
0.16.x SaaS launch readiness — signup, password reset, per-tenant encryption ✅ Complete — 2026-05-24
0.17.x Documentation refresh + HTML build pipeline ✅ Complete — 2026-05-24 (0.17.0)
0.18.x Competitive parity & depth — close gaps vs Monarch / Simplifi / YNAB / Rocket Money / Lunch Money / Empower ✅ Complete — 0.18.0…0.18.12 shipped 2026-05-24
0.19.x Reconciliation, investment analysis, ops debt ✅ Complete — 2026-05-26
0.20.x Agentic AI moat — proactive insights, staged actions, voice ✅ Complete — 2026-05-26
0.21.x Universal customer asks competitors haven't delivered ✅ Complete — 2026-05-27
0.22.x Production launch readiness — Stripe live, ToS, observability ✅ Complete — 2026-05-24
0.24.x Scenario expansion — hub + 13 scenarios + 11 reports + editable mileage rates + daily anomaly scan ✅ Complete — 2026-05-27
0.25.x Credit-score + retirement scenarios — needs new model layers (score-band, Monte Carlo / withdrawal) 📋 Planned (next up after 0.24.x)
0.26.x Scaling — vertical upgrade runbook + horizontal architecture (read replicas, multi-instance app, object-store attachments) 📋 Planned (renumbered from 0.23.x; feature work prioritized first)

Legend: ✅ done · 🔜 next up · 📋 planned · 💡 backlog


Product positioning#

A competitive review of Monarch, Simplifi, Empower, Banktivity, CountAbout, Rocket Money, Moneydance, YNAB and Lunch Money shaped this roadmap. The conclusion:


Phase 1 — Foundation & Import ✅#

Goal: Stand up the stack and reliably import real bank/credit-card exports.

Delivered: monorepo + PostgreSQL + migrations; Fastify/TypeScript API; CSV & XLSX importer with Chase format auto-detection and generic column mapping; duplicate detection; integer-cents money handling; React web app for accounts, transactions and importing; a 95-test automated suite. Verified end-to-end with 1,944 real transactions.


Phase 2 — AI Transaction Normalization ✅#

Goal: Turn messy bank descriptions into clean, categorized data.

Delivered:


Phase 3 — Receipts & Attachments ✅#

Goal: Tie supporting documents to transactions for clarity at tax time.

Delivered:

Deferred to Phase 5: encryption at rest, Docker volume mount for the attachments directory.


Phase 4 — Insights & Reconciliation ✅#

Goal: Make the data answer real questions about your money.

Delivered:


Phase 5 — Dockerization, Auth & Hardening ✅#

Goal: Ship the secure, self-contained container.

Delivered:


Phase 6 — Budgeting & Cash Flow ✅#

Goal: Match the everyday strengths of Monarch and Simplifi.

Delivered:

Auto-detection of recurring charges is deferred — the manual entry path turned out to be plenty for a single-user instance, and auto- detection wants its own phase to handle the false-positive UX properly.


Phase 7 — Wealth & Net Worth ✅#

Goal: Add the wealth-tracking depth of Empower and Banktivity.

Sliced into three releases:

Phase 7 deliberately took a long detour through operator features (multi-tenant + RBAC + SMTP + backups + monitoring + design refresh, versions 0.7.4 → 0.9.5) before closing out 7.1 and 7.2. The operator features were originally backlog items; bringing them forward turned the app into a real household-shared deployment before the wealth- projection extras landed.


Phase 8 — Connectivity & Automation ✅#

Goal: Offer all three ways to get data in — without forcing the cloud.

Sliced into four releases:


Phase 9 — Mobile, Assistant & Experience ✅#

Goal: Make SmrtCash a pleasure to use anywhere.

Sliced into four releases:


Beyond — Backlog 💡#

User asked to work through the backlog after Phase 9 closed. Active backlog plan: ship five small releases (0.13.00.13.4), defer native mobile.


0.14.x — Multi-tenant isolation hardening ✅#

Five-slice audit + fix pass that produced 72 dedicated cross-tenant isolation tests. Every domain route, aggregation, and read path was verified to never return data from another tenant. Closed every known issue at the end of the series.


0.15.x — SaaS pivot ✅#

Layered Stripe billing + entitlement gating on top of the existing single-tenant model. Each slice is independently shippable; cumulative effect is "the same app, now sellable."


0.16.x — SaaS launch readiness ✅#

Closes the launch gaps: customers can self-serve from /signup, recover their own passwords, and every customer's attachments are encrypted under a per-tenant DEK with a super-admin rotation path.


0.17.x — Documentation refresh + HTML build ✅#

Documentation caught up to v0.16 reality and a static HTML mirror was added so the marketing site can serve docs directly from main without a build pipeline.


0.18.x — Competitive parity & depth ✅#

Competitive read after v0.17 surfaced specific moats competitors own that SmrtCash hasn't yet contested. Each slice closes one gap; ordering is by impact-per-day so the early wins compound.

The full strategic read lives in the project notes; the short version of each slice is below.

Where competitors lead us today#

Where SmrtCash already has moats (under-sold)#

These are real and shipped — the work below is also to DRAMATIZE them via UX + the marketing copy on the BITS site.

Planned slices (ordered by impact-per-day)#

Positioning / marketing (non-code, runs in parallel)#

These don't need a release version — they live on the BITS site + sales copy. Listed here so they ship alongside the features that justify them.


0.19.x — Reconciliation, investment analysis, ops debt ✅#

Pulled forward the surviving deferred items from the 0.18.x competitive read plus the operational-debt list that had been parked in a "Beyond v0.19+" section. Ordering is by impact-per-day so the early wins compound.

Planned slices (ordered by impact-per-day)#


0.20.x — Agentic AI moat ✅#

The single biggest unexploited lever in this space. SmrtCash already has 17 audit-logged tool calls in the assistant; no competitor has more than a handful, and Monarch's 2024 "Ask Monarch" is the only one out there at all. This series pushes the assistant from "answers questions" → "does the work" → "proactively flags and suggests."

Re-cast positioning: this is the differentiator post-pivot. We don't compete on "your hardware" anymore — we compete on what the assistant does on your behalf.

Planned slices (ordered by impact-per-day)#

Stretch / TBD#


0.21.x — Universal customer asks ✅#

These were the loudest unmet asks on r/MonarchMoney, r/Simplifi, the YNAB forums, and Empower reviews. None of the cloud PFM competitors had shipped them at the time; that was our opening. Shipped end-to-end on 2026-05-27.

Shipped slices#

Verification#

Per-slice walk-throughs are in docs/VERIFY_0.21.x.md — set-up, click path, expected outcome for each slice. Use that doc to confirm the above shipped as designed before declaring the arc done.

Stretch (deferred from this arc)#

Stretch / TBD#


0.22.x — Production launch readiness ✅#

The series that gets us to a live, paying-customer production deploy. Goal: production deploy tomorrow. Some items are codeable slices, others are one-time operator workflows captured as runbooks.

Codeable slices#

Operational runbooks (no slice, but tracked)#

These get checked off in the launch playbook, not via a version bump:

Pre-launch sanity gates (must pass before announcing)#


Positioning / marketing (non-code, runs alongside 0.22.x)#


Deferred / external (no codeable slice)#


0.24.x — Scenario expansion ✅#

Goal: Turn /scenarios from a one-trick cash-flow projector into a real life-planning surface. Users come in with specific questions — "should I bump my 401(k)?", "what if we have a kid?", "is a balance transfer worth it?" — and walk out with a numeric answer they can lean on. Each scenario type is its own form + calculator + result panel under a shared hub UI.

Shipped 2026-05-27.

0.24.0 — Scenario hub refactor 🧱 ✅#

Refactored /scenarios into a hub that lists available scenario types and routes each to its own input/result view. The existing cash-flow-with-deltas scenario keeps working (became the "Cash-flow stress test" entry). Per-scenario inputs persist when switching between scenarios.

0.24.1 — Wealth-building scenarios 📈 ✅#

0.24.2 — Debt-payoff scenarios 💸 ✅#

0.24.3 — Life-event scenarios 🌱 ✅#

Follow-on slices that landed in the same arc#

Implementation notes#

Each scenario type lives in web/src/scenarios/<id>.tsx and exports a ScenarioDef: id, title, subtitle, category, defaults, Form, Result. Calculations are pure functions (no API) for every scenario except cash-flow-stress, which needs /api/cash-flow baseline.


0.25.x — Credit-score + retirement scenarios 📋#

Deferred from 0.24.x because both need model layers we don't have yet.

0.25.0 — Credit-score modeling 📊#

A coarse FICO-like model that translates utilization, age-of-credit, hard-pull count, and account mix into an estimated score band (not a number). Even with a simple "your utilization is 65% → band: Fair → likely 600-650" output, the scenario surface becomes:

Open question for this arc: do we ship a hand-rolled model or buy a real score-estimator API (Experian, ScoreSense, etc.)?

0.25.1 — Retirement scenarios 🏖️#

Once we have a real return-assumption model + withdrawal model:

Depends on us having a real Monte Carlo or sequence-of-returns engine, not just compounding curves. Deferred until we know what we want there.


0.26.x — Scaling 📋#

Sequencing note: Originally drafted as 0.23.x (the next arc after 0.22.x), renumbered to 0.26.x because feature work (0.24.x scenarios shipped, 0.25.x credit/retirement next) is taking priority — we're still nowhere near the capacity ceiling that justifies architectural moves.

Goal: Stop reaching for "stand up a new server" as the answer to "we're running out of capacity." Build the runbook for vertical upgrades and the architecture for horizontal scale so growth doesn't require an emergency migration.

The trigger for this series is the /health → Server capacity widget (0.18.13). Once that widget says "prepare a replacement environment by [date]," we want the migration to be a 1-hour boring procedure, not a project.

0.26.0 — Vertical-scale runbook ⬆️#

Document and rehearse the cheapest answer to "we need more capacity": bigger box. Until traffic justifies the architectural complexity of horizontal scale, vertical is the right move.

Deliverables:

Expected lifespan of vertical-only scaling: probably good through low-thousands of paying tenants. Beyond that → 0.26.1+.

0.26.1 — Stateless app + shared session store ↔️#

Today the app is single-instance: one container, in-memory rate limit state, file-system attachments. Sharing instances behind a load balancer requires eliminating per-instance state.

Deliverables:

0.26.2 — Attachments to object storage 📦#

Today receipts live on the app's local filesystem encrypted with the per-tenant DEK. That's a hard ceiling on horizontal scale because every app instance needs the same files.

Deliverables:

0.26.3 — Postgres read replica + connection pooling 📊#

Once we're running N app instances, the DB becomes the next bottleneck. Two moves:

Deliverables:

0.26.4 — Multi-region (optional, customer-driven) 🌎#

Probably 2027+. Only worth doing once we have measurable EU/AU/AP customer base. Sketch only:

What's deliberately out of scope (and why)#


This roadmap is a living document. Phase scope and ordering may shift as the product is used and priorities become clearer.