Logo van For The Dream
AI & Strategie

Eén prompt is geen engineeringproces: zo laten we AI-code nakijken door vier specialisten

Eén prompt is geen engineeringproces. Grotere wijzigingen laten we na het bouwen tegelijk nakijken door vier specialisten voor beveiliging, mobiel, data en QA, met een begrensde herstellus en een mens die beslist bij twijfel.

Kutlu Taskin Tuna
Kutlu Taskin Tuna
Founder For the Dream
8 min lezen
Bouwen leidt tot vier parallelle controles voor beveiliging, mobiel en frontend, backend en data, QA en runtime, die samenkomen bij een poortwachter
Volledig scherm
Pas als alle vier groen geven, gaat de code richting productie.

Wie vandaag AI gebruikt om software te bouwen, werkt meestal in één lineair gesprek: een prompt schrijven, code terugkrijgen, die overnemen en hopen dat er in productie niets breekt. Voor een tikfout in een footer volstaat dat ruimschoots.

Voor werk waar merk, beveiliging, mobiel gebruiksgemak en data samenkomen, is het een risico. Eén generalistische agent die zich op de vormgeving concentreert, ziet makkelijk iets over het hoofd: een invoerveld dat op een iPhone de pagina laat inzoomen, HTML die niet veilig wordt opgeschoond, of een databasetabel zonder toegangsregels.

Eén gesprek, één agent, blinde vlekken

Volledig scherm
Eén gesprek, één agent, blinde vlekken, Een lineair gesprek volstaat voor een tikfout. Zodra merk, beveiliging, mobiel en data samenkomen, mist één generalist makkelijk iets.

Daarom werken we bij For the Dream niet met één agent die alles tegelijk moet bewaken. Grotere wijzigingen lopen door een vaste route: plannen, bouwen en daarna een controle door vier specialisten die elk maar één domein bewaken. Pas als ze alle vier groen geven, gaat de code richting productie.

In dit artikel leggen we uit hoe die route werkt, wie wat doet en waar de grenzen liggen. We illustreren het met een verzonnen maar realistisch scenario: een advocaten- en verzekeringskantoor, dat we hier Vanguard Legal & Indemnity noemen, vraagt een nieuw online intaketraject voor schadeclaims en mandaten.

Plannen, bouwen, vier specialisten

Volledig scherm
Plannen, bouwen, vier specialisten, Grotere wijzigingen volgen een vaste route. Pas als de vier specialisten groen geven, gaat de code richting productie.

1. Niet elke taak verdient een commissie

De route start met een eenvoudige vraag: hoe groot is deze wijziging? Een kleine aanpassing gaat rechtstreeks, een grotere krijgt de volledige controle.

Eerst de vraag: hoe groot is de wijziging?

Volledig scherm
Eerst de vraag: hoe groot is de wijziging?, Kleine of onderzoekende taken gaan direct. Brede of structurele wijzigingen krijgen de volledige route met specialisten.

Vraagt een partner van ons voorbeeldkantoor om een telefoonnummer in de footer te wijzigen, dan gaat dat direct en is het binnen enkele minuten klaar.

Vraagt hetzelfde kantoor een nieuw intaketraject, met fotografie per praktijkdomein, leesbare tekst over die foto's, een vertrouwelijk formulier om een claim en documenten in te dienen en een automatische onboarding van nieuwe cliënten, dan raakt dat meerdere pagina's, formulieren, opslag en beveiliging. Die opdracht gaat de volledige route in, en er wordt een statusbestand aangemaakt dat de hele tijd bijhoudt waar de taak staat.

Een telefoonnummer of een intaketraject

Volledig scherm
Een telefoonnummer of een intaketraject, Hetzelfde kantoor, twee vragen. De ene is binnen enkele minuten klaar, de andere raakt vier domeinen en gaat de volledige route in.

2. De route in vijf stappen

De volledige route heeft vijf vaste stappen. Na het bouwen splitst ze zich in vier parallelle controles, die daarna weer samenkomen bij één poortwachter.

Faalt een controle, dan gaat de taak terug naar een gerichte herstelstap en daarna opnieuw langs de controles. Die lus is bewust begrensd: na twee herstelrondes stopt het systeem en neemt een mens het over. De volgorde en de regels liggen vast. Wat de agents binnen een stap schrijven, blijft het werk van een taalmodel en dus niet voorspelbaar tot op de letter. Juist daarom staat er een controle achter.

De route in vijf stappen

Volledig scherm
De route in vijf stappen, Volgorde en regels liggen vast, met een herstellus van hoogstens twee rondes. Wat het taalmodel binnen een stap schrijft, ligt niet vast: daarom de controles.

3. Wat er in elke stap gebeurt

Stap 1: de bestaande code in kaart brengen

Voor er code geschreven wordt, brengt de eerste stap de bestaande code in kaart met een codegraaf: een index die weet welke functie welke andere gebruikt. Dat is betrouwbaarder dan zoeken op tekst. Voor ons voorbeeld vindt deze stap waar de kleuren en lettertypes van het designsysteem staan, waar de kaarten per praktijkdomein worden opgebouwd en welke serverfuncties het formulier verwerken, en welke onderdelen daarvan afhangen.

Stap 2: het plan, en een mens die het goedkeurt

De tweede stap maakt het technische plan. Voor ons voorbeeld zijn dat drie onderdelen. De fotografie bij Procesvoering, Cyberverzekering en Fusies en overnames krijgt een vast brandpunt, zodat gezichten nooit achter tekst verdwijnen of worden weggesneden. Over die foto's komen kleurverlopen die een contrast van minstens 4,5:1 garanderen, de WCAG-norm voor gewone tekst. En het formulier en het databaseschema worden ontworpen.

Eerst in kaart, dan een plan

Volledig scherm
Eerst in kaart, dan een plan, Een codegraaf toont waar alles staat en wat ervan afhangt. Het plan legt vast wat het voorbeeldkantoor nodig heeft.

Bij grote structurele keuzes pauzeert de route hier. Een mens keurt het plan goed of stuurt het terug, en pas daarna wordt er gebouwd.

Stap 3: bouwen

De derde stap schrijft de TypeScript, de React- en Next.js-componenten, de CSS en de serverfuncties. In een gewone AI-werkwijze stopt het proces hier. Bij ons is dit pas halfweg: zodra de code af is, beginnen de vier controles.

Een mens keurt goed, bouwen is pas halfweg

Volledig scherm
Een mens keurt goed, bouwen is pas halfweg, Bij grote keuzes beslist een mens over het plan. Waar een gewone AI-werkwijze na het bouwen stopt, beginnen hier de controles.

4. De vier specialisten

Na het bouwen nemen vier specialisten de wijziging tegelijk onder handen. Ze bewaken elk één domein, werken met een vaste lijst regels en hebben er geen belang bij de bouwer te sparen.

Specialist 1: beveiliging

Bij een juridisch of verzekeringsplatform kan één lek het beroepsgeheim of de gegevens van een polishouder blootleggen. Deze specialist controleert elk gewijzigd bestand op drie punten.

  • HTML opschonen met een allowlist, niet met reguliere expressies. Vrije tekst in een claimomschrijving wordt opgeschoond met een bibliotheek als DOMPurify, die alleen toegelaten tags doorlaat en <script>, <iframe>, <object> en inline event handlers verwijdert.
  • Botcontrole die echte cliënten niet blokkeert. Een formulier dat te snel wordt ingevuld, wijst vaak op een bot. Loopt de klok van een bezoeker voor op die van de server, dan kan de gemeten tijd negatief uitvallen. De specialist controleert dat zo'n meting niet als bot wordt behandeld.
  • Geen persoonsgegevens in logs. De serverlogs bewaren alleen de uitkomst en de reden, nooit namen, polisnummers of dossierinhoud.

Vier specialisten, elk één domein

Volledig scherm
Vier specialisten, elk één domein, De vier controles lopen tegelijk, elk met een vaste lijst regels. Beveiliging kijkt naar opschonen, botcontrole en logs.

Specialist 2: mobiel en frontend

Een advocaat of bedrijfsjurist die een dringende claim op een iPhone bekijkt, heeft niets aan een verschoven layout of een pagina die plots inzoomt.

  • Minstens 16 pixels in formuliervelden. Elk <input>, <select> en <textarea> heeft op schermen smaller dan 768 pixels een lettergrootte van minstens 16 pixels. Kleiner, en Safari op iOS zoomt in zodra iemand een veld aantikt.
  • Sticky header die blijft staan. overflow-x: hidden op een bovenliggend element maakt er een scrollcontainer van, waardoor een sticky header niet meer blijft kleven. De specialist eist overflow-x: clip, dat horizontale overloop afsnijdt zonder die bijwerking.
  • Compacte header en vlotte knoppen. De mobiele header blijft één rij hoog, en knoppen krijgen touch-action: manipulation, zodat een snelle dubbele tik niet als zoombeweging wordt gelezen.
  • Leesbare tekst over foto's op elk scherm. Het contrast van minstens 4,5:1 wordt nagemeten op 320, 390, 768, 1024 en 1440 pixels breed, zonder horizontale overloop.

Specialist 3: backend en data

Wanneer een polishouder een schade meldt of een bedrijfsjurist een belangenconflict laat nakijken, moeten de gegevens kloppen en afgeschermd zijn.

  • Sleutels en relaties. Records krijgen UUID's als sleutel, en tussen claims, mandaten en polishouders gelden strikte foreign keys.
  • Toegang per rij. Row-Level Security in PostgreSQL zorgt dat elk record alleen zichtbaar is voor de organisatie en de rol die er recht op heeft.
  • Inloglinks die een virusscanner overleven. Bedrijfsmailfilters openen links vaak automatisch om ze te scannen. Een inloglink die bij dat eerste openen al wordt verbruikt, werkt daarna niet meer voor de echte ontvanger. De specialist controleert dat de link eerst een pagina toont waarop de gebruiker zelf bevestigt.

Wat mobiel en data controleren

Volledig scherm
Wat mobiel en data controleren, Mobiel bewaakt wat een gebruiker op een iPhone merkt. Data bewaakt of gegevens kloppen en afgeschermd zijn.

Specialist 4: QA en runtime

Code lezen is niet genoeg; ze moet ook draaien. Deze specialist bouwt het project echt en test het in een browser.

  • Hij voert de typecontrole, de linter en een volledige productiebuild van Next.js uit.
  • Hij laat een geautomatiseerde browser (Playwright) de pagina's openen op mobiel, tablet, laptop en desktop, en controleert contrast, de tabvolgorde met het toetsenbord, de rustige variant voor wie minder beweging wil (prefers-reduced-motion) en het ontbreken van fouten in de console en het netwerk.

Code lezen is niet genoeg: ze moet draaien

Volledig scherm
Code lezen is niet genoeg: ze moet draaien, De QA-specialist bouwt het project echt en laat een browser de pagina's openen op vier formaten.

5. Herstellen zonder eindeloze lus

Wat gebeurt er als een specialist iets vindt? Stel dat in ons voorbeeld beveiliging en data groen geven, maar de mobiele specialist twee problemen meldt: het veld voor het polisnummer staat op mobiel op 14 pixels, waardoor iOS inzoomt, en op de kaart van Cyberverzekering zakt het contrast op een scherm van 390 pixels naar 3,6:1.

De poortwachter verzamelt alleen wat faalde, met het exacte bestand en de regel, bijvoorbeeld ClaimForm.tsx regel 42 en practice-card.module.css regel 18.

Eén specialist vindt twee problemen

Volledig scherm
Eén specialist vindt twee problemen, In het verzonnen voorbeeld geven beveiliging en data groen. De poortwachter neemt alleen de twee mobiele bevindingen mee, met bestand en regel.

De herstelstap past precies die twee punten aan: het lettertype van het veld gaat naar 16 pixels, en het kleurverloop op de kaart wordt onderaan donkerder.

Daarna lopen alleen de controles opnieuw die faalden, plus de QA-specialist, die altijd meedraait. Beveiliging en data behouden hun groene status, tenzij de herstelling hun bestanden raakte.

Gericht herstellen, gericht opnieuw controleren

Volledig scherm
Gericht herstellen, gericht opnieuw controleren, De herstelstap verandert alleen wat faalde. Daarna lopen alleen de mobiele controle en QA opnieuw.

Na maximaal twee herstelrondes is het klaar of stopt het systeem. Blijft een probleem na de tweede ronde bestaan, dan neemt de verantwoordelijke ontwikkelaar het over met een rapport dat per bestand en per regel zegt wat er nog misloopt. Zo blijft een agent niet eindeloos proberen en tokens verbranden.

Hoogstens twee rondes, dan een mens

Volledig scherm
Hoogstens twee rondes, dan een mens, De lus is begrensd. Blijft er na de tweede ronde iets rood, dan neemt de ontwikkelaar over met een rapport per bestand en per regel.

6. Altijd zichtbaar waar de taak staat

Tijdens de hele route houdt het systeem een statusbestand bij. Op elk moment kan een ontwikkelaar zien welke stap loopt, welke controles groen zijn en wat er nog openstaat. Voor ons verzonnen voorbeeld zou de eindstand er na één herstelronde zo uitzien:

Het statusbestand na één herstelronde

Volledig scherm
Het statusbestand na één herstelronde, Op elk moment zichtbaar welke stap loopt en welke controles groen zijn. Dit is de eindstand van het verzonnen voorbeeld.

Wat dit wel en niet oplevert

Deze werkwijze maakt software niet foutloos. Ze verkleint wel de kans dat een heel domein over het hoofd wordt gezien omdat één agent op iets anders gefocust was. Elke specialist kijkt alleen naar zijn eigen lijst, de herstellus is begrensd en bij twijfel beslist een mens.

Het verschil tussen een prototype en een platform waar een organisatie op kan bouwen, zit in de regels waar je niet van afwijkt. Door die regels vast te leggen en elke wijziging er door vier specialisten tegelijk aan te laten toetsen, maken we ze afdwingbaar in plaats van afhankelijk van wie er die dag aan werkte.

Wat dit wel en niet oplevert

Volledig scherm
Wat dit wel en niet oplevert, De werkwijze maakt regels afdwingbaar, niet software foutloos. Het verschil zit in de regels waar je niet van afwijkt.
Plan een gesprek