Haarvisie verslagen
← Alle verslagen📄 Download als PDF
🎧 Luister dit verslag
1,0x
⬇️ Download naar telefoon
📖 Lees mee met de podcast

Hé Jamal, leuk dat je luistert! Ik wilde je even bijpraten over iets heel interessants waar we de laatste tijd naar gekeken hebben. Het gaat over hoe onze AI-agents omgaan met documenten, en dan specifiek over waarom ze soms de neiging hebben om alles plat te slaan tot één standaard sjabloon. Denk aan die VCA-tool casus die we hadden – die was echt een eyeopener.

Herinner je je nog dat onze agent dertig-plus verschillende VCA-documenten, van reglementen tot keuzeformulieren, allemaal omzette naar één en hetzelfde 'goed/fout/nvt' scherm? Elk origineel was uniek, maar de uitkomst uniform. Nou, we zijn op onderzoek uitgegaan waarom dat gebeurt, en wat we eraan kunnen doen.

Het blijkt dat er een paar fundamentele redenen zijn. Ten eerste, LLM's, die taalmodellen die we gebruiken, hebben de neiging om in patronen te vervallen. Als ze eenmaal een bepaald antwoordpatroon hebben gevonden, zeker als ze meerdere vergelijkbare taken in één keer krijgen, dan houden ze daaraan vast. Ze lijken het minst-weerstand-pad te kiezen. Zodra de eerste documenten één sjabloon kregen, werd dat de standaard voor de rest.

Daarbij komt nog dat ze 'verdwalen in de context' als je ze te veel informatie tegelijk geeft. Als je dertig documenten in één klap aanbiedt, dan verliest het model vaak de focus op wat er in het midden staat, en pakt het gewoon de aanpak van het eerste document.

Een belangrijke oorzaak was ook dat we de agent niet expliciet hadden opgedragen om *eerst te bepalen wat elk document precies is*. We zeiden 'maak schermen', niet 'analyseer eerst de *aard* van dit document'. Daardoor pakte het model het bekendste formulier-type uit zijn trainingsdata – en dat is vaak een simpele checklist.

En het meest cruciale: er was geen moment van vergelijking. Niemand legde het originele document naast het gemaakte digitale scherm. Elk scherm zag er op zichzelf 'netjes' uit, maar de gigantische fout – dertig-plus unieke originelen en dertig-plus *identieke* schermen – werd pas duidelijk als je ze naast elkaar legde. Het was geen subtiele fout, maar een die we niet zagen omdat we er niet naar keken.

Wat zeggen experts hierover? Die doen precies wat wij niet deden. Professionele partijen classificeren altijd eerst het documenttype: is het een paspoort, een contract, een formulier? Want het type document bepaalt alles. Ze scheiden ook het lezen van het redeneren, en ze werken met vaste testsets. En heel belangrijk: ze bouwen altijd een 'mens-in-de-loop' in, waarbij een mens de resultaten verifieert.

Voor onze setup betekent dit concreet: de allereerste stap van de pipeline moet zijn 'bepaal wat dit document is'. Vervolgens krijgt elk documenttype zijn eigen, specifieke sjabloon. We stoppen met het in batch verwerken van documenten; elk document krijgt zijn eigen redenering. En het allerbelangrijkste: we bouwen een verplichte visuele check in. Een screenshot van het origineel naast het gemaakte scherm, en een simpele vraag: 'Doet dit scherm wat het origineel vraagt?' Als die check niet groen is, dan gaat het terug naar de start. Dit, samen met een menselijke review voor oplevering en een vaste testset, had deze fout direct voorkomen.

Dus Jamal, de kern van de zaak is verrassend eenvoudig: de grootste fouten, zoals deze, worden vaak gevangen door de meest simpele stap: het origineel naast het resultaat leggen en visueel goedkeuren. Geen ingewikkelde AI-modellen nodig, maar wel een duidelijke regel in ons proces. Het is de goedkoopste en meest effectieve manier om te zorgen dat onze agents écht leveren wat de klant nodig heeft. Goed om te weten toch? Tot snel!

Onderzoek: waarom LLM-agents documenten plat slaan (VCA-tool casus)

Datum: 2026-08-05
Aanleiding: bij de VCA-tool legde de agent over 33 verschillende formulieren één en hetzelfde
sjabloon (goed/fout/nvt). Elk origineel was anders: reglement, keuzeformulier, registratie.
De agent begreep niet wat elk document wilde zijn.


Vraag 1. Waarom platte interpretatie?

Bevindingen.


Vraag 2. Wat zeggen developers op Reddit, HN en fora?

Bevindingen.


Vraag 3. Concrete veranderingen in onze setup

In volgorde van waarde (zie ook het veranderplan onderaan):

  1. Typeclassificatie vóór conversie, per document. Eerste stap van de pipeline beantwoordt
    één vraag: "wat wil dit document zijn?" Uitkomst: reglement / keuzeformulier /
    registratieformulier / checklist / overig. Dit wordt vastgelegd als metadata bij het document.

  2. Eigen schema per type, afgedwongen. Elk type krijgt een vast scherm-sjabloon.
    De conversiestap mag ALLEEN het schema van het geclassificeerde type gebruiken.
    Het goed/fout/nvt-sjabloon is dan één optie onder meerdere, niet de default.

  3. Eén document per run, geen batch van 33. Elk document krijgt zijn eigen context en
    eigen redenering. Dit voorkomt patroonbesmetting van document 1 naar 33 en houdt de
    context klein en scherp.

  4. Visuele zelf-QA per document. Na conversie: screenshot of render van origineel naast
    het digitale scherm, en een tweede pass (andere agent of mens) beantwoordt: "doet dit
    scherm wat het origineel vraagt?" Fail = terug naar stap 1.

  5. Review-checkpoint met mens voor oplevering. Bij 33 documenten is één review-rondgang
    met origineel en scherm naast elkaar goedkoop en vangt precies dit soort systematische
    fouten.

  6. Golden set van 5 tot 10 representatieve formulieren (één per type) als vaste test.
    Elke pipeline-wijziging draait eerst op deze set.


Vraag 4. De kernvraag: welke ENKELE stap had DEZE fout gevangen?

De naast-elkaar-vergelijking: origineel document naast het digitale scherm, vóór
acceptatie, uitgevoerd door iets of iemand die niet de bouwer was.

Redenering: alle andere oorzaken (mode collapse, context-uitdunning, training-bias) zijn
intern voor het model en dus van binnenuit onzichtbaar. Maar de fout was visueel triviaal
te zien: 33 verschillende origineelen, 33 identieke schermen. Zelfs één review van één
willekeurig document uit de batch (bijvoorbeeld het PMO-keuzeformulier naast zijn
goed/fout/nvt-scherm) had direct getoond dat het scherm niet doet wat het origineel vraagt.
De fout was niet subtiel, hij was alleen nooit bekeken.

Deze stap is ook de goedkoopste: geen nieuwe modellen, geen extra pijplijn. Alleen de regel
"niets is klaar tot origineel en resultaat naast elkaar zijn gelegd en goedgekeurd".


Veranderplan VCA-pipeline (volgorde van waarde)

  1. Review-checkpoint invoeren (de kernstap). Per document: origineel naast scherm,
    goedkeuring door mens of tweede agent. Dit vangt deze foutklasse volledig af, ook zonder
    verdere verbeteringen.
  2. Typeclassificatie als verplichte eerste stap. Geen conversie zonder vastgelegd
    documenttype.
  3. Sjabloon keuze koppelen aan type. Verwijder het default-sjabloon; type bepaalt schema.
  4. Batch uit, per-document runs aan. Max 1 document per conversierun.
  5. Golden set bouwen uit de 33 formulieren (de juiste interpretatie per document als
    referentie) en als regressietest gebruiken.

Bronnen

  1. https://arxiv.org/html/2505.18949v1
  2. https://aclanthology.org/2025.findings-emnlp.836.pdf
  3. https://arxiv.org/pdf/2411.03538
  4. https://pristren.com/blog/lost-in-middle-attention-paper/
  5. https://docs.reducto.ai/classify/overview
  6. https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/train/custom-model?view=doc-intel-4.0.0
  7. https://imagetotable.ai/blog/build-vs-buy-document-extraction
  8. https://talonic.com/vs/reducto
  9. https://redwerk.com/blog/claude-document-processing-playbook/
  10. https://unstract.com/blog/human-in-the-loop-hitl-for-ai-document-processing/
  11. https://www.stackai.com/insights/ai-for-enterprise-document-processing-ocr-end-to-end-workflow-best-practices-and-2026-guide
  12. https://arxiv.org/html/2502.18179v1

Bijlage: 3 direct toepasbare fleet-regels (aanvulling 5-8, op verzoek van Conductor)

Deze drie regels passen het onderzoek toe op hoe onze vloot werkt. Ze zijn zo geschreven dat elke bot ze letterlijk kan opvolgen.

Regel 1 — Eerst soort bepalen, dan pas omzetten.
Bij elk document (formulier, PDF, contract, brief): benoem EERST in één zin wat het document WILT zijn (reglement om te ondertekenen / keuzeformulier / registratie / checklist / informatieblad). Die classificatie bepaalt het scherm. Geen classificatie = geen conversie. Voorkomt dat de agent naar zijn bekendste sjabloon grijpt.

Regel 2 — Eén voorbeeld visueel goed laten keuren vóór de batch.
Bij batch-werk (meer dan 1 document/foto/clip tegelijk): lever EERST één compleet voorbeeld op, leg het naast het origineel, en laat het goedkeuren (door de opdrachtgever of een tweede agent). Pas bij "goed" de rest. Dit is dezelfde regel als onze "1 test → OK → batch" voor foto's en video's — voortaan ook verplicht voor documenten.

Regel 3 — Klaar is pas klaar na de naast-elkaar-check.
Niets heet klaar tot het resultaat naast de bron is gelegd en goedgekeurd. Bij documenten: screenshot of tekst van origineel naast het digitale scherm. Bij uitzondering mag de maker zelf checken, maar bij batch ALTIJD iets/iemand anders (tweede agent of de opdrachtgever). Deze stap had de 33-identieke-schermen fout direct gevangen.

🎙️ Bespreek met Jarvis