AI in Action · Jul 7, 2026 · 14 min read
AI in Action: Building RetireCheck with Cursor
How practical engineering, domain architecture, and AI-assisted development shipped a production retirement calculator — from wizard UX to Monte Carlo projections.
I built a production-ready app in about a day of focused effort, spread over a weekend. I didn't write most of the code — but I made every architectural decision. That distinction is the whole story.
RetireCheck went from empty repo to deployed production app — frontend on Vercel, API on Render, tests and CI green — through a workflow I call intent-driven vibe coding: rules plus one-line prompts, with the pipeline enforcing quality. Vibe coding gets you a demo. Intent plus guardrails gets you production.

The project
RetireCheck is a free US retirement calculator that answers one question people quietly worry about: will your money last? A four-step wizard collects your situation — no sign-up. The backend runs a 1,000-scenario Monte Carlo simulation, compares Social Security claiming ages, and projects federal and state taxes, RMDs, and Medicare IRMAA surcharges year by year.
Stack: Next.js 16 + TypeScript + Recharts (Vercel) · ASP.NET Core with a pure C# domain library (Render) · xUnit · GitHub Actions CI.

Context engineering before prompts
Before asking Cursor to write a single component, I wrote the rulebook. The highest-leverage line in the repo:
All financial math lives in RetirementCalculator.Domain. No calculation logic in React components or API controllers.
That boundary keeps every tax bracket, Social Security adjustment, and Monte Carlo run in a pure, unit-testable C# library. The React layer stays a thin rendering shell — so there is no “AI spaghetti” where a tax formula quietly lands in a component.

Two features, prompt to production
Monte Carlo fan chart. One sentence — “Replace the pie chart with a Monte Carlo fan chart — shaded P10–P90 band, median line, open by default” — produced a Recharts composed chart. Review, typecheck, tests, ship.

One-click sample plan. Most visitors from a social feed will not fill a four-step form. A sample-plan button wires a realistic profile through the same API path — still no calculation logic in the UI.

Where the engineer stayed in the loop
- Architecture — domain boundary, API contract, Next.js proxy to the backend.
- Test strategy — xUnit on Social Security math and validation; CI on every push.
- Review — every diff read before merge. The AI assistant proposes; git and CI dispose.
Takeaways
- Write rules before prompts.
- Isolate business logic in a pure, testable layer.
- Review diffs — never trust-and-paste.
- Ship something real; deploys teach.
- Your value moves up the stack: boundaries, contracts, tests, taste.
Closing
RetireCheck was the first full pass of the AI in Action loop: Build → Validate → Improve → Document → Share. SleepCheck follows the same philosophy in a different domain — proof that the methodology travels.
AI accelerates software delivery. Experienced engineering judgment shapes the final product.