Naar de inhoud
Datadenkt

Gereedschap  /  AVG en Nederlands recht

Je overtreedt de AVG en je weet het niet

De zes dingen die AI standaard in je app zet en die in Nederland niet mogen, met per punt de fix.

Vraag een AI-tool om een app met inloggen en je krijgt binnen twee minuten iets dat werkt. Wat je er gratis bij krijgt is een verzameling keuzes die niemand heeft gemaakt: analytics die meteen laadt, logbestanden waar e-mailadressen in staan, een database in Amerika en geen privacyverklaring. Dat is geen ramp zolang je het alleen zelf gebruikt. Het wordt een probleem op de dag dat er een vreemde inlogt.

Meenemen naar je editor

Deze handleiding is geschreven om als werkopdracht te dienen. Neem hem in zijn geheel mee naar Cursor, Claude Code of waar je ook bouwt, en werk hem fase voor fase af.

Waar het misgaat

Het staat standaard foutNiemand heeft deze keuzes voor je gemaakt. De tool vraagt er niet naar en het model vult het gemiddelde van het internet in.
De regio staat vaak op AmerikaBij Supabase, Vercel en Railway kies je die bij het aanmaken. Achteraf verhuizen is een migratie, vooraf kiezen is een klik.
Verwijderen is meestal een vlaggetjeEen kolom verwijderd op true is geen verwijdering. Je hebt vier weken als iemand erom vraagt.
Je logs bewaren meer dan je denktEen standaard error-log schrijft het hele request weg, inclusief het e-mailadres en het token.

Fase 0Vaststellen

Laat je codebase nakijken voordat je zelf gaat zoeken. Dit vindt niet alles, maar wel de vier meest voorkomende.

AVG-controle op je codebase
Je bent een privacy-engineer die deze codebase nakijkt op AVG-risico's. Ik zit in Nederland en mijn gebruikers ook.

Zoek concreet naar:

1. Analytics-, pixel- of trackingscripts die laden vóór een expliciete toestemmingsklik. Noem het bestand en de regel.
2. Logregels die een heel request, een header of een e-mailadres wegschrijven. Noem bestand en regel.
3. Aanroepen naar externe diensten waar gebruikersdata in meegaat. Maak een lijst: welke dienst, welk veld, vanuit welk bestand.
4. Of er een route of functie bestaat die een gebruikersaccount en al zijn gegevens echt verwijdert. Zo niet, zeg dat.
5. Waar de regio van de database en de hosting wordt ingesteld, en welke waarde daar staat.

Geef per bevinding: het bestand, de regel, waarom het een probleem is, en de kleinst mogelijke wijziging die het oplost.

Verzin niets. Vind je iets niet, zeg dan dat je het niet gevonden hebt in plaats van een aanname te doen.

Fase 1De zes punten langs

Op volgorde van hoe vaak ik ze fout aantref. Elk nee is werk dat op je lijst hoort.

  • Je analytics laadt voordat iemand op accepteren heeft gekliktEen banner die alleen mededeelt dat je cookies gebruikt voldoet niet. Analytics, pixels en heatmaps mogen pas draaien na een actieve klik, en weigeren moet net zo makkelijk zijn als accepteren. In de praktijk: het script staat niet in je HTML maar wordt pas ingeladen door de accepteer-knop. Uitzondering: puur statistisch gebruik zonder cookies en zonder doorgifte, zoals een zelf gehoste teller.
  • Er staan persoonsgegevens in je logbestandenEen standaard error-log schrijft het hele request weg, inclusief het e-mailadres in de body en het token in de header. Die logs gaan vaak naar een derde partij en blijven daar maanden staan. Filter voordat je wegschrijft: nooit hele request-bodies, nooit headers met een token, en van een e-mailadres alleen een hash als je het echt nodig hebt.
  • Je hebt geen verwerkersovereenkomst met je leveranciersSupabase, Vercel, Railway, OpenAI, Anthropic, Resend en Brevo verwerken allemaal gegevens namens jou. Met elk van hen heb je er een nodig. Bij bijna allemaal staat die kant-en-klaar in je accountinstellingen onder DPA. Twintig minuten werk om ze op te halen en te bewaren.
  • Je weet niet in welk werelddeel je database staatDe standaardregio is vaak Amerika. Doorgifte buiten de EU mag, maar dan moet die geregeld zijn, meestal via het Data Privacy Framework. Veel eenvoudiger is bij het aanmaken een EU-regio kiezen.
  • Je stuurt gebruikersgegevens naar een AI-model zonder dat iemand dat weetStuurt jouw app tekst van een gebruiker door naar OpenAI of Anthropic, dan is dat een doorgifte die in je privacyverklaring hoort. Let op het verschil tussen de consumentenversie en de zakelijke API: bij de gratis chatinterfaces kan invoer voor training gebruikt worden, bij de betaalde API's is dat standaard uitgesloten. Zoek in de voorwaarden op het woord training.
  • Je hebt geen manier om een account echt te verwijderenIedereen mag om verwijdering vragen en je hebt vier weken. Als verwijderen bij jou een vlaggetje is terwijl de rij blijft staan, voldoe je niet. Bouw het één keer goed: een route die de rijen echt weghaalt, inclusief de rijen in je koppelingen.

Fase 2Controleren

Bewijs voordat je zegt dat het klaar is. Vier controles die je zelf in de browser doet.

  • Open je site in een privévenster en kijk in het tabblad Network vóór je iets aankliktEr mag geen verzoek naar google-analytics, facebook, hotjar of een vergelijkbare dienst staan. Staat het er wel, dan laadt je tracking te vroeg.
  • Weiger de cookies en herlaadNa weigeren mag er niets van die verzoeken terugkomen. Veel banners onthouden alleen de keuze en laden het script alsnog.
  • Verwijder een testaccount en kijk in de databaseDe rij moet weg zijn, en de rijen die eraan hingen ook. Blijft er iets staan, dan is je verwijderroute niet af.
  • Zoek in je logs op een e-mailadres van een testgebruikerNul treffers is goed. Eén treffer betekent dat je filter niet werkt.
  • Je verwerkersovereenkomsten staan op één plekEen map met de DPA van elke dienst die je gebruikt. Kun je hem niet binnen een minuut laten zien, dan heb je hem niet.
Let op

Dit is een checklist, geen juridisch advies. Verwerk je gezondheidsgegevens, biometrie of strafrechtelijke gegevens, dan gelden zwaardere eisen en is een jurist geen luxe.

Nog een keer, nu je weet wat erin staat

Alles hierboven in één keer, inclusief de fases, de SQL en de controlestap.

Werkt dit, maar wil je het niet zelf doen?

Dit blad is gratis en blijft gratis. Wil je dat het bij jou automatisch draait in plaats van met de hand, dan bouw ik dat. Beschrijf in vijf vragen wat er vastloopt en stuur het adres van je app mee; binnen één werkdag heb je mijn antwoord op papier.

Vertel wat er vastloopt