AI · Backend · Infrastruktur och DevOps · 2026
AI-pipeline för regulatoriska texter med expertgranskning
En AI-pipeline som skriver utkast till regulatoriska artiklar på två språk, med källhänvisningar, så att experterna granskar i stället för att skriva första utkasten. Inget publiceras förrän en expert har godkänt det.
- 01KällorDaglig inläsning med OCR; bara källor från de senaste 45 dagarna räknas.
- 02UtkastTvå modellanrop per artikel, varje påstående med källa.
- 03KontrollerAutomatisk spärrKällor, intressekonflikter och namn som aldrig får förekomma.
- 04ExpertgranskningManuell spärrFlödet pausar i flera dagar; granskningar som fastnat eskaleras.
- 05PubliceringGodkänns artikel för artikel, på båda språken.
- kontroller godkända i en körning med produktionskonfiguration
- 28/28
- verkligt omnämnande hittades av namnkontrollen i firmans tidigare texter, utan falska stopp
- 1 av 1
- enhetstester, plus 16 verifieringsskript
- ~1 600
Utgångsläge
En rådgivningsfirma ville publicera regulatoriska kommentarer utan att experterna själva skulle skriva första utkasten. Varje påstående behövde en färsk primärkälla, och en granskning tar dagar.
Min roll
Ensam utvecklare: arkitektur, kod och promptar, och driftsättningen på Azure med Terraform.
Vad jag byggde
- Arkitektur: Durable Functions med inbyggda pauser över flera dagar, fan-out och omförsök; modeller, embeddings och publicering bakom adaptrar, så att en leverantör kan bytas ut.
- Frontend: Granskarna godkänner ämnen och översättningar på serverrenderade sidor. Ett klick öppnar utkastet i Word på webben, och ändringarna sparas när de stänger det. En AI-funktion skriver om utkastet på begäran.
- Backend: Parallella utkast, eskalering av granskningar som fastnat, spärr mot dubbla körningar och stopp vid intressekonflikter.
- Data och AI: Daglig inläsning med OCR och ett färskhetsfönster på 45 dagar; hybridsökning i Azure AI Search med en domänanpassad embeddingmodell från Voyage AI, vald för kundens material; versionerade promptar.
- Säkerhet: Signerade granskningslänkar som löper ut, nonce-baserad CSP, managed identity och loggar som vägrar ta emot tokens och utkasttext.
- Infrastruktur och DevOps: Terraform med 55 resursdefinitioner och 18 larmregler.
- Test: Runt 1 600 enhetstester och 16 verifieringsskript.
Svåra problem och beslut
- Strukturerad output är till för data, inte prosa. Min första design bad modellen om hela artikeln i ett enda JSON-svar, och utkasten kom tillbaka på runt 300 ord. Jag spårade felet till formatet, inte prompten, och delade upp skrivandet och struktureringen i två anrop: medianen steg till 1 084 ord, tillräckligt för att experterna ska redigera i stället för att skriva om.
- En promptregel är ingen kontroll. Vissa företagsnamn får aldrig förekomma, så en deterministisk kontroll backar upp promptregeln. Testad mot firmans tidigare texter hittade den det enda verkliga omnämnandet, utan ett enda falskt stopp.
- Mät innan du bygger. Innan jag byggde kostnadsspärrar för embeddings räknade jag på en körning: embeddings stod för 7–10 % av kostnaden, OCR för runt 90 %. Jag rättade den verkliga buggen i stället.
Resultat
Experterna får utkast med källor att granska i stället för att skriva dem själva. En körning med produktionskonfiguration klarade 28 av 28 kontroller hela vägen, från konfliktkontroll till godkännande av varje artikel på båda språken.
Teknik
TypeScript, Node.js, Azure Durable Functions, Azure AI Search, Azure OpenAI, Anthropic Claude, Voyage AI, WordPress, Terraform
Områden
Arkitektur, Frontend, Backend, Data, AI, Säkerhet, Infrastruktur och DevOps, Test
Period
maj 2026 – pågår