Software for a Market of Two

Every budgeting app I have tried failed for the same reason. It was built for the average household. So my wife and I built the one for ours - selfhosted, agent-native, gamified.

Share
Software for a Market of Two

Every budgeting app I have tried failed for the same reason. It was built for the average household. And there is no average household - there is mine, there is yours, and past "money comes in, money goes out" the two have almost nothing in common.

A product for millions of users has to assume the middle. It cannot know that we split some costs and not others, that one of us tracks business trips for reimbursement and the other doesn't, that we care about the running cost of two specific cars and a set of utility meters nobody else on earth shares. So it offers a category called "Other," a generic budget, and a nudge to upgrade. The gap between what the app assumes and what our life actually looks like is exactly the gap where every good intention to "finally get on top of the finances" quietly dies.

So a few weeks ago my wife and I stopped looking for the app and built the one for our household. Not a household. Ours.

Between end of June and today - roughly three weeks - it grew to 210 commits, put together with Claude Code in evening sessions after a full day of work. 536 tests, because I did not want a tool I have to distrust the moment it tells me what we can afford. Laravel, Filament, SQLite, running on a small server in our own four walls. None of that is the interesting part. The interesting part is that building something this specific to two people used to be economically insane, and now it isn't.

That is the actual claim I want to make, and I want to make it at its real size and not bigger. AI-augmented development did not turn me into a better engineer. It made bespoke software cheap enough that the audience can be a single household. Custom software on demand - built for exactly the people who will use it, and nobody else.

Three decisions fall straight out of that.

Selfhosted, because it is our bank data. Not "privacy" as a marketing checkbox - it simply never made sense to hand the most intimate record of two people's life to a third party in exchange for a budgeting feature. It runs at home. The data stays where the people it describes live.

Agent-native, because our household already runs AI agents. The tool exposes 27 MCP tools, so an agent can ask what is left in a budget this month, where the cashflow stands, what the net worth is, what the forecast says - or photograph a receipt and have it read and filed. Write access is token-gated, and there is one house rule I did not bend once: every write goes through the MCP, never straight into the database. The categorization behind it is deliberately boring, in the right order - a deterministic merchant rule first, then a learned cache, and a local LLM on our own hardware only as the last resort. No transaction leaves the house to be understood.

And gamified, because categorizing transactions is where every finance habit dies. Nobody keeps doing the tedious part on discipline alone. So the tedious part became a game: a "clean up Sonstiges" mode - Sonstiges being the catch-all pile, the junk drawer every budget quietly fills up - that serves the uncategorized merchants in random order, and every time you assign one, you are not just tidying a row, you are teaching the system a rule it applies forever after. There is a verify mode for the categories the machine guessed, an undo for the last move, and - the part that actually works on us - a points dashboard with a yearly highscore, my wife against me, reset every New Year. It is faintly ridiculous. It is also the reason the "Other" pile is small for the first time in my life.

None of this is a feature list I set out to write. It is just what covering one specific life ends up looking like: bank statement imports, receipts, budgets, contracts and subscriptions, utility meters and bills, two cars and their mileage, payslips, a portfolio, savings goals, business-trip reimbursements. Not because a product manager put them on a roadmap - because they are the moving parts of our actual finances, and nobody else would have to carry a single one of them.

One honest side note, because this is exactly the part that gets oversold everywhere else. This works today for local, selfhosted, personal software that you build for yourself. It does not translate to a public product, and I am not going to pretend it does. There is no multi-tenancy. Nothing is hardened for the open internet. There is no support burden because there are no users to support. The whole thing is full of assumptions that only hold because there is exactly one customer, and I am it. That is not a flaw I am waving away - it is the entire trick. The blast radius is my own household. That is precisely why the shortcuts are safe to take, and precisely why you should not copy the code into anything a stranger will log into.

What I got out of it is unglamorous and worth more than the build itself: the financial overview keeps getting better, and for the first time we have real insight instead of a rough feeling.

Software for a market of two. It will never scale, and it was never supposed to. It just has to fit two people better than anything built for millions ever could - and that turns out to be a low bar, once the software is finally allowed to be about them.