Shipping small: a financial planner for my own life
Why I built an income-vs-lifestyle timeline planner for myself, and why shipping small unpolished tools beats polishing in private.
- Date
- Status
- published
- Tags
Every few years I get the same itch: map out the next decade of income against the life I actually want to live, and see whether the lines cross. Spreadsheets handled it, barely. But every scenario lived in a separate file, every assumption was a formula I had already forgotten, and every revision meant archaeology. So I did what I always do when a tool annoys me enough — I built the tool.
What it does
It is an income-vs-lifestyle timeline planner. You lay out income streams and life costs along a timeline and see the shape of your future at a glance: when the margins are comfortable, when they are thin, and which decisions move the lines. It supports JSON import/export so scenarios are just files I can version and diff, CSV export for the spreadsheet people in my life, and optional capital-tracking rows for watching a lump sum evolve alongside the flows.
- React + Vite + TypeScript, deployed as a small static app.
- JSON import/export — scenarios are portable, diffable, and mine.
- CSV export — because the future still gets discussed in spreadsheets.
Why I shipped it small
The first version took a weekend and it shows. No onboarding, no accounts, no clever defaults. The old me would have sat on it for months, adding features for users who do not exist. The current me has learned the same lesson three years in a row: tools polished in private rot, and tools shipped rough get used. I have opened this planner more times in the weeks since I shipped it than I opened the spreadsheet in the years before, because it loads fast, does one job, and gets out of the way.
There is also a subtler benefit I did not expect: shipping small builds the muscle for shipping at all. Every weekend project that goes out the door makes the next launch a little less dramatic. The planner was not the most impressive thing I could have built — it was just the next thing I finished, and finishing is the feature that matters.