An agentic assistant that lives inside Microsoft Teams: routes questions across specialised agents, calls internal tools, retrieves from SharePoint, and runs entirely on Azure with managed identity and guardrails.
A large organisation needed employees to get answers grounded in internal documents (policies, procedures, technical specs) and to perform actions (open a ticket, look up a record, notify a channel) without leaving Teams. A single monolithic RAG did not scale: the retrieval quality collapsed as domains multiplied, tool calls became unreliable, and one prompt could not hold the entire policy surface.
I split the assistant into a supervisor plus specialised agents, each owning one domain and one tool surface. The supervisor is a LangGraph state machine that decides which agent to activate, orchestrates multi-step reasoning, and keeps a bounded shared memory. Retrieval, structured tools and write actions live in separate agents so their prompts, evaluations and permissions stay independent.
Invest in an evaluation harness from day one, not day thirty. A small labelled set per agent, replayed on every prompt change, would have caught two regressions that I caught only through user reports.