I found their bug. Then I found mine.
An open tax engine for Swedish limited companies: a language model reads your situation and picks the rule, then plain code does the arithmetic and cites the statute.
- built with
- TypeScript
- Bun
- MCP server
- 978k-case test suite
- AGPL-3.0

Open source, AGPL-3.0. Free, and it stays free.
I assumed I was wrong.
whyclose
I assumed I was the one who was wrong. I wasn't — some were off by 100 000 kr. And the ones that were right still just handed you a number, never a plan.
Nothing fuzzy touches the math.
whyclose
A language model reads your situation and picks the rule. Plain code does the arithmetic, with the statute cited on every value. Same input, same answer, every time.
The bug was mine.
liveIt was up, and being used.
Free, open, no signup. Thin analytics and no accounts, which mattered later.
found275 of 290 municipalities were wrong.
It had been using a default rate — 32,38% — for most of Sweden instead of the real municipal one. Fifteen municipalities were correct. Every other calculation was off.
unknownI couldn't tell who it had reached.
No accounts, thin analytics — maybe twenty people. So I assumed it was all of them.
mailedI wrote to everyone before I had a fix.
And named exactly which fifteen municipalities were safe, so nobody had to distrust a number that was already right.
offlineThen I took the whole thing down.
Until all 290 municipalities carried SCB-verified rates. Then I mailed again to say it was back.
Correct rates existed for Stockholm, Göteborg, Malmö, Uppsala, Solna, Täby, Nacka … and six more.
ALL OTHER municipalities were affected.
Outside the list? Redo your calculation when I email that the fix is live. On it? Your figures are already correct.
whyclose
Naming who was safe was the point. A vague apology would have made everyone distrust a number that was, for fifteen municipalities, already right.
What it has to survive.
against Skatteverket
across all of them
rate SCB-verified
now or later
Being wrong here costs somebody money.
whyclose
I won't charge for that, and tax raises the stakes further. So it stays open, free, and checked with your accountant. The licence makes that permanent, not a promise.
The whole thing, in five lines.
- the gapNobody had built a tax tool for a Swedish limited company that gave you a strategy. The calculators that existed handed you a number — and some were wrong by 100 000 kr.
- the buildA language model picks the rule, plain code does the arithmetic, and every value cites the statute it came from.
- the proof978 000 test cases against Skatteverket, 0 kr deviation.
- the mistakeMine was live: a default tax rate for 275 of 290 municipalities. I mailed every user before I had a fix and took the whole thing offline until it was right.
- the callIt stays free. Being wrong here costs somebody money, and I won't take payment for that.