Probleem
Adviesbureaus voor hypotheken en verzekeringen werken met dossiers die volgens de Wft (Wet op het financieel toezicht) volledig en controleerbaar moeten zijn. Die controle gebeurt vaak met de hand, verspreid over losse systemen voor leads, polissen, claims en rapportages.
Randvoorwaarden
- Persoonsgegevens: dossiers bevatten gevoelige financiële en persoonlijke informatie. Die mag niet onbeschermd naar een extern taalmodel.
- Meerdere kantoren: elk kantoor moet volledig gescheiden data hebben.
- Aantoonbaarheid: wijzigingen en AI-gebruik moeten achteraf te controleren zijn.
- Kosten: AI-gebruik moet per kantoor begrensd zijn.
Architectuur
Een Next.js-applicatie met server actions, Prisma als datalaag (SQLite lokaal, PostgreSQL in productie) en een multi-tenant model waarin elk record aan een kantoor hangt. Billing loopt via Stripe-webhooks, inkomende leads en CRM-synchronisatie via eigen webhook-endpoints, en uitgaande triggers via een cron-route.
Implementatie
- Wft-engine (
lib/compliance/wft-engine.ts): negen regels die een dossier toetsen en per regel aangeven wat ontbreekt. - Audit-log met hashketen (
lib/audit/chain-hash.ts): elke auditregel bevat de hash van de vorige, zodat achteraf aanpassen detecteerbaar is. De hashfunctie staat bewust los van de ORM, zodat migratiescripts exact dezelfde berekening gebruiken. - Beveiliging: Content-Security-Policy met nonce, en een migratietool van SQLite naar PostgreSQL met een CI-controle op schema-synchronisatie.
- Tests: 20 Playwright end-to-end specs voor de kritieke flows.
AI en automatisering
Alle modelverzoeken lopen via één provider-laag (lib/ai/provider.ts) die per verzoek een vaste volgorde afdwingt:
- Het kantoor moet AI expliciet hebben ingeschakeld.
- Rate limit per kantoor per minuut.
- Maandelijks tokenbudget per kantoor. Is dat op, dan krijgt de gebruiker een duidelijke melding in plaats van een fout.
- Persoonsgegevens worden omkeerbaar gepseudonimiseerd voordat het verzoek naar Claude gaat. Het antwoord wordt eerst gevalideerd en pas daarna teruggezet naar de echte waarden.
- Verbruik wordt vastgelegd met alleen tokens, taak en model, plus een auditregel zonder persoonsgegevens.
Resultaat
Een werkende beta met dossierbeheer, Wft-controles, leads, polissen, claims, rapportages en Stripe-billing, gedekt door end-to-end tests. Het product is nog in ontwikkeling; er zijn nog geen productiecijfers om te publiceren.
Lessen
- Eén toegangspunt voor AI maakt beleid afdwingbaar. Budgetten, rate limits en pseudonimisering zitten op één plek in plaats van verspreid over features.
- Privacy is een architectuurkeuze, geen instelling achteraf. Pseudonimiseren vóór het model is eenvoudiger aan te tonen dan vertrouwen op de voorwaarden van een provider.
- Audit als datastructuur: een hashketen kost weinig code en maakt de log zelf controleerbaar.