A crew is not a substitute for a finished job.
Most multi-agent systems I review are one unfinished agent wearing three nameplates.
Yesterday I said CrewAI Flows is the concession that makes a casting-call framework usable in a narrow band. Microsoft Agent Framework made the opposite move: it productized every coordination pattern people were already arguing about and gave GroupChat an import path next to Handoff. Both posts assumed you already wanted more than one agent. The other question belongs on the table: should you?
The seduction is organizational, not technical. A prior-authorization packet already has desks. Eligibility. Clinical criteria. Coding. A determination letter. A claims file already has intake, adjudication, correspondence. Standing up a researcher, a writer, and a critic feels like staffing a unit. The YAML even looks like a job description: role, goal, backstory. Product managers can read it. Nobody has to admit the first agent still cannot produce a letter a nurse would sign.
I have sat in those reviews. The first agent drafts a determination that fails the checklist. Someone proposes a critic agent. The critic restates the same missing policy language because it was never in the retrieval set. A manager agent arrives to reconcile the two. Three model bills now share one unsolved retrieval problem. The letter is still wrong. The p99 is not.
That is how teams postpone specifying the job. The frameworks will not name it for you. Adding agents looks like architecture. It is staffing.
A finished single agent is not a chatbot with a long system prompt. It is a loop with tools, a schema the next system can reject, a retrieval set that actually contains the policy, and a stop condition that does not require a second personality to fire. Saturday I said if you cannot name the interface without using the word “discuss,” you do not have a coordination problem. Teams treat that as the end of the conversation. Finish the interface. Then ask whether a second caller of that interface earns a second model.
Most work that looks like a department is sequential work with a checklist. Eligibility before clinical. Clinical before coding. Coding before the letter. That is a path, not a team. CrewAI shipped Flows because the path was always the artifact. A router that returns “deny” or “clinical” is a function. It does not need a backstory. Wrapping each step in a specialist persona and letting them hand off is how you turn a flowchart into a meeting.
The cost arrives before the quality argument does. Two specialists and a supervisor are three model calls, three context assemblies, three chances for a summary to drop the finding that mattered. Give each specialist the prior transcript “for context” and you have reprinted the minutes at every seat. I have watched a workflow that used to be one hop grow a p99 that made the operations lead ask whether we should go back to the queue. Nobody had put a budget on talk. Latency is the tell. If the second agent did not remove work from the first, it added delay.
Debuggability is the part the demo never measures. One agent, one transcript, one schema. You can point at the tool call that fetched the wrong policy and the field that accepted a hallucination. Three agents in a GroupChat produce a transcript in which agreement is the optimization target. I would rather explain a rejected JSON document to a CISO than explain why the critic congratulated the writer on a sentence that cited a guideline we do not use.
There is a version of multi-agent that is not theater. It is narrower than the README.
Independence is the first filter. The subtasks cannot need each other’s chain of thought. They need a named interface: a schema, a document, a status field. Eligibility can run without seeing how clinical will argue. Clinical should not need the eligibility agent’s inner monologue. It needs the eligibility decision. If you cannot hand the second agent a structured object and walk away, you do not have two tasks. You have one task you have not specified.
Parallelism only counts if it pays for the extra hop. Independent work that must wait in a line is still one agent with a loop. Independent work that can run at the same time, against different systems, on a clock that cares, is the case for a supervisor that fans out and a blackboard that collects. A FOIA request that queries three departments is that shape. A single clinical judgment is not. Do not invent parallelism to justify the org chart.
A real model difference is rarer than the org chart implies. A cheap classifier for eligibility routing and a stronger model for the letter can be the right split, if the cheap model is actually cheaper after you count the extra assembly and the failure path. Two copies of the same frontier model wearing different hats is costume design. I have seen teams specialize a researcher and a writer on identical weights, identical tools, nearly identical prompts. They bought a conversation. They did not buy a capability.
The human gate belongs between the agents, not after the committee. A reviewer who signs the determination after a specialist posts a structured finding is a control. A reviewer who reads a five-agent debate and then signs anyway is a witness. If the gate is real, the agent on the far side of it should see the approved artifact, not the argument that produced it. That is a blackboard with a lock, not a GroupChat with a human invited to the channel.
When those four are present, supervisor or blackboard will carry the work. Hierarchical will carry it if the work is actually a tree and you have budgeted the summary loss. Swarm still does not belong on a case file. GroupChat still does not. Magentic still needs a token budget and a termination condition I have not been shown on a workload that is not a demo.
When those four are not present, and they are not present for most of the packets I see, the move is not a smaller crew. The move is one agent, better tools, and a checklist the schema will enforce. Put the policy language in the retrieval set. Make the letter a document a validator can fail. Put the deny branch in a router. Persist the state so a crash on step 37 does not restage the conversation. That last part is still a runtime problem. Hermes, Restate, a checkpointer you actually trust. Adding a critic agent will not make the process survive a restart.
I keep getting the same objection. A second pair of eyes caught a real error in the demo. Of course it did. A checklist would have caught it cheaper. A unit test on the schema would have caught it every time. The critic agent is a probabilistic re-read of work you have not specified hard enough to test. Use it for drafts a human will rewrite. Do not use it as the control that makes a determination defensible.
The other objection is staffing. The work already has four desks, so the system should have four agents. Desks exist because humans cannot hold the whole packet and the whole policy manual in working memory at once. A model can hold more of both than a person, and it still fails when the interface is missing. Mapping desks onto agents copies the constraint that made the desks necessary. Sometimes that constraint is real: different credentials, different sandboxes, different systems that must not see each other. That is isolation, and isolation is a reason to split. Personality is not.
Tomorrow I will put the version that survives this argument into a reference architecture for a regulated workflow. Supervisor. Sandboxed specialists. A validation gate. Durable execution. An audit log that is a record, not a transcript. The architecture assumes you already passed today’s test. If you cannot name the independent subtasks, the parallel paths, the model difference, and the human gate, do not start drawing the graph. Finish the single agent until the leftover work has an interface.
If you are about to import GroupChat or stand up a crew because the first draft was sloppy, stop. Sloppy is a specification problem. A committee will not write the spec for you.
If this was useful, forward it to one engineer who needs less noise in their feed.


