Unit 08.00: A workflow that genuinely needs several agents
After seven modules of arguing for fewer agents, here is a workflow where four is right - and the reason is not the work.
The justification is in the permissions column
Three read-only agents and exactly one that can move money. The split exists so that write access is confined to a single step.
The code lays out a supplier invoice workflow with tools and access per agent.
WORKFLOW = [
("extract the claim from the supplier invoice", "Extractor",
"reads PDFs", "read-only"),
("check it against the contract terms", "Contract checker",
"reads contract store", "read-only"),
("decide approve / query / reject", "Approver",
"no tools", "decision only"),
("post the approved payment", "Poster",
"writes to finance system", "WRITE"),
]
print(f"{'step':44} {'agent':18} {'tools':22} access")
for step, agent, tools, access in WORKFLOW:
print(f"{step:44} {agent:18} {tools:22} {access}")
print("""
This one justifies four agents, and the justification is in the last column
rather than in the work itself: three read-only agents and exactly one that can
move money. Merging any of the first three with the last would give write
access to a step that does not need it.
Different permissions is the strongest reason to split. Different phrasing is
the weakest.
""")
Read the last column first. Extractor, Contract checker and Approver are all read-only; only Poster writes. Merging any of the first three into the last would give write access to a step that does not need it.
The Approver having no tools at all is deliberate. It decides and records a decision; something else acts on it. That separation is what makes the human gate in the next unit meaningful, because there is a decision to approve that is not yet an action.
The mistake this prevents
The mistake is justifying agents by the work they do. Extract, check, decide, post are four verbs and could be four tasks for one agent. What makes them four agents is that one of them needs a permission the others must not have.
Takeaway
Different permissions is the strongest reason to split agents; different phrasing is the weakest. An agent with no tools that only records a decision is a useful shape.
