A local-only Monte Carlo retirement simulator, built to answer one real question with numbers instead of fear: given my actual accounts, spending, and taxes, what's my probability of never running out of money - and what's the most I can safely spend per year?
This started after leaving a job, with the same question everyone in that position actually has: not "what's a 4% withdrawal rate," but "can I really do this, with my numbers, my accounts, my taxes?" Generic retirement calculators answer a generic person. This answers one household.
Spending is modeled as what you actually live on, after tax - the engine grosses up each withdrawal to cover the tax owed on it, so the number you enter is the number you spend, not a pre-tax abstraction. Guardrails cut spending automatically when a plan drifts off course, the same way a real financial plan would, never letting "success" mean anything less than covering essential, non-discretionary spending first.
Priorities, in order: correct, pretty, fast - deliberately in that order, because the entire point of the tool collapses if the math is wrong. Every tax and financial function's docstring states the rule and its source; a deterministic single-path engine exists purely as a readable reference the vectorized Monte Carlo engine is tested against, numerically, for exact equivalence.
The math is never AI. The engine is pure NumPy and stdlib - deterministic, auditable line by line. The advisor is a separate layer on top: a RAG-grounded chat that reads the engine's already-computed output and, only with explicit consent, can propose one specific change back into the plan.
A retirement plan is genuinely sensitive financial data. The simplest way to never leak it from a server is to never let it reach one.
There is no server-side database. Every plan lives in the browser's own IndexedDB and the backend forgets it the instant it responds. The one thing that is server-side is the advisor's own reference library - synthetic retirement-planning material, never a real household's numbers.