I Vibe-Coded a Retirement Planning App With a Team of AI Agents. Here's What I Built — and Why It's Open Source.
Horizon is a bilingual, open-source retirement planning platform built by a multi-agent AI dev team — real pension math, real users, real stakes.
By Ian Xie
On February 2, 2025, Andrej Karpathy tweeted about a new way of building software and gave it a name: vibe coding.
The developer community promptly exploded. Many people, myself included, installed AI tools, started building projects, learned by doing, and eventually began teaching others how to do it. The past year has been one long, thrilling experiment: tools appearing everywhere, iterating at absurd speed. Sometimes I genuinely cannot tell whether I'm spending most of my time building projects, or debugging the tools that are supposed to build the projects.
But every project until now had the same premise: I was learning. The goal was to build intuition, not create impact. Figure out the tools, stress-test the workflows, practise until I was good enough to teach others.
Horizon is the first one where that's not true. It's the first time I've pointed everything I've accumulated at my actual domain — HR Tech and personal financial planning — and held it to a production standard instead of a learning one. Real pension math. Real users. Real stakes.
Horizon is a retirement planning platform for domestic and global users that calculates your Day1: the specific date when your savings, spending, and life goals truly align, and can sustainably support a life of freedom.
It's live. It's bilingual. It has real pension math. And it's open source.
What is Horizon?
Have you ever tried to figure out your own pension? Search for the policy, dig through a government document, piece the formula together on a spreadsheet — and still not be sure you got it right.
I work in HR technology and analytics. You'd think I'd have an advantage. I don't — and neither does anyone else I ask. Family, colleagues, friends: almost no one can tell me with confidence when they'll actually be able to retire. The information exists, but the tools to make sense of it don't. At some point I stopped waiting for someone else to fix it and built the thing that should already exist.
Horizon starts as a pension calculator — one that runs the actual formula for your country, province, and career history. But the bigger goal is a full retirement planner: something that helps people retire earlier through smart, careful wealth management.
Horizon Day1 is the specific calendar date when your portfolio can sustain your target lifestyle, accounting for:
- your actual savings rate and current nest egg
- your country's pension system (China's social insurance, CPF Life, MPF, Super, Social Security)
- inflation, investment return scenarios, and a FIRE-style multiplier
- what your money needs to do, not what it theoretically could do
"From pension math to your freedom date."
The site runs in two flavours:
| CN site | Global site | |
|---|---|---|
| URL | cn.horizone.cc.cd | horizone.cc.cd |
| Language | Chinese | English + ZH toggle |
| Pension | China social insurance, provincial wage index, 2025 reform | SG CPF Life, HK MPF, AU Super, US Social Security |

The hero — a live example of a Singapore user retiring in 2055, saving 5.7 years over the statutory age, with CPF Life income already factored in.
This is my first production vibe-coded project
Over the past year I've shipped a few things — multi-agent experiments, full-stack prototypes, tools for my own use. I've taught people how to do it. I've developed real opinions about what works and what doesn't.
But I always had an out. These were learning projects. If the architecture was a bit rough or the scope got cut, that was fine — it was a prototype. No one's retirement date depends on a prototype.
Horizon had no such out. The codebase is full-stack — Next.js 14 App Router, TypeScript, Supabase Postgres, Clerk auth, Vercel — and from the first commit it was held to a production standard, not a learning one.
I didn't write it in the traditional sense. I managed it. I was the planner and the architect, and I had a team of AI agents doing the implementation. And I still learned a ton of new things building it.
This is the part that makes Horizon genuinely interesting to me as a technical project.
The real flex: a multi-agent dev team
I could have vibe-coded this entire project in a single tool, in a single session. I deliberately chose not to. The goal was to design and stress-test a real multi-agent, multi-tool handoff workflow — different models, different environments, coordinating asynchronously through nothing but markdown files in the repo. Part workflow experiment, part architecture stress-test. Here's how it looks:

No Slack. No standup. Just markdown task files in the repo and async commits.
No agent waits on another. Each one reads their tasks/[name]/current.md, does the work, commits, and fills in an Agent Result section. I review the commits, push to production, and write the next batch of tasks.
The whole thing is in the repo. Task files, agent results, the full sprint rhythm — all version-controlled alongside the code.
The part that surprised me: having different models with different capabilities in different roles actually matters. Claude plans architecture and produces exact code specs with full context. A VSC-based agent picks those specs up and executes — sometimes a small focused UI change, sometimes a large multi-file feature — depending on the scope. A CLI-based agent handles data plumbing and verification tasks where the instructions just need to be followed precisely.
You don't need the best model for every job. You need the right model for each job.
What makes this different from most multi-agent demos: Most frameworks (LangGraph, AutoGen, CrewAI) hide the orchestration layer behind an API. Here, the coordination primitive is the repository itself — markdown task files are the interface, git commits are the deliverables, and the human review step is the explicit quality checkpoint. The whole system is auditable because the whole system is just a repo.
The task files aren't just instructions. They contain TypeScript diffs, exact before/after code patterns, function signatures, and build verification steps. That's structured prompt engineering at the system architecture level — and it's why a smaller model with less context can still execute reliably when handed a well-formed task.
The management lesson hiding in the workflow
The same skills that make this dev setup function are exactly what you need to lead AI transformation in any org. Decompose complex problems into agent-appropriate units. Coordinate without micromanaging. Maintain quality at the review layer. Deliver auditable results. The repo is the org chart.
I've been thinking about this a lot. The reason most enterprise AI transformations stall isn't a technology problem — it's a coordination and governance problem. The person who can architect the workflow, set the quality bar, and keep the humans and the models pointed in the same direction is the role that's consistently underhired. That's the role I want to talk about.
The HR Tech angle that I care about most
Vibe coding is a means. The actual product is in an interesting space I keep thinking about: the intersection of AI, personal finance, and HR Tech.
Horizon runs the actual pension math for your country and career. Here's what's under the hood:
China (社保): The full two-component formula — 基础养老金 linked to province social average wage (社平工资), personal account balance divided by disbursement months. We track the 2025 retirement reform by birth year and gender category. We compute the contribution index (缴费指数) continuously from your actual salary relative to the provincial average — not a dropdown of tiers.
Singapore (CPF Life): A full year-by-year simulation. Age-banded contribution rates across 5 age groups. Tiered interest rates (2.5–5%). SA→RA transfer at 55 capped at the cohort Full Retirement Sum. Payout interpolated from CPF Board's official reference table. Three plan types. Deferral bonus.
Hong Kong, Australia, US: Proportionally less complex but real formulas nonetheless — MPF fund returns, Super Guarantee rates, SS bend-point formula, Medicare bridge.
Taking China and Singapore as examples — the same planner section, two pension systems, two languages:


Why open source?
Honestly, because I can't build all of this myself.
The pension systems I've modelled are the ones I understand or can research. But there are 195 countries. UK State Pension. Japanese Kokumin Nenkin. Korean NPS. Canadian CPP. French retraite.
Every one of these has someone who knows it better than I ever will — HR professionals, actuaries, expats who've had to figure it out the hard way. I want those people in the repo.
And on the developer side: if you've been looking for a real-world Next.js 14 + Supabase + multi-agent infrastructure project to dig into, Horizon is about as non-trivial as it gets. The codebase is clean (I like to think). Every algorithm is documented in docs/ALGORITHMS.md. Every architectural decision has a rationale.
You don't need to be a developer to contribute. If you're an HR professional who knows a pension formula I got wrong, open an issue. If you know the Canadian CPP calculation cold, write a formula spec in plain English and I'll wire it in.
What's live right now
- ✅ CN and Global dual-site with subdomain routing
- ✅ 5 country/region pension systems with real formulas
- ✅ EN/ZH bilingual toggle
- ✅ Social media share cards
- ✅ Local browser save for anonymous users + Supabase cloud save for registered users
- ✅ Day1 engine: deterministic month-by-month portfolio simulation
- ✅ Budget templates (Low / Balanced / Full)
- ✅ Scenario presets (Base / Optimistic / Stress) with assumptions panel
The budget templates deserve a closer look — three lifestyle paths, every slider live, scenario toggle right there:

Low / Balanced / Full — pick a path, adjust the parameters, watch your Day1 shift in real time.
The nav tells most of the UX story in one bar — language toggle, contrast mode, dark/light theme, optional sign-in:

No account required to use it. Sign in only if you want cross-device sync.
In progress (Phase 3):
- 🔄 CPF plan selector (Standard / Escalating / Basic), deferral bonus, existing balance inputs
- 🔄 MPF and Super fund-type selectors
- 🔄 CN social housing fund (公积金) balance input
- 🔄 Monte Carlo probability cone in the UI
Go try it
Global site (EN/ZH): horizone.cc.cd CN site (ZH): cn.horizone.cc.cd GitHub: github.com/LyceumX/Horizon
If you're a developer and want to run it locally:
git clone https://github.com/LyceumX/Horizon
cd Horizon
npm install
npm run dev
Copy .env.example → .env.local, fill in your Supabase keys, and you're live.
What I actually learned
Build in production mode from day one. Think of the end at the beginning: would this hold up under real users? Could a stranger contribute without asking me questions? Would the formulas hold up against real policy documents and real edge cases? That framing changes every decision, from how you name a variable to how you structure state.
Architecture is a gift to your future collaborators. A clean structure, documented algorithms, a clear separation of concerns — these aren't polish, they're the difference between a project that grows and one that quietly dies. Horizon is designed to be extended by people I've never met. New countries, new pension systems, new contributors — the structure should invite that, not resist it.
Put your skills into something that genuinely matters to people. The most motivating shift: when the work touches someone's real life. Pension math is abstract until it's your decade, your money, your freedom date. Building something that could help people make better decisions about their retirement carries a different weight than building to practise a skill. It sharpens the work.
Open source as a mindset, not just a licence. Making the repo public isn't the point. The point is building with the assumption that someone will read, question, and extend your work. That assumption changes how you write code, how you document decisions, how you design for extensibility. It makes you a better engineer.
If you're a people leader thinking about where AI transformation actually stalls — and what it takes to close that gap — I write about this space regularly. Follow along, or reach out.
Come play with it:
- ⭐ Star the repo: github.com/LyceumX/Horizon
- 📖 The full build log and my other projects are on my blog: ian.us.ci
- 💬 Open an issue if you spot a formula error (there will definitely be some)
- 📬 Reply in the comments if you want to contribute — developers, actuaries, HR professionals, all welcome
The pension system for your country is probably missing. Let's fix that together.
Ian · May 2026
