I deleted the RouterAgent in the middle of an architecture review. The lead engineer looked at me like I’d just suggested we replace GPT-4 with a lookup table.
But I had one reason: our state machine always knew what it was waiting for. Why waste a model call guessing what the user wanted?
That moment saved our KYC product from becoming a miniature ChatGPT that nobody needed. It also taught me a lesson that applies to almost every AI product being built today: Most AI agents are overengineered. The most profitable decision you can make is to say ‘no’ to unnecessary complexity.
After analyzing 1,014 viral articles and breaking down dozens of real-world AI architectures—from Bank of America’s Erica to Klarna’s chatbot—I’ve distilled the pattern into a two-axis framework. It’s not about which model to use. It’s about how much control you give the model.
The One Question That Ends All Architecture Debates
Anthropic’s guide to effective agents defines the split perfectly: Workflows are code-defined paths. Agents let the model decide the next step. That’s the only question that matters: Does code or the model choose what happens next?
Code gives you predictability, auditability, low cost. The model gives you flexibility, but at the price of unpredictability, higher cost, and harder evaluation. You’re not choosing a technology. You’re choosing how much decision-making power to delegate to a black box.
The Two Axes That Pin Down Your Architecture
Plot your product on two axes:
Horizontal axis: Starting point certainty. When the user arrives, do you already know what they want to do? (Yes/No)
Vertical axis: Endpoint structure. Can you define the output as a template? (Template > Judge > Subjective)
Four quadrants emerge:
- Top-right (Known start + Template output): Workflow. Code directs, model fills in the blanks. My KYC form engine lives here. Predictable, cheap, auditable.
- Top-left (Unknown start + Template output): Routing + multiple workflows. Classify the intent first, then route to a fixed process. Bank of America’s Erica does this—90% of queries are ‘check balance’, ‘find transaction’.
- Bottom-right (Known start + Judge/Subjective output): Autonomous agent. The task is clear but the output is open-ended. Deep research tools, coding agents. But here’s the trap: this quadrant only works if you have a reliable judge (tests, rules) to evaluate the output. Without it, your agent is a liability.
- Bottom-left (Unknown everything): Open-ended chat assistant. ChatGPT, Claude. Unless you’re building a general-purpose assistant, stay out of this quadrant. It’s the most expensive and hardest to evaluate.
The Three Traps That Will Bite You
Trap 1: ‘Known endpoint’ doesn’t mean ‘workflow’. A coding agent has a known endpoint (fix this bug, tests pass). But tests are judges, not templates. The output is open-ended code. So it belongs in the agent quadrant, not workflow. The distinction: template vs. judge. If you can’t predefine the exact shape of the output, you need an agent—and a judge.
Trap 2: Even with known start and template, check the environment. My KYC product works because the documents are bounded (IDs, passports, utility bills). But an RPA bot that fills forms on any website? The environment is unbounded. That’s an agent problem, not a workflow problem. Environment boundedness is the third axis nobody talks about.
Trap 3: Don’t map your product to one quadrant—map each task. Erica handles 90% in the top-left, but the long tail falls into bottom-left. Klarna’s AI handled 2/3 of chats, then had to pull back for complex cases. Mature products are architecture cocktails: routing + workflows + a safety net of agents or humans.
The Two Rules That Protect You From Hype
Rule 1: Human-in-the-loop isn’t a quadrant feature—it’s a risk calculation. The intensity of human oversight depends on irreversibility × unverifiability. A read-only research agent? Zero human checks. A payment agent? Every step confirms. My KYC engine has a ‘submit checklist’ before final submission. That’s the same principle.
Rule 2: Always push toward the top-right quadrant—but don’t kill the product’s value. Every step you move left or down adds cost and complexity. But if you push Deep Research into a template, you destroy its value. The quadrant boundaries shift with every new model generation. Re-evaluate every six months.
The Practical Checklist: Three Questions
Next time someone says ‘let’s add an agent’, ask in order:
- Can the output be defined as a template/schema? If yes, you’re in the right half. If no, you need an agent—and a judge.
- Is the entry point a single task? If yes, no routing needed. If no, add a routing layer (but consider buttons first—they’re cheaper than AI).
- Is the execution environment bounded? If yes, pure workflow works. If no, you need an agent that can handle the unknown.
If all three are yes, you’re in the happiest quadrant. If any is no, start budgeting for evaluation and guardrails.
The best AI product design uses the model only where it’s irreplaceable, and code everywhere else. The line between them is drawn by these two axes. Stop building agents you don’t need. Start building products that actually work.
FAQ
Q: When should I actually use an autonomous agent instead of a workflow?
A: Use an agent when the output is open-ended and you have a reliable judge (tests, rules, or human review) to evaluate it. If you can predefine the exact output template, use a workflow. Period.
Q: What's the biggest mistake teams make when adopting this framework?
A: They treat the quadrant as a product-level label, not a task-level one. A single product often mixes workflows for known tasks and agents for edge cases. Map each user journey, not the whole app.
Q: Is this framework future-proof as models improve?
A: No. The boundaries shift with every model generation. What needed a pipeline last year might become a single agent call this year. Re-evaluate every six months. But the core question—code vs. model deciding the next step—will always be the first principle.