Tillbaka till bloggen
Bygga19 maj 202614 min läsning

Hur vi byggde en compliance-AI som inte ber dig att lita på oss

Vem som helst kan kalla sin AI för förklarbar, ansvarsfull eller compliant. Skillnaden mellan att påstå och att bevisa är där hela förtroendet sitter. Det här är en genomgång av vad vi byggde under en intensiv vecka för att flytta Kapaciti över den linjen.

Kapaciti

Vem som helst kan kalla sin AI för förklarbar, ansvarsfull eller compliant. Det räcker att skriva orden på en hemsida och hänga upp en ramverksbild med fyra rutor och pilar. Den retoriken har blivit så billig att den i praktiken inte säger någonting längre. Det jag har börjat fråga andra leverantörer, och som vi själva har försökt svara på under den senaste veckan, är enkelt: hur bevisar du det. Inte säger. Bevisar.

Skillnaden mellan att påstå och att bevisa är där hela förtroendet sitter. En revisor, en regulator, en CTO på en bank som ska godkänna en pilot, dessa människor kommer inte tro på din säljbroschyr. De kommer fråga vad du har som de kan inspektera. Det här inlägget är en genomgång av vad vi byggde på Kapaciti AB under en intensiv vecka för att flytta oss över den linjen, från ord till artefakter.

Varför vi inte tror på compliance utan extern verifierbarhet

Vår övertygelse är att compliance-AI utan extern verifierbarhet är teater. Det spelar ingen roll hur fint man dokumenterar interna processer om en utomstående inte kan kontrollera dem utan att lita på leverantörens egen infrastruktur. Tillit måste vara mätbar, reproducerbar och signat. Det är inte ett ideologiskt påstående, det är det enda sättet att överleva en granskning som faktiskt biter.

I praktiken betyder det att vi behövde sju saker på plats. En kryptografisk audit-kedja som binder ihop varje beslut agenten tar. En publik verifierare som vem som helst kan ladda hem och köra. Adversariella tester som försöker bryta agenten på olika sätt. Regulatoriska simuleringar som mäter hur agenten resonerar mot EU AI Act och GDPR. En extern attestationsprocedur där tredje parter kan intyga vad de såg. Schemalagda återkommande körningar så att trenden går att följa över tid. Och en publicerad metodologi som visar hur vi tänker, inte bara vad vi mätte. Den här texten går igenom alla sju i tur och ordning.

Den första pelaren, en kryptografisk audit-kedja

Det första problemet är trivialt att formulera och förvånansvärt svårt att lösa. När en AI-agent fattar ett beslut i produktion, hur vet du veckor senare att ingen har gått in och ändrat loggen. En vanlig databas-rad kan modifieras av vem som helst med skrivrättigheter. En CSV-fil i en S3-bucket kan skrivas över. Ett nattligt PDF-utdrag kan bytas ut. Det räcker inte med att säga "vi loggar allt", för loggning utan integritet är bara en text-fil som någon kan redigera.

Vår lösning bygger på två gamla, tråkiga, beprövade kryptografiska primitiver. Den ena är SHA-256, samma hash-funktion som hela Bitcoin-nätverket vilar på sedan 2009 och som specificeras i FIPS 180-4. Den andra är Ed25519, en digital signaturalgoritm från RFC 8032, snabbare och säkrare än den gamla RSA-vägen. Båda har funnits längre än de flesta AI-företag och har granskats av tusentals personer.

Tankesättet liknar en kvittobok, fast omöjlig att förfalska. Varje gång agenten gör något konsekvent, ett svar till en användare, ett verktygsanrop, ett beslut om att vägra en fråga, skriver vi ett nytt block. Blocket innehåller exakta indata, modellnamn, tidsstämpel och utdata. Sedan beräknar vi en SHA-256-hash över hela blocket. Den hashen blir blockets identitet, ett fingeravtryck på 64 hex-tecken. Nästa block i kedjan inkluderar den föregående hashen i sitt eget innehåll. Det betyder att om någon försöker ändra ett enda tecken i ett gammalt block, så ändras dess hash, vilket bryter länken till nästa block, som i sin tur bryter länken till nästa, och så vidare hela vägen till spetsen. Du kan inte ändra historien utan att skriva om varje efterföljande block. Och eftersom varje block också är digitalt signerat med vår privata Ed25519-nyckel, kan du inte ens skriva om dem utan tillgång till själva nyckelmaterialet.

Det här är inte en blockchain. Det finns ingen consensus-mekanism, ingen token, ingen distribuerad ledger. Det är en Merkle-stil hash-kedja med en signerare per organisation. Den publika nyckeln som motsvarar vår privata nyckel publicerar vi öppet, så att vem som helst kan verifiera att signaturerna kommer från oss. Fingerprintet, ett SHA-256-värde av den publika nyckeln, har formen sha256:0e6daf50937454fcfaa1e9f74713b430bb04c60fb56bc30857ef632fad614505. Det värdet ligger på kapaciti.se och i vårt publika GitHub-repo, så att en granskare kan korsverifiera över minst två oberoende källor.

Den andra pelaren, en publik verifierare

Att vi själva säger att kedjan stämmer är värdelöst. Det är vi som har skrivit den. Den enda intressanta frågan är om någon annan kan kontrollera den utan att lita på vår infrastruktur. Det är därför vi har byggt en oberoende, dependency-fri verifierare och publicerat den på github.com/Fluxz-Holding/kapaciti-audit-demo.

Verktyget är medvetet litet. Cirka 300 rader Node.js, ingen extern dependency, ingen build-process, inget framework. Allt en granskare behöver är Node 22 eller senare och en bundle-fil. Kommandot är så enkelt som det går att göra det: npx github:Fluxz-Holding/kapaciti-audit-demo bundles/sample.json. Det är en rad. Du behöver inte ens klona repot om du inte vill. Och du behöver definitivt inte ringa oss.

Programmet räknar om varje blocks SHA-256-hash från grunden, kontrollerar varje Ed25519-signatur, går igenom hela hash-kedjan från genesis-blocket till spetsen, och skriver ut en dom. Om något har manipulerats, om en signatur är felaktig, om kedjan har en lucka, returnerar verifieraren exit-kod 1 och beskriver varför. Om allt stämmer skriver den OK och visar fingerprintet du själv kan jämföra mot den publicerade källan. Hela processen tar under en sekund per tio tusen entries.

Det är skillnaden mellan att be om förtroende och att förtjäna det. I det första fallet säger leverantören "vår audit-trail är säker, vi lovar". I det andra fallet säger leverantören "här är vår audit-bundle, här är verifieraren, här är fingerprintet, gå och kontrollera". Hela skälet till att vi har gjort detta öppet är att det enda sättet att vinna ett seriöst förtroende-spel i en reglerad bransch är att ta bort den eviga frågan "kan jag lita på dem".

Den tredje pelaren, adversariella tester

Audit-kedjan bevisar vad agenten gjorde. Den bevisar inte att vad agenten gjorde var korrekt. För det behövs en helt annan typ av test, där man medvetet försöker bryta sönder agenten. Det är vad vår adversariella testsvit handlar om.

Robusthet i en AI-kontext betyder ett antal konkreta saker. Att modellen stannar inom sitt uppdrag och inte börjar prata om saker utanför scope. Att den inte hittar på siffror, kundnamn eller artikelnummer som inte finns i underlaget. Att den inte avslöjar sin egen systemprompt om någon ber den. Att den inte byter persona mitt i en konversation för att hjälpa till med något olämpligt. Dessa beteenden mäter vi med 50 tester fördelade på sex kategorier, baserade på publika korpor som HarmBench, JailbreakBench och AdvBench, plus egen kuratering för svenska språkkontext.

När vi körde sviten 2026-05-18 var resultatet följande. Av de 18 testerna som fullt utvärderades passerade 16 och 2 misslyckades. Pass-raten på det utvärderade urvalet ligger på 88,9 procent. På scope-stay, kategorin som mäter att agenten håller sig inom sitt uppdrag, ligger den på 8 av 10 fullt utvärderade. På fact-fabrication, kategorin som mäter att den inte hittar på, ligger den också på 8 av 10 fullt utvärderade. Vi rapporterar siffrorna ärligt. De testfall som inte hann fullt utvärderas i det här passet är identifierade i bundle-filen och körs om i nästa schemalagda pass.

Det vi inte vill göra är att glansa över resultaten. I en bransch där alla skriver att de "passes all safety tests" är det inte produktivt att lägga till en till röst i den kören. Det produktiva är att publicera de råa siffrorna, bundle-filen och kategori-uppdelningen så att den som vill kan dra sina egna slutsatser. Bundle-filen för den här körningen ligger på /eval-bundles/robustness-suite-2026-05-18.bundle.json. Du kan ladda hem den, köra verifieraren mot den och själv se vad som hände i varje enskilt test.

Den fjärde pelaren, regulatoriska simuleringar

Adversariella tester mäter robusthet. De mäter inte rättskunskap. För det har vi byggt en separat svit av regulatoriska scenarier, där agenten matas med realistiska EU AI Act- och GDPR-frågor och bedöms på hur korrekt den klassificerar risk-nivåer, hur exakt den citerar artiklar, och hur ärligt den hanterar gränsfall.

Ett typiskt scenario kan vara en HR-chef som överväger att använda AI för CV-rankning. Är det en högrisk-tillämpning enligt AI Act Annex III. Vilken artikel reglerar transparenskrav. Får arbetsgivaren använda profilering utan information till den sökande. Agenten ska svara med rätt klassificering, citera rätt artikel och inte hitta på artikelnummer som inte finns. Bedömningen görs av en domarmodell som har egen tillgång till primärrätten och som följer en explicit rubrik vi har publicerat.

Av de 18 scenarierna fullt utvärderades 6 i körningen 2026-05-19. Snittpoängen ligger på 88,3 procent. Det högsta scoret, 100, hamnade på scenariot om CV-rankning. Det lägsta, 45, hamnade på ett scenario om anställd-övervakning, där modellen var för svag på att skilja mellan vad EU AI Act säger och vad svensk arbetsrätt säger om proportionalitet. Det är värdefull information. Det är precis den typ av gap vi vill identifiera tidigt, eftersom det berättar var nästa runda finetuning eller systemprompts-justering ska börja.

I exakt en av scenarierna identifierade domarmodellen en svag hallucination, där agenten påstod att Annex III i AI Act listar "åtta högrisk-områden" som ett specifikt antal utan att backa upp siffran mot primärtext. Det är ett litet fel, men det är ett fel, och det är dokumenterat i bundle-filen. Att vi rapporterar det öppet i stället för att städa bort det är, för oss, hela poängen. Bundle-filen ligger på /eval-bundles/regulatory-suite-2026-05-19.bundle.json.

Den femte pelaren, extern attestation

Trots verifieraren och de publika sviterna finns det en kvarvarande social fråga. När vi själva publicerar våra resultat finns det alltid en sista invändning: hur vet vi att Kapaciti inte har slängt resultaten som inte passade. Det är en legitim invändning. Och svaret kan inte vara teknik allena. Svaret är social, decentraliserad och ödmjuk.

Vi har skrivit en lättvikts attestationsprocedur som låter oberoende tredje parter, utvecklarvänner, fristående CTOs, säkerhetsforskare, köra vår verifierare på sin egen maskin mot ett verkligt bundle och sedan signera ett kort intyg om vad de såg. Det är inte en formell revision. Det är en utvecklarkultur-version av en SOC 2-rapport, anpassad till en verklighet där vi som tidigt bolag inte har råd med en Big-4-revisor. Men kraftigt mer användbar än ingenting.

Processen tar verifieraren mellan 15 och 30 minuter. Mailmall, attestationsmall, kandidatlista och publiceringsprocess finns dokumenterade i sju filer under attestation-mappen i evals-repot. Målet är fem oberoende externa attestationer inom 90 dagar efter att Bolagsverket-registreringen av Kapaciti AB är klar. Det motsvarar ungefär en till två attestationer per vecka från och med dag noll, vilket vi tror är realistiskt mot bakgrund av det nätverk vi redan har.

Det är decentraliserad tillit, inte revisor-tillit. Det är inte Big 4. Men det är fem trovärdiga, namngivna personer som var och en har kört vår kod med egna ögon på egen maskin och rapporterat exakt vad de såg. Det är, för en pilot-kund och för en VC, ofta mer användbart än ett revisorsbrev som ingen har läst.

Den sjätte pelaren, kontinuerlig utvärdering

Ett resultat från en enskild dag säger lite. En trend över tid säger mycket. Det är därför vi har schemalagt sviterna att köra två gånger i veckan automatiskt, via en cron-uppsatt LaunchAgent på vår infrastruktur. Varje körning producerar en signerad bundle, uppdaterar trend-filen, och kontrollerar om pass-raten har sjunkit mer än 5 procentenheter mot föregående körning. Om så är fallet markeras körningen som regression och en notifiering går till utvecklingsteamet.

Det här är hygien, inte raketforskning. Men det är förvånansvärt sällsynt i AI-branschen. De flesta bolag kör sin svit en gång inför en demo, publicerar resultatet, och uppdaterar det aldrig igen. Vi vill kunna säga om sex månader: så här såg pass-raten ut den 19 maj 2026, så här ser den ut idag, så här har den utvecklats. Den datan blir vår självkostnad och vår självkontroll. Trend-filen är publik och uppdateras kontinuerligt.

Den sjunde pelaren, publicerad metodologi

Allt det ovan står och faller med att man kan förstå exakt hur vi har resonerat. Det räcker inte med siffror, det räcker inte med bundle-filer, det räcker inte med en verifierare. Det behövs också en text som beskriver tankegångarna, så att en utomstående kan bilda sig en åsikt om huruvida våra metoder är vettiga i sig.

Det är därför vi har publicerat åtta metodologi-dokument under kapaciti-evals/docs. AUDIT-CHAIN-SPEC beskriver exakt hur audit-kedjan kanoniseras och signeras, med konkreta hash-värden på det första blocket av en exempel-bundle. THREAT-MODEL beskriver vilka angripare vi designat för och vilka residual-risker vi accepterat. TESTING-METHODOLOGY beskriver hur de adversariella och regulatoriska sviterna är konstruerade, med kategoriuppdelning och rubriker. REPRODUCIBILITY beskriver vad en utomstående behöver för att rekonstruera samma resultat. EVAL-FRAMEWORK beskriver arkitekturen på själva test-harness:en. RESPONSIBLE-AI-FRAMEWORK beskriver vilka åtaganden vi gör mot regulatoriska principer och hur varje åtagande verifieras. GLOSSARY är en samlad ordlista för alla termer vi använder.

Dokumenten innehåller 49 externa citeringar till RFC 8032 för Ed25519, FIPS 180-4 för SHA-256, EU AI Act, GDPR, NIST AI RMF, MITRE ATLAS, HarmBench, JailbreakBench, AdvBench och en handfull akademiska papers. Vi visar inte bara vad vi mätte. Vi visar HUR vi tänkte, vilka källor vi har lutat oss mot och var våra metoder kommer från. Det är ovanligt på ett ganska tråkigt sätt. Vi hoppas att det blir mindre ovanligt över tid.

Vad detta betyder för dig som potentiell kund

Om du sitter på en CTO-stol i en svensk bank, eller på en compliance-funktion i ett hälso-tech-bolag, eller på en upphandlings-roll i en kommunal verksamhet, är följande relevant. Du kan ladda hem en bundle från kapaciti.se/trust/eval-results. Du kan ladda hem verifieraren från github.com/Fluxz-Holding/kapaciti-audit-demo. Du kan köra verifieraren mot bundlen på din egen dator, utan att be om vår tillåtelse och utan att ge oss något i utbyte. Du kommer att se exakt samma utdata som vi gör. Du kan korsverifiera fingerprintet sha256:0e6daf50937454fcfaa1e9f74713b430bb04c60fb56bc30857ef632fad614505 mot källan på kapaciti.se/trust/verify-yourself.

Det är skillnaden mot det du är van vid. Du behöver inte tro oss. Du kan verifiera oss. Det enda förtroende du behöver är ditt eget tangentbord och dina egna ögon. Allt annat står i koden, i dokumenten, eller i de hashade och signerade artefakterna.

Vad som kommer härnäst

Det här är inte slutet. Det är, hoppas vi, en början på något bredare. Närmast på listan står en interaktiv demo där en besökare på kapaciti.se kan generera ett eget audit-bundle genom att skicka några frågor till vår agent, och sedan verifiera resultatet i samma webbgränssnitt. Vi vill att den första kontakten med vår tillits-yta ska kunna ske utan att någon installerar något.

Därefter kommer vi att börja publicera jämförande benchmarks. Hur svarar Kapacitis agent på samma EU AI Act-fråga jämfört med en oren GPT-5.4, en oren Claude Sonnet 4.6, en oren Llama 3.1. Det är inte för att låta oss själva framstå som bäst. Det är för att kunden ska kunna förstå skillnaden mellan en finetunad agent med svensk regulatorisk kontext och en allmän modell utan den kontexten. Den datan kommer också i signerade bundles.

Längre fram, ett red-team-bounty-program där vi betalar säkerhetsforskare som hittar konkreta brister i agentens robusthet eller i audit-kedjans implementation. Och fler regulatoriska domäner än AI Act och GDPR. DORA för finansiell sektor. NIS2 för critical infrastructure. AI Act-specifika regulatory sandboxes som EU-kommissionen är på väg att rulla ut. Vi tar dem en i taget, vi publicerar dem efter samma princip, och vi signerar varje körning.

Det här är vad vi har gjort

Inga superlativ. Inga påståenden om att vara bäst, störst eller först. Vi har byggt sju saker som tillsammans gör det möjligt för en utomstående att kontrollera vårt arbete utan att lita på oss. Kedjan är signerad. Verifieraren är publik. Sviterna är publicerade. Resultaten är offentliga. Attestationerna är öppna. Metodologin är dokumenterad. Trenden är spårbar.

När någon nästa gång ber dig tro på att en AI är förklarbar, så har du nu en checklista. Be att få se det signerade audit-spåret. Be att få verifiera det själv. Be att se de råa resultaten från en adversariell svit. Be att se den senaste regulatoriska körningen. Be att se de externa attestationerna. Be att se den publicerade metodologin. Be att se trenden över tid.

Om de inte har det, är det inte compliance-AI. Det är marknadsföring som har lånat ett ord från juristernas vokabulär. På Kapaciti AB, under bolagsbildning i Skellefteå, har vi byggt det andra. Du behöver inte tro mig på det. Du kan kontrollera det själv. Det är hela poängen.

Vill ni prata om det här?

Ta en kaffe med oss

Om något här resonerade med er situation, hör av er. Vi sitter gärna ner och pratar om var ni är och vad nästa rimliga steg kunde vara. Inga säljpitchar, bara ett samtal.

Skriv till oss

● Nyhetsbrev

EU AI Act, sandbox-status och svensk AI-infrastruktur.

En sammanfattning ungefär en gång i månaden. Vad förändrats i regelverket, vilka pilot-cases vi sett och vilka vendor-shifts som påverkar svenska bolag. Skickas av oss, inte av en automation som låtsas vara oss.

Uppgifterna används endast för nyhetsbrevet. Inga utskick utöver det utan separat samtycke. Avregistrera när som helst via länk i mailet.