Ik wilde af van één overvolle assistent die alles half goed doet. Daarom bouwde ik een orchestrator met één Router en kleine gespecialiseerde agents, zodat planning en coaching binnen één gesprek beheersbaar blijven.
Ik merkte dat één alleskunner-prompt voor plannen, coaching en andere taken snel rommelig wordt. De context loopt vol, de kans op misverstanden neemt toe en uitbreiden voelt meteen fragiel.
Wat mij hieraan interesseerde was niet alleen de techniek, maar vooral de vraag hoe je meerdere specialisten binnen één gesprek laat samenwerken zonder dat het gesprek zelf onrustig of onvoorspelbaar wordt.
Deze orchestrator begon dus als project om grip te krijgen op routing, guardrails en logging, terwijl het voor de gebruiker nog steeds als één assistent moet aanvoelen.
Ik koos voor één Telegram-ingang met een Router die eerst normaliseert, controleert en pas daarna beslist welke specialist nodig is.
De sub-agents hebben bewust smalle rollen: Calendar voor agenda-acties, Coach voor advies op basis van die agenda, en later ruimte voor andere workers zonder de basis opnieuw te ontwerpen.
Vaste contracten, guardrails en logging maken het systeem niet alleen uitbreidbaar, maar vooral beter te volgen wanneer er iets misgaat of onduidelijk is.
Belangrijke ontwerpkeuzes
Flow in beeld
Eerst de chatervaring, daarna de Router-flow en de specialistische subflow. Zo zie je niet alleen hoe het systeem is opgebouwd, maar vooral hoe die opzet terugkomt in het gesprek zelf.
Chatflow in actie
Laat zien hoe de orchestrator aan de voorkant nog steeds als één assistent aanvoelt.
Hier wordt de hoofdlijn uitgepakt: wat er aan de voorkant gebeurt, wat de Router beslist en hoe logging helpt om het systeem tijdens het bouwen beheersbaar te houden.
Allowlist, normalisatie en een snelle busy-ack houden het gesprek helder voordat de Router iets beslist.
De Router verdeelt het werk tussen Calendar, Coach en later andere workers zonder dat het gesprek versnipperd voelt.
Logging per hop maakt routes, fouten en terugkoppeling beter te volgen tijdens testen en itereren.
Bewijst dat: Router beslist Think vs. tool, en Coach Worker kan Calendar Worker aanroepen via contract.
Chatervaring
Hey coach, kan ik morgen hardlopen?
Intent: Coach. Think niet nodig → stuur naar Coach Worker.
Check agenda voor morgen via Calendar Worker…
📅 Morgen: meeting 09:00. Vrij voor 08:30.
Advies: Ga om 07:30 lopen.
Je zit vol om 09:00. Ga om 07:30, dan ben je op tijd terug!
Backend logs (n8n & Calendar)
TEXT_IN: "Hey coach, kan ik morgen hardlopen?"
ROUTING: tool='coach' confidence=0.97 | schema enforcement on.
CALL: Calendar Worker → get events tomorrow morning.
SCHEMA_OK: {status:ok, source:coach, suggested_runs:[…]} → terug naar Router.
REPLY_READY: "Ga om 07:30." tool_used=coach
De techniek is hier vooral interessant omdat ze het project beheersbaar houdt: guardrails om de intake schoon te houden, contracten tussen agents en logging om routes terug te lezen.
Bekijk code op GitHubIk heb dit project opgezet van conversatieflow tot n8n-architectuur. De belangrijkste afweging was steeds: hoe houd ik het systeem uitbreidbaar zonder dat het voor de gebruiker zwaar, traag of onduidelijk aanvoelt?
Wat er nu al werkt in de praktijk, en welke inzichten deze opzet mij geeft over multi-agent systemen.
Verder in het portfolio
Deze pagina moet onderdeel voelen van een geheel. Daarom kun je vanaf hier direct door naar de volgende maker-case of terug naar het volledige overzicht.
Een lokale Android party game waarin spelers hetzelfde device doorgeven en de AI actief meespeelt in de ronde.
Een persoonlijke workflow die trainings-, voedings- en planningsdata samenbrengt tot bruikbare dagsuggesties en rustige coaching.