Nieuwbouwers draait nieuwbouw voor Nederlandse gemeenten: projecten, uitgiftes, inschrijvingen, betalingen — het platform zelf beschreven we in een aparte case. Deze pagina gaat over wat daarna kwam: het platform laten voelen alsof er een extra collega bij is. Geen losse chatbot-widget, maar AI aangesloten op dezelfde rechten, dezelfde audittrail en dezelfde discipline als de rest van het systeem.

Eén gateway, drie gezichten

Elke AI-feature loopt door één gateway, gebouwd op de Laravel AI SDK. In de kern zit een contractregister: precies acht content-entiteiten — projecten, woonkernen, fases, uitgiftes, objecten, nieuws, FAQ's, pagina's — elk met een gedeclareerd schema van leesbare en schrijfbare velden. Dat register is voor de AI de hele wereld. Gebruikers, inschrijvingen, betalingen, berichten? Geen contract, dus die bestaan niet. Een testsuite vergrendelt de lijst; verbreden is een bewuste, gereviewde beslissing — nooit een bijeffect.

In elke tool checkt de server opnieuw de rechten en tenant-toegang van de ingelogde gebruiker. Wat de AI kan, is altijd de doorsnede van wat z'n tools toestaan en wat jij mag — het enthousiasme van het model doet er niet toe.

De AI-assistent: een extra paar handen

Op elke backofficepagina openen medewerkers en projectontwikkelaars de AI-assistent — een uitschuifpaneel dat zijn antwoorden live streamt. Hij zoekt dingen op met echte tools (zoeken, lezen, tellen, schema beschrijven), dus antwoorden komen uit de database, niet uit de losse pols. Hij is ook eerlijk over zijn grenzen: vraag naar inschrijvingen van bezoekers en hij vertelt je dat die buiten zijn bereik liggen — bewust.

Het AI-assistent-paneel in de Nieuwbouwers-backoffice beantwoordt een vraag over de objecten van een project, met de uitgifte en beide objecten inclusief status.
De assistent antwoordt uit de database, via tools — en benoemt zijn grenzen: inschrijvingen van bezoekers zitten simpelweg niet in zijn gereedschap.

Schrijven is waar de meeste AI-integraties eng worden, dus hier is het een tweetrap: de assistent bewerkt nooit rechtstreeks records. Hij bouwt een wijzigingsvoorstel — een diff-kaart die exact toont welke velden op welke records veranderen — en een mens klikt op goedkeuren of afwijzen. Bij goedkeuring wordt de wijziging opnieuw gevalideerd en in een transactie toegepast. Ook bulkwerk: "geef deze acht kavels dezelfde afbeeldingen als kavel 130" wordt acht voorstellen in één kaart, één keer goedgekeurd, toegepast met een link naar elk bijgewerkt record.

Een AI-gesprek in het beheer met een bulkbewerking: acht wijzigingsvoorstellen in een diff-kaart, daarna acht toegepaste wijzigingen met links naar elk bijgewerkt kavel.
Een bulkbewerking als gesprek: acht voorstellen in één diff-kaart, één menselijke goedkeuring, acht objecten bijgewerkt — allemaal gelinkt en gelogd.

De assistent kan ook de website van een projectontwikkelaar ophalen, die als bronmateriaal gebruiken voor nieuwe content en de afbeeldingen ervan importeren in de mediabibliotheek — begrensd, bevestigd in de chat en beveiligd tegen het ophalen van interne adressen. Beheerders zien elk gesprek terug in een AI-gesprekken-overzicht, dus "wat heeft de AI vorige week gedaan" is een tabel, geen mysterie.

AI Workflows: de assistent, op schema

Sommig werk hoort niet te wachten tot iemand het vraagt. Een workflow is een opgeslagen prompt met een trigger, een modus en een set capability-schakelaars — dezelfde gateway, maar headless. Elke ochtend om acht uur schrijft één workflow een concept-nieuwsbericht voor de regio Lelystad: hij zoekt op het web naar regionaal woningnieuws, schrijft het stuk in het Nederlands, zet bronvermelding onderaan en slaat het op als verborgen concept voor een redacteur.

Een workflow-run in het Dispatch-overzicht: de prompt, de aangeroepen tools, 56 seconden looptijd, 226.247 tokens op claude-opus-4-7, en het voorgestelde concept-nieuwsartikel met bronvermelding.
Eén run op het Dispatch-bord: de prompt, de aangeroepen tools, 56 seconden, 226k tokens op claude-opus-4-7 — en een concept-nieuwsartikel mét bronnen.

Workflows kennen drie modi: alleen rapporteren (lezen en een samenvatting mailen naar medewerkers), schrijven als concept (wijzigingen landen verborgen, een mens publiceert) en automatisch toepassen — dat één ding categorisch blijft weigeren: verwijderen. Een workflow die een verwijdering voorstelt, wordt ter plekke gedegradeerd naar handmatige review. Onder de motorkap draait elke run als een vaste systeemrol met aanmaak- en bewerkrechten op de acht content-entiteiten en geen enkel verwijderrecht — een regel die de rolleneditor zelf niet kan wijzigen.

De AI Workflows-lijst: een workflow genaamd Lelystad Nieuws met modus 'Schrijven als concept (verborgen)', een dagelijks schema om 08:00, een aan/uit-schakelaar en een 'Nu uitvoeren'-knop.
Een workflow is een prompt met een trigger en een modus: "Schrijven als concept (verborgen)", dagelijks om 08:00, één schakelaar om te pauzeren.

De configuratie is bewust vriendelijk: een herhalingskiezer in plaats van rauwe cron, capability-schakelaars voor websearch, mediabibliotheek en e-mail, en @-mentions in de prompteditor die aanvullen over de entiteiten en tools die je hebt aangezet — iets noemen verbreedt nooit de toegang, het maakt prompts alleen preciezer. Elke run is begrensd door een tokenbudget en een dagelijkse runlimiet, en het Dispatch-bord toont elke run met status, duur, model en tokenaantal.

Een AI-helpdesk voor woningzoekers

Het derde gezicht leeft aan de publieke kant. Ingelogde leden stellen de AI-helpdesk van de site de vragen die een druk woonteam de hele dag beantwoordt: wat komt eraan in mijn woonkern, welke kavels passen bij twee-onder-een-kap, waar vind ik de brochure. Hij leest uitsluitend publiek zichtbare content — over alle regio's heen, met de huidige regio vooraan — en linkt direct naar de pagina's en documenten die hij aanhaalt.

Deze is read-only by construction: drie zoek-en-leestools, zeven publieke contenttypes, geen enkel schrijfpad. Hij weet niets persoonlijks — zelfs niet het profiel van degene die de vraag stelt. Hij draait op een snel, klein Claude-model met eigen rate limits en een dagelijks tokenbudget, zodat een nieuwsgierige menigte de rekening niet kan laten oplopen.

De stille AI

Twee kleinere onderdelen doen hun werk zonder chatvenster. Een AI-check draait bij het opslaan: een beheerder schrijft één keer de contentrichtlijnen, en als een ontwikkelaar een project of evenement opslaat, toetst het model de gewijzigde velden daaraan en kan het de save blokkeren met concrete, leesbare punten — valt de check uit, dan gaat het opslaan gewoon door. En de spreadsheet-importwizard gebruikt AI om tabbladen te herkennen en kolommen te mappen uit welk Excel-bestand een ontwikkelaar ook uploadt — hij suggereert alleen een mapping, op basis van een steekproef van 20 rijen, en een mens bevestigt voordat er iets wordt geïmporteerd.

En alles wordt gemeten. Een verbruiksdashboard registreert elke aanroep — assistent, helpdesk, checks, imports, workflows — met echte tokenaantallen en kosten per feature. Als iemand vraagt "wat kost die AI ons?", is het antwoord een scherm, geen schouderophalen.

Veiligheid ís de architectuur

Het eerste principe uit het ontwerpdocument: behandel het model als een niet-vertrouwde, mogelijk gekaapte gebruiker.

Dat principe zie je overal terug. De assistent heeft geen e-mail-, webhook- of vrije HTTP-tools — dus een promptinjectie in een opgehaalde webpagina kan nergens iets naartoe sturen; het hoogst haalbare is een wijzigingsvoorstel dat een mens afwijst. Rechten worden server-side in elke tool afgedwongen. Elk bericht van en naar de AI belandt in dezelfde audittrail als menselijke acties — als metadata, niet als inhoud — en toegepaste AI-wijzigingen krijgen een stempel van het voorstel dat ze veroorzaakte. Promptlogs leven zeven dagen; chatbijlagen worden na zeven dagen verwijderd. En het privacydocument van het platform zegt het onomwonden: het platform stuurt zelf nooit persoonsgegevens van woningzoekers naar een AI-provider.

Voor de EU AI Act- en dataresidentievragen die hierbij horen, bouwen we standaard volgens EU-conforme normen — zie onze EU Ready-pagina.

Het resultaat

Het team kreeg een collega die nooit slaapt: bulkbewerkingen die een middag kostten zijn nu een chatbericht en één goedkeuring; nieuwsconcepten liggen klaar in het CMS vóór de koffie van de redacteur; woningzoekers krijgen om 23:00 uur antwoorden mét bronnen. En omdat elke actie gescopeerd, gebudgetteerd, goedgekeurd en gelogd is, kunnen de mensen die verantwoordelijk zijn voor het platform ja zeggen tegen AI zonder duimen.

FAQ

Kan YoTech zo'n AI-laag aan onze software toevoegen?

Ja — dat is precies waar deze case voor staat. Het patroon (entity-contracten, een kleine set tools, een goedkeuringspoort, budgetten en audit) past op elk product met een beheeromgeving en een database. Laravel is ons thuisveld, maar de architectuur zit er niet aan vast.

Kan de AI zelfstandig data wijzigen of verwijderen?

Schrijven gaat via voorstellen: de assistent bouwt een diff-kaart die een mens goedkeurt of afwijst, en elke goedgekeurde wijziging wordt opnieuw gevalideerd en in een transactie toegepast. Workflows draaien onder een vaste rol zonder enig verwijderrecht; in automatische modus degradeert elk verwijdervoorstel de run naar handmatige review. Verwijderen in de chat staat standaard uit.

Zijn de persoonsgegevens van onze klanten veilig?

De garantie is structureel, geen prompt: alleen content-entiteiten hebben een AI-contract, dus gebruikers, inschrijvingen, betalingen en berichten bestaan simpelweg niet voor de AI. De system prompt bevat geen gebruikersidentiteit, Anthropic traint niet op API-data, promptlogs worden zeven dagen bewaard en chatbijlagen na zeven dagen verwijderd.

Wat kost het om te draaien?

Elke klus krijgt het juiste model — een zwaar Claude-model voor de assistent en workflows, een snel klein model voor de helpdesk en contentchecks. Elke aanroep wordt gemeten in een verbruiksdashboard met echte tokenaantallen en kosten, en budgetten per beurt, per run en per dag begrenzen de uitgaven vooraf.

Wat als iemand het probeert te misbruiken — promptinjectie?

Het ontwerp gaat ervan uit dat het model gekaapt kan worden. De assistent heeft geen e-mail- of webhook-tools, dus geïnjecteerde instructies kunnen nergens data naartoe sturen; rechten worden server-side in elke tool afgedwongen; het ergste scenario is een wijzigingsvoorstel dat een mens afwijst. Rate limits en tokenbudgetten remmen misbruik, en elk bericht belandt in de audittrail.

Wil je zo'n AI-laag in je eigen product? Plan een call — we bouwen het onder jouw merk, white-label.