Tax that stops being a surprise.
- My role
- Co-founder, Product & Design
- Type
- Live product
- Period
- 2026
- Stack
- Next.js · Supabase · Tailwind · Stripe · Claude API
From April 2026, HMRC requires every UK sole trader over £50,000 to file quarterly through approved software. The tools waiting for them are built for businesses with payroll and an accountant on retainer, not for one person doing the work and the books at eleven at night. I co-founded Freelax to be the different shape that gap needs, and I own everything you can see.
Outcome
Live and taking sign-ups. Invoicing, expenses, the tax engine, IR35 and the Self Assessment pack all work. MTD submission is built against HMRC's sandbox and waiting on recognition.
Freelax tells you what you owe. Sometimes it will be wrong, and when it is wrong, the letter from HMRC arrives at the user's house, not ours. That fact sat with me the whole build.
A deadline written into law
Most products get built because someone had an idea. This one has a date.
From April 2026, HMRC requires every UK sole trader earning over £50,000 to file quarterly, through approved software. Not encouraged. Required. Spreadsheets stop being legal, and a few hundred thousand freelancers who have been getting by on a folder of receipts have to go and pick a tool.
So I went and looked at what they would find. Xero. QuickBooks. Good products, all of them built for a business with employees, a payroll run and an accountant on retainer. A freelance designer opens one of these and is asked to set up a chart of accounts. She does not want a chart of accounts. She wants to know if the £400 laptop counts, and what she owes in January.
That is the gap. And it is not filled by building a smaller Xero. It is filled by building something a different shape — designed around one person doing the work and the books at the same time, usually at eleven at night.
Built for one
A few weeks in, we had the conversation every product team has. What happens when our user grows?
It is a reasonable question. A freelancer hires their first contractor, then their first employee, and now they need payroll. If we do not build it, they leave. Every accounting product on the market has answered that question the same way — follow the user, add the feature, keep them.
We said no. Payroll stays out.
We did not throw payroll away. It is a separate product, if we ever build it — because the moment someone has employees, they are no longer the person this interface was drawn for.
What that decision bought us is everywhere in the app. No chart of accounts. No journals. No nominal codes. No Employees tab sitting there empty, quietly telling you this software was meant for somebody bigger than you.
Accessible without flattening the design
I ran an accessibility audit expecting a short list. It came back with 182 contrast failures.
So I started fixing them, and that is when the real problem showed up. The palette is Deep Forest and Cream. Soft, quiet, deliberately low contrast, because the whole point is that this product should not feel like a tax form. The obvious way to pass a contrast check is to darken everything — and every time I darkened something, Freelax stopped looking like Freelax.
I sat with that for a while. Calm clarity is one of our four brand pillars. There is no version of this where I ship an accessible app that has quietly abandoned the thing it promised.
Then I made sure it could not quietly come undone. Twelve scripts run on every build and break it if anyone hand-rolls a button, a stat card, an alert or a font size instead of using the system. Including me, at midnight, in a hurry.
Accessibility that depends on someone remembering does not survive a deadline. Accessibility that fails the build does.
An interface that tells the truth about its own uncertainty
Freelax tells you what you owe. Sometimes it will be wrong, and when it is wrong, the letter from HMRC arrives at the user's house, not ours.
That fact sat with me the whole build. The question was never whether to add disclaimers — it was how to be honest about uncertainty without the product sounding like it does not believe itself.
Three things came out of it. Disclaimers became a component with variants, not a paragraph somebody remembers to paste in. Anything the AI writes wears a visible AI-generated — please review flag. And every AI surface writes forward, softly: worth checking, you may have missed, tends to. It suggests. It never delivers a verdict.
The disclaimer also sits inside the card it qualifies, not at the foot of the page. It qualifies that claim, at the moment the user reads it.
We nearly called it an audit
I am glad we did not.
Think about what that word does to a freelancer. An audit is something done to you. Afterwards. By someone going through your year looking for what you got wrong. That is precisely the feeling this product exists to take away.
A copilot sits beside you for the whole flight. It is there in April, not only in January. It tells you what is coming instead of what went wrong. And it carries the actual promise underneath all of this: you do not have to pay someone £600 a year to keep you out of trouble, because something is already watching with you.
What I got wrong: one page holding everything
My first version of the tax page showed everything.
Tax owed. Set aside. Take-home. Deadline. VAT position. Profit and loss. All four MTD quarters. The tax pot. Payments on account. One page, nothing hidden, no clicking around.
I was proud of it. Nobody should have to hunt for their own money.
Then I opened it as a user would, and it was a wall. Numbers everywhere, all shouting at the same volume. The single most important figure on the page — what you owe — sat there with exactly as much weight as a VAT box nobody looks at. I had built the opposite of calm and called it thorough.
Showing more is not the same as being clearer. That is the entire product, in one mistake I had to make first.
IR35 lives on the engagement, not in a tool
IR35 decides whether a contractor is genuinely self-employed or an employee wearing a different hat. Getting it wrong is expensive, and it is decided per engagement — not once, for a person.
Which is why the questionnaire is not its own page. It lives on the project, and the answer is stamped there. A contractor with six clients gets six assessments, because that is the truth of their situation. One overall verdict would be a comforting lie.
Each question also shows what it is worth — HIGH or MED. The weighting was always in the scoring; I just stopped hiding it. Now you can see which of your answers is actually deciding the outcome instead of treating fifteen questions as if they matter equally.
Two founders, one codebase
There are two of us, and neither of us is an engineer by training. So we drew a line through the repository instead of through a backlog. components/, app/, styles/, public/ are mine. Tax logic, API routes, database schema are his.
It means I design against numbers I did not calculate, and it means our disagreements arrive as pull requests rather than as opinions in a call.
It is also half the reason those twelve build scripts exist. They hold the system in place so neither of us has to police the other.
How I'd know if this worked
Freelax is live, but it is early. I have no results to wave at you yet. What I do have is a clear idea of what would tell me I was right:
- Time to first invoice. Five minutes is the target. It is the cleanest test of whether "built for one" actually removed friction or just removed features.
- Whether anyone touches the tax pot. Telling someone what they owe is the easy half. Getting them to put money aside in October is the product actually working.
- How often the copilot gets dismissed. If people close it without reading it, my careful hedged voice has tipped over into noise.
- Whether the build ever fails on contrast. A system that never catches anything is either perfect or not actually running.
Live, and not finished
Freelax is in production and taking sign-ups today. Invoicing, quotes, expenses, mileage, the tax engine, IR35 and the Self Assessment pack all work.
MTD submission is built against HMRC's sandbox and waiting. It unlocks when we are recognised, and recognition needs the company formed first — which makes it the longest thread we are pulling.
Don't take the case study's word for it. Go and use the product.