Personeelsplanning is mensenwerk. Een planner weet dat Jan en Margriet liever niet samen werken, dat Erica al te veel avonddiensten heeft gedraaid, en dat de weekendbezetting op de IC altijd krap is. Die kennis zit in hoofden, niet in systemen. Maar hoe vertaal je die inzichten naar een rooster dat ook daadwerkelijk klopt?
Bij Intus, ontwikkelaar van InPlanning voor workforce management in de zorg en andere sectoren, bouwen we aan een AI-agent die precies dat doet: menselijke expertise combineren met geautomatiseerde optimalisatie.
Het probleem: complexe puzzels met veel variabelen
Bij personeelsplanning komen dagelijks puzzels voorbij die lastig op te lossen zijn. Diensten die niemand wil, conflicterende voorkeuren, bezettingstekorten op lastige momenten. De planner moet rekening houden met beschermde vrije dagen van medewerkers, urenbalansen, CAO-regels, kwalificaties, en tientallen andere wensen en eisen. Eén wijziging kan een cascade aan gevolgen hebben.
Voorheen betekende dit: Via trial-and-error en puzzelen door de planner, zoeken naar een oplossing die aan alle eisen voldoet. In de huidige tijd met veel personeelstekorten is het vaak niet zomaar mogelijk om direct een tekort op te lossen.
De oplossing: een agent die luistert en optimaliseert
Eerst even terug naar de basis: wat is een agent eigenlijk? Een agent is een systeem waarin een LLM zelf bepaalt welke stappen nodig zijn om een taak te voltooien. Anders dan een chatbot die alleen reageert, kan een agent actief tools aanroepen, informatie ophalen, en doorwerken tot het doel bereikt is.
Elke agent heeft vier kerncomponenten:
- Een reasoning model. Het brein van de agent. In ons geval Claude, die de vraag van de planner begrijpt en bepaalt welke acties nodig zijn.
- Een prompt. De instructies die definiëren wat de agent moet doen, wanneer de taak af is, en wanneer hij terug moet naar de gebruiker voor input.
- Memory. Zowel korte termijn (de huidige conversatie) als lange termijn (wat de agent onthoudt over sessies heen). We gebruiken Mem0 zodat de agent context behoudt: als een planner eerder heeft aangegeven dat afdeling X altijd krap zit, onthoudt de agent dat.
- Tool use. De mogelijkheid om andere systemen aan te roepen, zoals InPlanning. De agent vertaalt natuurlijke taal naar API calls, database queries, en solver configuraties.
De Planner Agent die we ontwikkelen combineert deze vier elementen:
- Een prompt die duidelijk de taak aantuurt.
- Natuurlijke taal als interface. Een planner typt: “Er is onderbezetting op de avonddienst van 6 maart, niveau 2, op de Zuidvleugel. Kun je een oplossing vinden?” De agent begrijpt dit, zonder dat de planner query-taal of filters hoeft te kennen.
- Directe toegang tot roosterdata. Via de InPlanning API haalt de agent real-time informatie op: wie is er ingepland, waar zit overbezetting, welke medewerkers hebben de juiste kwalificaties, wie heeft een beschermde vrije dag?
- Operations Research onder de motorkap. De agent configureert Google OR-Tools om de optimale oplossing te berekenen. Harde constraints (CAO-regels, maximale diensten) worden gerespecteerd, zachte constraints (voorkeuren, urenbalans, eerlijke verdeling) worden meegewogen.
Concrete Scenario’s
Een paar voorbeelden van wat de agent aankan:
Weekend-swap. Zaterdagochtend is overbezet (+1), zaterdagmiddag onderbezet (-1). De agent stelt voor om één medewerker te verschuiven en toont welke opties het minste impact hebben op urenbalansen.
Secundaire vaardigheden. Een dienst vereist iemand met een specifieke kwalificatie (bijvoorbeeld Echo-2 certificering). De agent zoekt eerst beschikbare medewerkers met die vaardigheid, en stelt indien nodig een ruil voor waarbij expliciet wordt gemeld dat dit elders een tekort creëert.
Chain swaps. Soms is de oplossing niet één verschuiving maar een keten: verplaats A naar dienst X, zodat B naar dienst Y kan, waardoor het tekort op Z is opgelost. Dit soort puzzels zijn handmatig tijdrovend; de agent lost ze in seconden op.
De mens blijft in controle
Dit is geen autonome AI die roosters overneemt. De planner blijft beslissen. De agent stelt oplossingen voor, toont de trade-offs (“als je dit doet, ontstaat daar een tekort”), en wacht op goedkeuring. De planner brengt de context die de agent niet heeft: dat teamlid X liever niet op woensdagmiddag werkt, dat afdeling Y net een reorganisatie achter de rug heeft.
Het is een samenspel. De planner weet waar de knelpunten zitten en kan die in normale taal uitleggen. De agent vertaalt dat naar wiskundige constraints en rekent de opties door. Samen komen ze sneller tot een beter rooster.
Technische stack
Voor het ontwikkelen van deze agent gebruiken we moderne frameworks en tools, die ons volledige controle geven over configuratie van de agents:
- PydanticAI als agent-framework voor type-safe tool calling en gestructureerde outputs.
- FastAPI voor de backend.
- PostgreSQL met pgvector voor semantic search over documentatie (CAO-regels, InPlanning handleidingen).
- Mem0 voor conversational memory, zodat de agent context onthoudt over meerdere vragen.
- Google OR-Tools voor de daadwerkelijke optimalisatie.
Alles draait op Kubernetes en is code-first.
Wat levert het op?
Waar een planner voorheen minuten kon zoeken naar een oplossing voor een complexe chain swap, levert de agent binnen seconden meerdere opties. De planner houdt tijd over voor gesprekken met teamleden, anticiperen op veranderingen, en nadenken over capaciteit.
Het project zit momenteel in pilot-fase, met demo-omgevingen waarin echte scenario’s worden getest.
Waarom dit werkt bij Intus
AI-agents krijgen vaak kritiek: te veel hype, te weinig concrete waarde. Hier werkt het omdat er een afgebakend domein is (roosterplanning), duidelijke constraints (CAO, kwalificaties, uren), en een mens die de controle blijft houden. De agent vervangt de planner niet. De agent versterkt de planner.
Daarnaast geeft Europa met haar GDPR en EU AI Act duidelijke kaders waarbinnen de AI-agent veilig en betrouwbaar ontwikkeld kon worden.
Een patroon voor meer toepassingen
De les uit dit project reikt verder dan roosterplanning. Wat we hier bouwen is een patroon: natuurlijke taal als brug tussen menselijke expertise en complexe tooling.
Operations Research tools zoals Google OR-Tools zijn enorm krachtig. Ze kunnen optimalisatieproblemen oplossen die voor mensen onmogelijk zijn om handmatig te doorgronden (binnen redelijke tijd). Maar ze hebben een drempel: je moet weten hoe je ze configureert. Welke variabelen definieer je? Welke constraints zijn hard, welke zacht? Hoe weeg je verschillende doelen tegen elkaar af?
Traditioneel vereist dit een specialist. Iemand die zowel het domein begrijpt als de wiskunde achter deze OR tools. Die combinatie is zeldzaam en duur.
Wat LLMs toevoegen is een vertaallaag. Een planner hoeft niet te weten hoe OR-Tools precies werkt. De planner zegt: “Erica heeft al zes avonddiensten gedraaid deze maand, dat is te veel.” De agent vertaalt dit naar een soft constraint met een penalty weight. De planner zegt: “Niemand mag meer dan vijf nachtdiensten achter elkaar.” De agent maakt er een hard constraint van.
Dit patroon werkt op veel plekken waar de volgende dingen samenkomen:
- Complexe tooling met een steile leercurve. ERP-systemen, financiële modellen, supply chain optimalisatie, CAD-software. Tools die krachtig zijn maar expertise vereisen om te bedienen.
- Domeinkennis die bij mensen zit. De planner die weet welke medewerker binnenkort vertrekt. De inkoper die weet dat leverancier X onbetrouwbaar is. De engineer die weet dat onderdeel Y altijd als eerste faalt. Kennis die niet in handleidingen staat.
- Beslissingen die context vereisen. Situaties waarin een puur algoritmische oplossing niet volstaat, waar menselijk oordeel nodig blijft.
De agent wordt dan de tolk tussen twee werelden. De mens praat in natuurlijke taal over wat er moet gebeuren. De agent vertaalt naar API calls, database queries, solver configuraties. De tool rekent. De agent vertaalt het resultaat terug naar begrijpelijke opties. De mens beslist.
Breder toepasbaar
Dit verandert hoe organisaties met complexe tools kunnen werken. In plaats van maanden training of dure consultants, wordt de interface een gesprek.
Bij Intus zien we dit concreet. Planners die eerder alleen op basis van hun eigen analytische skills om complexe situaties op te lossen, kunnen met de agent oplossingen laten uitwerken. De kennis die in hun hoofd zit, die intuïtie over wat een goed rooster maakt, wordt nu input voor de solver.





