Case Study · obolus.at
Accurate to the cent, year after year.
How to build a salary and tax platform that absorbs a new body of rules every January without being rebuilt, and can cite every number it shows.
- Role
- architecture, backend, frontend, operations
- Team
- 1
- Since
- 2026
- Stack
- Vue · Nuxt · TypeScript · Nitro · SQLite · Storyblok · Kor · Docker · Traefik · GitLab CI
What the job actually was
The constraint
Austrian income tax is not a formula, it is a body of rules that changes every January. The incumbent is a free calculator run by the Chamber of Labour, and people trust it. Under those conditions a new entrant has exactly one way to be worth using at all: be exactly right, show the derivation, and be current before anyone else is.
The decisions
A rules-based engine with a versioned rate registry, one version per tax year. Computation runs in the browser, so no salary figure is ever transmitted. And editorial content is derived from the same registry as the engine, which makes it structurally impossible for a published number to drift from a computed one.
The discipline
Every rate, threshold and contribution base is cited to its primary source. When the ministry publishes next year's figures, a single registry version is seeded and the entire site previews the new year: tables, glossary, calculators, FAQ. On 1 January it flips. That is the work that makes the difference in December, while everyone else is still updating content by hand.
The operation
EU hosting, CI/CD, monitoring, updates, and the annual re-audit against the new publications. Built and run, not built and handed over. That difference is why the architecture looks the way it does: you build differently when you are the one doing the next five January rollovers.
One registry, and everything reads the same version
The published number and the computed number come from the same version. Divergence is structurally impossible.
What carries over to your project
Three things, and none of them depend on the subject being tax. First, correctness discipline under a regulatory constraint: the provenance and version of every number are part of the architecture, not of the documentation. Second, an SEO surface that is generated rather than written, so content and computation cannot drift apart. Third, a platform layer that makes a very small team a viable way to deliver a product of this size and operate it for years.
If this is the shape of your problem
An email costs you five minutes, an audit costs you access and 72 hours. Either tells you more about how we work than another case study would.