CodeKitHub
Sådan holder vi vores skatte- og lønberegnere fra stille og roligt at blive forældede

Sådan holder vi vores skatte- og lønberegnere fra stille og roligt at blive forældede

Udgivet 4. aug. 2026

Hver eneste beregner på dette site, der berører skat, sociale bidrag eller mindsteløn, har den samme fejltype: den er korrekt den dag, vi bygger den, og så opdaterer en regering en sats et halvt år senere, og værktøjet begynder stille og roligt at give forkerte svar. Ingen får en fejlmeddelelse. Siden bliver ved med at virke præcis som før — den er bare forkert nu, og selvsikkert forkert.

Det er et værre resultat end slet ikke at have værktøjet. Så vi byggede et system specifikt for at fange det.

Problemet med “vi husker nok at tjekke”

Den oplagte løsning — “bare tjek tallene med jævne mellemrum” — skalerer ikke. Vi vedligeholder nettoløn-, socialbidrags- og lønberegnere på tværs af et halvt dusin lande, hver med sine egne skatteklasser, bidragssatser og årligt justerede grænser. Gang det med, hvor mange måneder der går, før nogen tænker på at dobbelttjekke, og det ærlige svar er: før eller siden bliver noget forældet, og ingen opdager det, før en bruger gør.

Hvad vi byggede i stedet

En registerfil lister hvert eneste hardkodede officielle tal i hver beregner: hvilken fil det ligger i, hvad tallet repræsenterer, hvor den officielle kilde er, og hvor ofte det realistisk forventes at ændre sig (nogle værdier flytter sig hver januar, når et nyt skatteår starter; andre ændrer sig kun, når en lov ændres, hvilket er uforudsigeligt, men sjældent).

Et planlagt job kører ugentligt, tjekker hvilke poster der skal gennemgås ifølge den tidsplan, og for hver enkelt:

  1. Søger den officielle statslige kilde efter den aktuelle værdi
  2. Beder en sprogmodel om at udtrække det specifikke tal fra søgeresultaterne — intet andet, bare tallet og et konfidensniveau
  3. Hvis modellen er sikker, og tallet har ændret sig, indsætter den det som en bogstavelig, verificeret tekstudskiftning i koden (aldrig en fri omskrivning — modellen får ikke lov til at improvisere den omkringliggende logik)
  4. Kører et fuldt build for at bekræfte, at intet er gået i stykker, før noget committes
  5. Hvis buildet fejler, bliver ændringen automatisk rullet tilbage og markeret til gennemgang af et menneske

Det hele er designet omkring et enkelt princip: automatiseringen må gerne opdatere et tal, men den må aldrig gætte. Hvis den ikke kan finde et sikkert svar fra en officiel kilde, gør den ingenting og rapporterer det tydeligt, i stedet for at lade et plausibelt udseende, men forkert tal blive stående.

Uafhængig af ét enkelt værktøj

Jobbet selv kører på infrastruktur, der er uafhængig af én enkelt leverandør eller konto — hvis én del af pipelinen går ned, stopper hele systemet ikke med at virke, det falder bare tilbage til en anden vej til at udtrække tallet. Den redundans betyder mere her end i de fleste automatiseringer: en skatteberegner, der er forkert, er aktivt skadelig på en måde, som fx en defekt memegenerator simpelthen ikke er.

Hvad betyder det for dig

Hver beregner, der er dækket af dette system, viser en dato for “officielle data verificeret” direkte på siden, adskilt fra den “senest opdateret”-dato, du måske ser på en almindelig indholdsside. Hvis du nogensinde ser den dato se mistænkeligt gammel ud, er det værd at gøre os direkte opmærksomme på — det betyder som regel, at det automatiske tjek er stødt på en kilde, den ikke kunne parse, ikke at vi har glemt den.

Prøv det

Dette er enkeltsprogede værktøjer, hver især bygget specifikt til sit eget lands regler, så linkene nedenfor åbner på det pågældende sprog:

← Tilbage til bloggen