← Terug naar projectenAgents & Workflows
Workflow

Multi-agent orchestratoréén gesprek, meerdere specialisten

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.

Waarom ik dit project bouwde

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.

De opzet die ik heb gekozen

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

  • Eén ingang, meerdere specialisten: voor de gebruiker één assistent, onder water meerdere gerichte flows.
  • LLM alleen waar interpretatie helpt; code pakt bulk, validatie en voorspelbare stappen op.
  • Een snelle 'ik ben bezig' reply houdt het gesprek vloeiend terwijl de routing op de achtergrond start.
  • Sheets-logging maakt elke hop terug te lezen wanneer ik iets wil debuggen of aanscherpen.
  • Nieuwe agents kunnen erbij zonder dat de Router zelf telkens opnieuw ontworpen hoeft te worden.

Flow in beeld

Hoe de ervaring en opzet samenkomen

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.

1:00
CHAT DEMO1:00
CHAT DEMO

Chatflow in actie

Laat zien hoe de orchestrator aan de voorkant nog steeds als één assistent aanvoelt.

1:00
Chatflow in actie geselecteerd

Hoe de workflow in de praktijk werkt

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.

🛡️Rust in de intake

Allowlist, normalisatie en een snelle busy-ack houden het gesprek helder voordat de Router iets beslist.

🧭Router + specialisten

De Router verdeelt het werk tussen Calendar, Coach en later andere workers zonder dat het gesprek versnipperd voelt.

📊Grip op wat er gebeurt

Logging per hop maakt routes, fouten en terugkoppeling beter te volgen tijdens testen en itereren.

ENGINE ROOMRouter + Workers
SYSTEM_LOGS_ACTIVE
LegendRouterWorkerUserLogs

Bewijst dat: Router beslist Think vs. tool, en Coach Worker kan Calendar Worker aanroepen via contract.

RequestRouteActionResult

Chatervaring

Gebruiker19:30

Hey coach, kan ik morgen hardlopen?

Router19:30

Intent: Coach. Think niet nodig → stuur naar Coach Worker.

Coach Worker19:30

Check agenda voor morgen via Calendar Worker…

Calendar Worker19:31

📅 Morgen: meeting 09:00. Vrij voor 08:30.

Coach Worker19:31

Advies: Ga om 07:30 lopen.

Router19:31

Je zit vol om 09:00. Ga om 07:30, dan ben je op tijd terug!

Backend logs (n8n & Calendar)

RequestTelegram

TEXT_IN: "Hey coach, kan ik morgen hardlopen?"

RouteRouter

ROUTING: tool='coach' confidence=0.97 | schema enforcement on.

ActionCoach Worker

CALL: Calendar Worker → get events tomorrow morning.

ResultCoach Worker

SCHEMA_OK: {status:ok, source:coach, suggested_runs:[…]} → terug naar Router.

ResultRouter

REPLY_READY: "Ga om 07:30." tool_used=coach

Bouw & technische keuzes

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 GitHub

Belangrijkste bouwstenen

  • n8n als orkestratielaag, met Telegram, Google Calendar, Google Sheets, OpenAI en TypeScript code-nodes.
  • Router + Workers: één centrale ingang, daarna losse subflows die elk één taak goed moeten doen.
  • Guardrails en contracten: allowlist, schema-validatie en vaste JSON-afspraken tussen Router en Workers.
  • Observability via Sheets logging en beperkte geheugencontext, zodat ik routes en fouten kan teruglezen.

Mijn rol & afwegingen

Ik 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?

  • Router-prompt + JSON-contracten ontworpen voor Workers zodat uitbreiden voorspelbaar blijft.
  • Guardrails gebouwd: allowlist + Think-step + schema/regex-parsers voor bulk-requests.
  • Observability opgezet: Sheets-logging van elke stap om snel te debuggen en regressies te vangen.

Wat het nu oplevert & wat ik leer

Wat er nu al werkt in de praktijk, en welke inzichten deze opzet mij geeft over multi-agent systemen.

Wat al werkt

  • Calendar Agent werkt live binnen dezelfde Router-flow en laat zien dat de basisopzet echt bruikbaar is.
  • Coach Agent kan agenda-data meenemen in zijn advies zonder dat daar een aparte losse bot voor nodig is.
  • Nieuwe agents zijn technisch in te prikken zonder de Router volledig om te gooien.
  • Logging in Sheets maakt routes, fouten en vervolgstappen zichtbaar tijdens testen en itereren.

Wat ik meeneem

  • Te veel gedeelde context maakt sub-agents snel rommelig; scoped context werkt merkbaar beter.
  • Code en LLM vullen elkaar hier beter aan dan één grote generatieve laag voor alles.
  • Kleine UX-dingen, zoals een snelle 'ik ben bezig' reply, maken in chatflows verrassend veel verschil.

Wat ik hierna wil uitbouwen

  • Research- en Takenlijst-Workers aansluiten zonder Router aan te passen (plug-and-play valideren).
  • Slack/WhatsApp-kanalen toevoegen bovenop dezelfde Router-flow.
  • Dashboard bovenop de Sheets-logs voor real-time monitoring en regressies.