
# Dynamisk kontraktbestemmelseskortlægning med AI til sikkerhedsspørgeskemaer

## Hvorfor kortlægning af kontraktbestemmelser betyder noget

Sikkerhedsspørgeskemaer er portvagtere i B2B SaaS‑aftaler. Et typisk spørgeskema stiller spørgsmål som:

* *“Krypterer I data i hvile? Angiv bestemmelsesreferencen fra jeres Serviceaftale.”*  
* *“Hvad er jeres responstid ved hændelser? Angiv den relevante bestemmelse i jeres Databehandlings Tillæg.”*  

At besvare disse spørgsmål korrekt kræver, at man finder den eksakte bestemmelse i et hav af kontrakter, tillæg og politikdokumenter. Den traditionelle manuelle tilgang lider under tre kritiske ulemper:

1. **Tidsforbrug** – Sikkerhedsteams bruger timer på at lede efter den rette paragraf.  
2. **Menneskelig fejl** – Fejl i referencen til en bestemmelse kan føre til overholdelseshuller eller revisionsfejl.  
3. **Forældede referencer** – Kontrakter udvikler sig; gamle bestemmelsesnumre bliver forældede, men svarene i spørgeskemaet forbliver uændrede.  

Den **Dynamic Contractual Clause Mapping (DCCM)**‑motor løser alle tre problemer ved at omdanne kontraktarkiver til en søgbar, selv‑vedligeholdende vidensgraf, der driver AI‑genererede svar i realtid.

---

## Kernearkitektur for DCCM‑motoren

Nedenfor er et overordnet overblik over DCCM‑pipeline‑processen. Diagrammet benytter **Mermaid**‑syntaks til at illustrere datastream og beslutningspunkter.

```mermaid
stateDiagram-v2
    [*] --> IngestContracts: "Document Ingestion"
    IngestContracts --> ExtractText: "OCR & Text Extraction"
    ExtractText --> Chunkify: "Semantic Chunking"
    Chunkify --> EmbedChunks: "Vector Embedding (RAG)"
    EmbedChunks --> BuildKG: "Knowledge Graph Construction"
    BuildKG --> UpdateLedger: "Attribution Ledger Entry"
    UpdateLedger --> [*]

    state AIResponder {
        ReceiveQuestion --> RetrieveRelevantChunks: "Vector Search"
        RetrieveRelevantChunks --> RAGGenerator: "Retrieval‑Augmented Generation"
        RAGGenerator --> ExplainabilityLayer: "Citation & Confidence Scores"
        ExplainabilityLayer --> ReturnAnswer: "Formatted Answer with Clause Links"
    }

    [*] --> AIResponder
```

**Nøglekomponenter forklaret**

| Komponent | Formål | Teknologier |
|-----------|--------|-------------|
| **IngestContracts** | Henter kontrakter, tillæg og SaaS‑vilkår fra cloud‑lagring, SharePoint eller GitOps‑repositories. | Event‑drevet Lambda, S3‑triggere |
| **ExtractText** | Konverterer PDF‑, scannede‑ og Word‑filer til rå tekst. | OCR (Tesseract), Apache Tika |
| **Chunkify** | Opdeler dokumenter i semantisk sammenhængende sektioner (typisk 1‑2 afsnit). | Tilpasset NLP‑splitter baseret på overskrifter og punktlister |
| **EmbedChunks** | Koder hver chunk til en tæt vektor for lignende‑søgning. | Sentence‑Transformers (all‑MiniLM‑L12‑v2) |
| **BuildKG** | Opretter en egenskabs‑graf hvor noder = bestemmelser, kanter = referencer, forpligtelser eller relaterede standarder. | Neo4j + GraphQL‑API |
| **UpdateLedger** | Registrerer uforanderlig provenance for hver tilføjet eller ændret chunk. | Hyperledger Fabric (append‑only ledger) |
| **RetrieveRelevantChunks** | Finder top‑k lignende chunks for et givet spørgeskema‑prompt. | FAISS / Milvus vektor‑DB |
| **RAGGenerator** | Kombinerer hentet tekst med LLM for at generere et præcist svar. | OpenAI GPT‑4o / Anthropic Claude‑3.5 |
| **ExplainabilityLayer** | Vedhæfter citationer, tillids‑score og et visuelt uddrag af bestemmelsen. | LangChain Explainability Toolkit |
| **ReturnAnswer** | Returnerer svaret i Procurize‑UI med klik‑bare bestemmelses‑links. | React‑frontend + Markdown‑rendering |

---

## Retrieval‑Augmented Generation (RAG) møder kontraktpræcision

Standard‑LLM’er kan hallucinere, når de bliver spurgt om kontraktreferencer. Ved at forankre genereringen i *reelle* kontrakt‑chunks garanterer DCCM‑motoren faktuel nøjagtighed:

1. **Spørgsmålsembedding** – Brugerens spørgeskema‑tekst transformer­es til en vektor.  
2. **Top‑k hentning** – FAISS returnerer de mest lignende kontrakt‑chunks (k=5 som standard).  
3. **Prompt‑engineering** – De hentede uddrag injiceres i et system‑prompt, der tvinger LLM’en til eksplicit at citere kilden:

```
You are a compliance assistant. Use ONLY the provided contract excerpts to answer the question. 
For each answer, end with "Clause: <DocumentID>#<ClauseNumber>".
If the excerpt does not contain enough detail, respond with "Information not available".
```

4. **Post‑processing** – Motoren parser LLM‑output, validerer at hver citeret bestemmelse findes i vidensgrafen, og vedhæfter en tillids‑score (0–100). Falder scoren under en konfigurerbar grænse (fx 70), markeres svaret til manuel gennemgang.

---

## Forklarlig tilskrivelses‑ledger

Revisorer kræver bevis for *hvor* hvert svar stammer fra. DCCM‑motoren skriver en **kryptografisk signeret ledger‑post** for hver kortlægnings‑hændelse:

```json
{
  "question_id": "Q-2025-07-12-001",
  "answer_hash": "sha256:8f3e...",
  "referenced_clause": "SA-2024-08#12.3",
  "vector_similarity": 0.94,
  "llm_confidence": 88,
  "timestamp": "2025-12-01T08:31:45Z",
  "signature": "0xABCD..."
}
```

Denne ledger:

* Giver et uforanderligt revisionsspor.  
* Muliggør **zero‑knowledge proof**‑forespørgsler, så en regulator kan verificere eksistensen af en citation uden at afsløre hele kontrakten.  
* Understøtter **policy‑as‑code**‑håndhævelse – hvis en bestemmelse udfases, flagger ledger automatisk alle afhængige svar til gen‑evaluering.

---

## Tilpasning i realtid til bestemmelsesdrift

Kontrakter er levende dokumenter. Når en bestemmelse redigeres, genberegner **Change‑Detection Service** indlejringerne for den berørte chunk, opdaterer vidensgrafen og regenererer ledger‑poster for alle svar, der henviser til den ændrede bestemmelse. Hele løkken afsluttes typisk inden for **2–5 sekunder**, så Procurize‑UI altid viser den seneste kontrakttekst.

### Eksempelscenario

*Original bestemmelse* (Version 1):  
> “Data shall be encrypted at rest using AES‑256.”

*Opdateret bestemmelse* (Version 2):  
> “Data shall be encrypted at rest using AES‑256 or ChaCha20‑Poly1305, whichever is deemed more appropriate.”

Ved versionsændring:

1. Indlejringen for bestemmelsen fornyes.  
2. Alle svar, der tidligere citerede “Bestemmelse 2.1”, køres igen gennem RAG‑generatoren.  
3. Hvis den opdaterede bestemmelse introducerer valgfrihed, kan tillids‑scoren falde, og sikkerheds‑revieweren skal bekræfte svaret.  
4. Ledger registrerer en **drift‑hændelse**, som linker den gamle og den nye bestemmelses‑ID.

---

## Fordele kvantificeret

| Metrik | Før DCCM | Efter DCCM (30‑dages pilot) |
|--------|----------|-----------------------------|
| Gennemsnitlig tid til at besvare et bestemmelses‑linket spørgsmål | 12 min (manuel søgning) | 18 sek (AI‑drevet) |
| Menneskelig fejlrate (forkert citeret bestemmelse) | 4,2 % | 0,3 % |
| Procentdel af svar markeret til gen‑gennemgang efter kontrakt‑opdateringer | 22 % | 5 % |
| Revisor‑tilfredshedsscore (1‑10) | 6 | 9 |
| Samlet reduktion i spørgeskema‑gennemløbstid | 35 % | 78 % |

Tallene viser, hvordan én enkelt AI‑motor kan transformere en flaskehals til en konkurrencemæssig fordel.

---

## Implementerings‑tjekliste for sikkerhedsteams

1. **Dokumentcentralisering** – Sikr, at alle kontrakter gemmes i et maskinlæsbart repository (PDF, DOCX eller plain‑text).  
2. **Metadata‑forbedring** – Tag hver kontrakt med `vendor`, `type` (SA, **[DPA](https://www.dpocentre.com/what-is-a-dpa-and-why-do-you-need-one/)**, SLA) og `effective_date`.  
3. **Adgangskontrol** – Giv DCCM‑tjenesten kun læse‑adgang; skrive‑adgang begrænses til provenance‑ledgeren.  
4. **Policy‑styring** – Definér en tillids‑grænse‑politik (fx > 80 % automatisk accept).  
5. **Human‑In‑The‑Loop (HITL)** – Tildel en compliance‑reviewer til at håndtere lav‑tillids‑svar.  
6. **Kontinuerlig overvågning** – Aktivér alarmer for bestemmelses‑drift‑hændelser, der overstiger en risikoscore‑grænse.  

Ved at følge denne tjekliste sikres en glat implementering og maksimeret ROI.

---

## Fremtidig køreplan

| Kvartal | Initiativ |
|--------|-----------|
| Q1 2026 | **Flersproget bestemmelses‑søgning** – Udnytte flersprogede indlejringer til at understøtte kontrakter på fransk, tysk og japansk. |
| Q2 2026 | **Zero‑Knowledge Proof‑revisioner** – Tillade regulatorer at verificere kilde‑proveniens uden at eksponere hele kontraktteksten. |
| Q3 2026 | **Edge‑AI‑udrulning** – Køre indlejrings‑pipeline on‑prem for stærkt regulerede brancher (finans, sundhed). |
| Q4 2026 | **Generativ bestemmelses‑udkastning** – Når en nødvendig bestemmelse mangler, foreslår motoren et udkast i overensstemmelse med branchestandarder. |

---

## Konklusion

Dynamisk kontraktbestemmelseskortlægning bygger broen mellem juridisk tekst og sikkerhedsspørgeskema‑krav. Ved at kombinere Retrieval‑Augmented Generation med en semantisk vidensgraf, en uforanderlig tilskrivelses‑ledger og real‑tid drift‑detektion, giver Procurize sikkerhedsteams mulighed for at svare med sikkerhed, reducere gennemløbstiden og tilfredsstille revisorer – alt imens kontrakter automatisk holdes opdaterede.

For SaaS‑virksomheder, der ønsker at vinde enterprise‑aftaler hurtigere, er DCCM‑motoren ikke længere blot en “nice‑to‑have” – den er en **must‑have** konkurrencefordel.