portfolio kammaren
kammaren.nu live

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
Kammaren key art

Open source, AGPL-3.0. Free, and it stays free.

the gap

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.

the rule

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.

then it was my turn

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.

what I actually sent
kammarenbefore the fix existed
Uppdatering: kommunala skattesatser rättas
to: every user · sent in Swedish

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.

the numbers

What it has to survive.

978ktest cases run
against Skatteverket
0 krdeviation
across all of them
290municipalities, every
rate SCB-verified
0kronor to use it,
now or later
why it is free

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.

tl;dr

The whole thing, in five lines.

  1. 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.
  2. the buildA language model picks the rule, plain code does the arithmetic, and every value cites the statute it came from.
  3. the proof978 000 test cases against Skatteverket, 0 kr deviation.
  4. 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.
  5. the callIt stays free. Being wrong here costs somebody money, and I won't take payment for that.
the calculatorOpen, free, and it stays that way.