Naar de inhoud
Terug naar al ons werk
Methode

Hoe wij een casinobonus verifiëren

Van scrape tot publicatie in 11 stappen

De datapijplijn achter BonusWijs.nl. In een maand gebouwd en bijgeschaafd, met zes frontier-LLM's die er om beurten gaten in schoten. Draait nu dagelijks langs 30 vergunninghouders van de Ksa.

10 min leestijd|LLM-extractieSchemavalidatieAudittrailFail-Closed

Het probleem

Operators met een Ksa-vergunning zetten hun bonusvoorwaarden in lange juridische lappen tekst. Match-percentages weggestopt in alinea vier. Inzetvereisten die op één pagina op drie manieren zijn opgeschreven. En "keuzebonussen", waarbij de speler kiest tussen alternatieve armen (100% match tot €250 OF 100 free spins), zien er tegenstrijdig uit voor alles wat er één waarde uit probeert te halen.

Affiliates en vergelijkingssites hebben twee opties. De marketingtekst van de operator klakkeloos overnemen: weinig vertrouwen, veel volume, en wat het grootste deel van de markt doet. Of de data met de hand bijhouden: traag, foutgevoelig, en het houdt op bij een handvol operators.

Allebei schieten ze tekort sinds de Ksa de lat in 2024 hoger legde. Toon je iets dat niet klopt met de live bronpagina, dan zet je meer op het spel dan je reputatie. Dan vraag je om een brief van de toezichthouder.

Wij hadden een derde optie nodig. Iets dat een pagina leest zoals een mens dat doet, de structuur vastlegt zoals een database dat doet, en weigert te publiceren zodra het twijfelt.

Hoe het systeem in elkaar zit

Stappen 01 tot en met 04 halen de ruis eruit. Stappen 05 tot en met 07 bepalen wat veilig is. Stappen 08 tot en met 11 publiceren, bewaken en herstellen. Het loopt één kant op, met een gedocumenteerde overdracht tussen de blokken.

Uitdunnen

01 - 04

Scrapen, uitlezen, vergelijken, ruis wegfilteren.

Beslissen

05 - 07

Werk bij wat veilig is, escaleer wat dat niet is, valideer alles voordat het live gaat.

Publiceren & bewaken

08 - 11

Schone runs uitrollen, dichtklappen bij oude data, nieuwe armen in de wachtrij, hallucinaties afvangen.

De 11 stappen

Elke stap lost één probleem op en geeft het stokje door aan de volgende. Samen brengen ze een bonus van operatorpagina naar gepubliceerde data, met bij elke stap een gedocumenteerde audittrail.

01

Dagelijkse scrape

Elke ochtend om 06:00 halen we de officiële voorwaardenpagina op van iedere operator met een Ksa-vergunning. Playwright met stealth-flags, Nederlandse geo via NordVPN, opnieuw proberen bij tijdelijke fouten. 30 operators, niemand kijkt mee.

02

LLM-extractie

Claude leest de gescrapte HTML en levert gestructureerde velden op: match-percentage, maximale bonus, free spins, inzetvereiste, inzetdoel, tijdslimieten, bonustype. Het model ziet de pagina; het schema ziet alleen getypte waardes.

03

Vergelijken met oog voor keuzebonussen

De verse waardes gaan langs de opgeslagen data, maar de comparator kent keuzebonussen. Kan een speler kiezen tussen alternatieve armen, dan ligt elke arm apart vastgelegd. Klopt er één, dan geldt de bonus als bevestigd.

04

Suppressiefilter

Bekende missers van de extractie lossen we automatisch op: proza dat als null wordt gelezen, keuze-armen die door elkaar lopen, aanbiedingen met meerdere armen die onterecht als "combined" worden bestempeld. Negen terugkerende patronen filteren we eruit, zodat er geen mens naar hoeft te kijken.

05

Automatisch bijwerken van veilige velden

Velden waar de extractie het met hoge zekerheid eens is en waar niets bonuskritisch aan hangt (tijdslimieten, opmaak) werken we automatisch bij. Bonuskritische velden (match %, maximale bonus, free spins, inzet, type) gaan nooit automatisch. Nooit.

06

Mens beslist bij echte signalen

Alles wat het filter overleeft en niet vanzelf mag worden bijgewerkt, leggen we handmatig naast de live bronpagina. Elke beslissing komt in openbare verificatienotities te staan: wat er veranderde, waarom, met een verwijzing naar de pagina van de operator.

07

Validatiepoort met vier lagen

Voordat er iets live gaat: schema-guards met zod en harde plafonds, een heuristische validator die rare uitkomsten opmerkt (inzet op een no-deposit bonus = waarschuwing), een pre-commit hook die voor bonuskritische wijzigingen gedocumenteerd bewijs eist, en regressietests die elk incident uit het verleden afdekken.

08

Automatisch publiceren, automatisch deployen

Schone runs committen, de npm-versie ophogen, publiceren naar GitHub Packages, de afnemer stroomafwaarts (BonusWijs.nl) meebumpen en een Vercel-deploy aftrappen. Bij een groene run komt er geen hand aan te pas.

09

Veiligheidskleppen

Publicatie gaat op slot zodra een getoonde bonus langer dan 30 dagen onbevestigd is. Een watchdog per arm slaat aan op 60, 90 en 180 dagen. Bij twijfel klapt de boel dicht: liever een oude datum in de footer dan verkeerde voorwaarden op de pagina.

10

Wachtrij voor nieuwe armen

Geeft een scraper drie runs op rij een waarde terug die bij geen enkele bekende arm past, dan komt die voor handmatige review op tafel. De eerste keer dat een casino zo'n arm krijgt, keurt een mens dat expliciet goed; daarna gaan volgende treffers vanzelf. Nieuwe aanbiedingen raken niet zoek, maar glippen er ook niet doorheen.

11

Bescherming tegen hallucinaties

Op het moment van doorvoeren leest een tweede extractie de pagina opnieuw, met een prompt die structureel anders is opgebouwd. Zijn de twee het oneens, dan gaat het naar handmatige review. Twee goedkope leesbeurten zijn beter dan één duur herstel van een verzonnen veld.

Wat het opleverde

De pijplijn verving een handmatige reviewwachtrij die zo'n 9 false positives per dag opleverde. Sinds het suppressiefilter en de comparator voor keuzebonussen draaien, blijven er 0-3 meldingen per dag over waar iemand echt iets mee moet.

9 → 0-3

False positives per dag, voor en na het filter en de keuze-armvergelijking

6

Frontier-LLM's die het schema in 3 rondes uit elkaar trokken

30

Vergunninghouders van de Ksa in de dagelijkse run

100%

Bonuskritische wijzigingen vastgelegd in openbare verificatienotities

Adversarial peer review

Het schemaontwerp ging door drie reviewrondes met zes frontier-modellen: DeepSeek V4 Pro, Minimax M1, GPT-5.5 Pro, Kimi K2.6, Claude Sonnet 4.6 en Gemini 2.5 Pro. Juist waar ze elkaar tegenspraken kwamen randgevallen boven die in de oorspronkelijke spec ontbraken. Het schema dat er nu ligt, is de versie waar alle zes mee akkoord gingen.

Waarom dit uitmaakt voor operators en affiliates

Drie eigenschappen van de pijplijn raken direct waar onze klanten wakker van liggen.

Klaar voor de toezichthouder

Bij elke bonuskritische wijziging zit een verwijzing naar de live pagina van de operator. Vraagt een toezichthouder waarom er staat wat er staat, dan vind je het antwoord in version control. Niet in iemands inbox.

Vertrouwen als onderdeel van het product

Bezoekers kunnen de verificatienotities gewoon lezen. De audittrail is de marketing. Vergelijkingssites die ongecontroleerde operatortekst overnemen kunnen dat niet zeggen, en dat verschil zie je steeds vaker terug in zoekverkeer en conversie.

Verder komen dan handwerk

Operator nummer 31 toevoegen kost een regel configuratie, geen extra collega. Dat dat economisch uit kan, ligt aan de ruis die structureel is verdwenen: de keuze-armvergelijking en het suppressiefilter doen dat werk.

Bij twijfel: niet publiceren

Twijfelt de pijplijn, dan gaat er niets live. Hij blokkeert de verouderde waarde en legt het hiaat bloot. Die scheve afweging, liever een ontbrekende datum dan een verkeerd getal, zit hard in de poortlogica.

De kern

Bonusdata is niet lastig omdat de waardes ingewikkeld zijn. Het is lastig omdat de bronpagina's rommelig zijn, de structuur nergens expliciet staat en één verkeerd getal een zaak voor de toezichthouder wordt. De pijplijn probeert niet slimmer te zijn dan de pagina. Hij probeert consequenter te zijn dan een mens die 30 operators met de hand nakijkt.

Diezelfde aanpak werkt breder. Overal waar je gereguleerde content publiceert, gestructureerde vergelijkingsdata bijhoudt en daartussen een muur juridische brontekst hebt staan, kun je hem inzetten.

Run je een operatormerk of een portfolio aan affiliates in een gereguleerde markt, en herken je deze problemen in je data? Dan moeten we even praten.

Zie het live

BonusWijs.nl draait volledig op deze pijplijn. De verificatienotities staan openbaar.

Bezoek BonusWijs.nl