Rättelser
Siffror och påståenden som varit fel på publicerade sidor — vad som var fel, hur stort, hur det hittades, vad som ändrades och vad som nu hindrar samma fel. 16 poster sedan 31 juli 2026: 12 hittade vid egen kontroll, 4 vid extern granskning. 11 av dem har lett till en automatisk kontroll som stoppar publicering om felet återkommer.
Vad som hamnar här
En felaktig siffra, etikett eller uppgift som stått på en publicerad sida. Inte omformuleringar, designändringar eller ordinarie datauppdateringar. Loggen börjar när sajten började föra en — äldre rättelser finns i versionshistoriken men rekonstrueras inte här. Hittar du ett fel: mejla info@velja.se, så rättar vi och skriver in det.
14 augusti 2026 · Upptäckt vid egen kontroll
Integritetspolicyn namngav en annonspartner som Velja inte har
- Var
- /integritet, /elavtal/jamfor
- Vad som var fel
- Integritetspolicyn angav Adtraction Marketing AB som mottagare av personuppgifter, en rättslig grund för affiliate-klick och en varning om deras tredjepartskakor — trots att Velja aldrig har haft något partneravtal och ingen affiliate-länk är aktiv. Jämförelsesidan för elavtal svarade dessutom ”Ja” på frågan om Velja får betalt, i strukturerad data som sökmotorer kan visa.
- Vad som ändrades
- Avsnittet, punkten, klausulen och kakvarningen togs bort. Elavtalsjämförelsen är noindexerad och borttagen ur sitemapen tills det finns avtal att jämföra; dess FAQ och källruta säger nu rakt ut att inga partneravtal finns.
- Vad som hindrar det nu
- Ingen strukturell — policytexten granskas när ett första avtal faktiskt tecknas. · ändring 07061ef
7 augusti 2026 · Upptäckt vid egen kontroll
Startsidans gymnasiekort namngav en skola som listan bakom länken inte kunde innehålla
- Var
- Startsidan → /basta-gymnasium
- Vad som var fel
- Kortet visade den högst placerade gymnasieskolan i en blandad nationell lista över alla program (Ridsportsgymnasiet, 18,9 betygspoäng, enda program NB) ovanför en länk som öppnade en lista per program — med Ekonomiprogrammet förvalt — som strukturellt inte kunde innehålla den.
- Vad som ändrades
- Kortet roterar nu genom de nationella programmen ett i taget och länkar med programkoden, så läsaren landar på den flik vars etta hen just läste. Rankningssidan har medvetet ingen blandad lista.
- Vad som hindrar det nu
- Programparametern är bärande: tas den bort måste kortet ändras i samma commit (dokumenterat i arkitekturguiden). · ändring 72e8c4d
7 augusti 2026 · Upptäckt vid egen kontroll
45 skolenheter som inte undervisar någon visades som aktiva skolor
- Var
- /skola/[slug], /gymnasium/[slug], /kommuner/[slug]/skolor, rankningar, sitemapen
- Vad som var fel
- 30 grundskolor och 15 gymnasieenheter med status ”Planerad” eller ”Vilande” i Skolverkets skolenhetsregister fick fulla sidor, räknades i sina kommuners totaler och publicerades som EducationalOrganization för sökmotorer. Stockholm angavs ha 248 grundskolor där registret känner 246. Osynligt av konstruktion: en planerad skola har inga elever och inget meritvärde, vilket på sidan ser ut som en liten skola vars statistik är sekretessbelagd.
- Vad som ändrades
- Skolregistrets status kopplas nu till varje enhet, och bara ”Aktiv” publiceras. Kumlas två vilande Skogstorpsskolan-enheter försvann och den sammanslagna F–9-enheten kom in.
- Vad som hindrar det nu
- Byggkontrollen lint:status stoppar publicering om en icke-aktiv enhet återkommer. · ändring 41edb8e
6 augusti 2026 · Upptäckt vid extern granskning
Stockholms meritvärde låg över både sina delar — tre siffror, två viktningar
- Var
- /kommuner/[slug]/skolor (huvudmannakortet), kommunernas AI-framtagna skoltexter
- Vad som var fel
- Kommunsnittet var elevviktat (252,4) medan kommunala (245,2) och fristående (242,2) beräknades som enkla medelvärden över skolor — en total kan inte ligga över båda sina delar. Under en och samma viktning är riktningen den motsatta i Stockholm: fristående 259,8 mot kommunala 248,5, och 8 av 70 kommuner med båda huvudmannatyperna byter riktning. Den genererade texten hade berättat omöjligheten som ett fynd.
- Vad som ändrades
- Alla tre siffrorna räknas nu genom en och samma elevviktade funktion, så totalen ligger alltid mellan sina delar. Berörda kommuntexter genererades om.
- Vad som hindrar det nu
- Byggkontrollen lint:weighting kräver att varje kommuns total reproduceras exakt ur skoldatan och ligger mellan sina egna delsnitt. · ändring 846b42d
6 augusti 2026 · Upptäckt vid extern granskning
Ett handskrivet datum stod som ”senast uppdaterad” bredvid nyare data
- Var
- /skola/[slug] och sju andra skolsidor
- Vad som var fel
- Sidorna angav ”Senast uppdaterad: 2026-02-26” som en fast text, bredvid Skolenkäten 2026 och lärarstatistik för ett annat läsår än betygen. Ett datum kan inte täcka blandade årgångar, och det här uppdaterades aldrig.
- Vad som ändrades
- Källraden anger nu två saker: vilket läsår siffrorna beskriver (härlett ur datan själv, per mått) och när Velja senast läste in dem (stämplat av datapipelinen). Lärarkortet anger sitt läsår per rad när måtten skiljer sig.
- Vad som hindrar det nu
- Inga datumliterals på datasidor; datumen genereras. Fångas av kodgranskning, inte av en byggkontroll. · ändring 0d29b7f
6 augusti 2026 · Upptäckt vid extern granskning
Lärarstatistiken låg ett läsår efter i ett halvår
- Var
- Alla grundskolesidor (lärarbehörighet, elever per lärare)
- Vad som var fel
- Personalstatistiken visade läsåret 2024/25 från februari till augusti 2026 medan Skolverkets API sedan länge serverade 2025/26. Hämtningen var cache-först och cachen upphörde aldrig att gälla, så varje ”uppdatering” skrev om den gamla ögonblicksbilden och rapporterade framgång. Betygen var inte berörda — nya slutbetyg kommer först i september.
- Vad som ändrades
- Cachen raderas nu innan en uppdatering, hela personalskiktet lästes in på nytt, och den automatiska färskhetskontrollen provtar även ett personalfält (den provtog bara meritvärdet och sa ”färsk” medan personaldelen släpade).
- Vad som hindrar det nu
- Veckokontrollen jämför båda fälten mot API:et; dokumenterad regel att en uppdatering börjar med att cachen raderas. · ändring ef790fa
6 augusti 2026 · Upptäckt vid egen kontroll
Metabeskrivningar längre än sökmotorerna visar
- Var
- Sökresultat för ~30 kalkylator- och navsidor och alla vårdcentralsidor
- Vad som var fel
- Beskrivningarna för 30 av 70 statiska sidor och för vårdcentralerna (325–360 tecken) klipptes mitt i ordet av Google, så placeringen och källan som medvetet lagts sist syntes aldrig.
- Vad som ändrades
- Beskrivningar byggs nu klausul för klausul inom en budget på 150 tecken, med det viktigaste först.
- Vad som hindrar det nu
- Byggkontrollen lint:meta renderar varje sidas beskrivning och stoppar publicering utanför 60–150 tecken. · ändring 0ceb574
5 augusti 2026 · Upptäckt vid egen kontroll
Hundratals länkar till skolors webbplatser var döda
- Var
- /skola/[slug], /gymnasium/[slug], /forskola/[slug]
- Vad som var fel
- Kommuner bygger om sina webbplatser och länkar ruttnar: en länkkontroll fann att ~6 % av skolornas registrerade webbadresser gav bekräftade 404-svar, samtidigt som länken sitter högst upp på skolsidan.
- Vad som ändrades
- 92 länkar hittades på nya adresser och 480 döda länkar tystades; 350 av dem återfanns senare vid nya adresser och återställdes. En skola vars länk inte kan verifieras visar ingen länk alls, hellre än en felaktig.
- Vad som hindrar det nu
- En automatisk länkkontroll körs första måndagen varje månad och listar bekräftade 404:or för kuratering. · ändring 7851968
3 augusti 2026 · Upptäckt vid egen kontroll
39 skolor låg på huvudmannens huvudkontor — hundratals kilometer bort
- Var
- /skola/[slug], /gymnasium/[slug] (karta, närliggande skolor)
- Vad som var fel
- Skolverkets register anger för vissa kedjor huvudkontorets koordinat i stället för skolans: Tunaskolan F–3 låg 797 km från Luleå, Yrkesgymnasiet Borås 785 km från Borås. Felet var osynligt eftersom närhetslistorna mäter från andra skolor — en felaktig koordinat dök aldrig upp någonstans, i stället för att dyka upp på fel plats.
- Vad som ändrades
- Koordinater som inte kan vara skolans egen (gränsen härleds per kommun ur kommunens storlek, aldrig ett fast antal km) nollställs; skolan visas utan karta och utan närhetslista i stället för på fel plats.
- Vad som hindrar det nu
- Byggkontrollen lint:coords stoppar publicering om en orimlig koordinat återkommer. · ändring c6d52da
3 augusti 2026 · Upptäckt vid egen kontroll
20 skolor visade huvudkontorets adress som sin egen
- Var
- /skola/[slug], /gymnasium/[slug], kommunernas skoltabeller, strukturerad adressdata
- Vad som var fel
- Samma registerfel, annan yta: Tornparksskolan i Sundbyberg visade ”Stora Nygatan 52, Malmö” under Om skolenheten, kommuntabellen skrev ”Malmö · Fristående” och adressen publicerades som PostalAddress för sökmotorer.
- Vad som ändrades
- Adresser som delas av flera skolor i olika kommuner och pekar på ett och samma hus i en annan kommun blankas; en handverifierad adress kan läggas in i en kurateringsfil och vinner då.
- Vad som hindrar det nu
- Byggkontrollen lint:addresses; kurateringsfilen är samtidigt att-göra-listan för de blankade. · ändring 4e4f541
2 augusti 2026 · Upptäckt vid egen kontroll
778 kommunsidor angav en nationell placering som motsade sajtens egna rankningar
- Var
- /kommuner/[slug]/lon, /bostader, /trygghet och deras FAQ-data
- Vad som var fel
- Placeringen var arrayens position, inte en rangordning: Älvkarleby och Haparanda rapporterar båda 33 000 kr i medianlön och skrevs som ”#157” respektive ”#222” av alla 290 kommuner, 65 platser isär på samma siffra. Mätt mot rankningssidorna, som hanterar delade placeringar, motsade 778 av 870 sidor sajtens egen lista. Dessutom finns bara 20 olika medianlöner, 50 huspriser och 22 brottsnivåer bland 290 kommuner, varav ~68 % regionala uppskattningar — inte ens en korrekt placering vore meningsfull.
- Vad som ändrades
- Ett mått får en delad placering bara när datan bär en (skattesats, folkmängd) och en nivå annars (lön, huspris, brott); nivåernas gränser går bara mellan olika värden, så två kommuner med samma siffra alltid hamnar på samma sida.
- Vad som hindrar det nu
- Byggkontrollen lint:metric förbjuder placeringar räknade ur listposition, handskrivna nämnare i löptext och placeringsfält på uppskattade mått. · ändring 2bd245d
2 augusti 2026 · Upptäckt vid egen kontroll
32 kommuner påstods slå rikssnittet i skolresultat när de inte gjorde det
- Var
- /kommuner/[slug] och /kommuner/[slug]/skolor (meningar och FAQ)
- Vad som var fel
- Kommunens elevviktade meritvärde jämfördes med ett oviktat nationellt snitt över skolor, 4,8 poäng för lågt. 32 av de 74 kommuner som sades ligga över rikssnittet gjorde det inte med rätt jämförelsetal.
- Vad som ändrades
- En enda funktion svarar nu på ”hur bra är skolorna i kommun X” — värde, jämförelsetal, avvikelse, nivå och delad placering hör ihop, och ingen sida väljer jämförelsetal själv.
- Vad som hindrar det nu
- lint:metric förbjuder att kommunsnittet paras med det oviktade rikssnittet någonstans i koden. · ändring d588658
2 augusti 2026 · Upptäckt vid egen kontroll
Flyttkalkylatorn räknade om en hyra med huspriser
- Var
- /flytta-kalkyl (hyresrätt)
- Vad som var fel
- Hyran i den nya kommunen skalades med förhållandet mellan kommunernas småhuspriser — fel i sak, inte i grad: huspriserna spänner 0,7–13,1 Mkr medan hyror sätts genom bruksvärdessystemet och skiljer sig långt mindre. En hyra på 9 000 kr blev 1 500 kr i den billigaste kommunen och 28 071 kr i den dyraste.
- Vad som ändrades
- Velja har ingen hyresstatistik per kommun, så hyran i den nya kommunen är nu läsarens egen uppgift — förvald till dagens hyra, med skälet skrivet bredvid — i stället för en fabricerad siffra.
- Vad som hindrar det nu
- Ingen strukturell; regeln ”en siffra som saknas hos källan saknas hos oss” står på metodsidan. · ändring ef7086b
2 augusti 2026 · Upptäckt vid extern granskning
Fel enheter på startsidan och sidor som räknade tabellen i stället för datan
- Var
- Startsidan, /basta-forskolor/[lan], sökrutan
- Vad som var fel
- Startsidan skrev ett medelpris för ett helt småhus som ”700 tkr/m²”, och en brottsnivå per 1 000 invånare som ”per 100k”. Länssidorna för förskolor sa ”50 av 1 973 förskolor har personaldata” — täljaren var den renderade listan, hårt kapad vid 50, så alla 21 sidor underskattade täckningen med upp till 97 procentenheter. Sökrutan visade förskolors barn per årsarbetare under etiketten ”merit”.
- Vad som ändrades
- Enheterna rättade, antalen räknas ur datan i stället för ur tabellen, och förskolans mått fick sin egen etikett.
- Vad som hindrar det nu
- Ingen strukturell för enheter; antalen härleds nu där de används. · ändring 2b54719
1 augusti 2026 · Upptäckt vid egen kontroll
60 av 71 handskrivna skattesatser i kommuntexterna var fel
- Var
- /kommuner/[slug] (den redaktionella texten)
- Vad som var fel
- De handskrivna kommuntexterna angav kommunalskatten i löpande text, och 60 av 71 sådana angivelser hade hunnit bli fel med upp till 1,39 procentenheter — samma siffra stod korrekt i statistikkortet på samma sida, hämtad ur datan.
- Vad som ändrades
- Alla siffror som lever i en datafil (skatt, lön, huspris, meritvärde, brott, folkmängd) togs bort ur den handskrivna texten; de renderas redan ur datan. Vägavstånd och ortnamn får stå kvar.
- Vad som hindrar det nu
- Byggkontrollen lint:prose stoppar publicering om en sådan siffra återkommer i texten. · ändring 93384b3
31 juli 2026 · Upptäckt vid egen kontroll
Vårdcentraler fick ”närliggande” mottagningar i ett annat län
- Var
- /vardcentral/[slug] (närhetslistan och jämförelseknappen)
- Vad som var fel
- Patientenkäten publicerar inga koordinater, så läget togs fram genom namnmatchning mot OpenStreetMap — en regel lös nog att para ”Husläkarna Falkenberg” med en ”Husläkarna” 87 mil norrut. 737 av 1 123 sidor visade en topp 3-granne i ett annat län, med en säker kilometersiffra.
- Vad som ändrades
- Koordinater mer än 30 km från mottagningens egen kommun kastas (642 av 1 123). De som är kvar är ”rätt trakt”, inte verifierat rätt hus — därför visar sidorna en kommunkarta, inte en gatukarta, och avstånden anges som ungefärliga. I Region Stockholm och Västra Götaland, som publicerar adresser som öppna data, är läget sedan dess verifierat.
- Vad som hindrar det nu
- Avståndskontrollen körs vid varje datauppdatering; metodsidan beskriver undantaget. · ändring 0f775a4
Hur vi arbetar med data och vilka kontroller som körs före varje publicering står på metodsidan; varje källa och dess årgång på datakällor.