A team scopes an "agent" to classify incoming support email and route it. The model reads each email and labels its category; a few deterministic branches send it to the right queue. That is a Power Automate flow with one model call. Built as an agent, it inherits non-determinism, an evaluation burden, and a real-time spend risk, and buys nothing for any of it, because there was never a decision for the agent to make that the branches were not already making.
Most AI agent frameworks are, structurally, build guides. They are very good at showing you how to design an agent, which means the one decision they cannot make for you is whether to build one at all. That decision is usually "no," or "not yet," and getting it right is the part a senior architect is actually paid for. An agent is the most capable, the most expensive, and the least predictable rung on a ladder of ways to get work done. Most problems are solved better a rung or two down. This is a guide to finding the lowest rung that solves the problem, the one boundary that genuinely trips teams up, and a clear test for the cases where an agent earns its cost.
TL;DR
- Reach for the lowest rung that works: fix the process, a query, a deterministic flow, a single model call, then an agent. Cost and unpredictability climb fast as you go up.
- The boundary that trips teams up is flow-with-a-model-call versus agent. If the model makes a judgment and the steps around it are fixed, it is a flow. If the next step depends on what the model just found, it is an agent.
- Agents carry a tax that demos hide: non-determinism, a standing evaluation practice, real-time cost risk, and the data work underneath. Budget it before you commit.
- The five-question test below routes most decisions in a few minutes, and two of the five answers are usually "build something cheaper than an agent."
The ladder
Place the problem on a ladder of increasing capability and decreasing predictability, and take the lowest rung that solves it.
| Rung | Use when | What it costs you |
|---|---|---|
| Nothing (fix the process) | The work only exists because two systems disagree that should not | Upstream data ownership, not automation |
| A query or report | The answer is a lookup or aggregation over existing data | A schema and a resolved identity key |
| A deterministic flow | The task is rule-expressible and repeats | Up-front modeling, near-zero per-run risk |
| A flow with one model call | A single judgment (classify, extract, draft) sits inside otherwise fixed steps | One prompt and its eval, no orchestration |
| An agent | The next step depends on what the model just found | Non-determinism, evaluation, runaway cost, upkeep |
The mistake is starting at the top and climbing down only when forced. Start at the bottom and climb only when the rung below genuinely cannot do the job. The most common over-scoping is jumping straight to the top rung when the second-from-top, a flow with a single model call, was the right answer.
The boundary that actually trips teams up
The easy calls are easy. If the task is rule-expressible, it is a flow. If the answer is a lookup over your data, it is a query, and the hard part is resolving the data, not reasoning over it. Point a retrieval pipeline at a customer stored under four spellings and it returns a confident wrong pipeline total at every setting; the fix is a resolved identity key in the data, which is the subject of the companion piece on the data-prep tax. Neither of those needs an agent.
The call that trips people up is the one in the middle: a flow with a model call versus a genuine agent. They look similar because both have a language model doing something smart. The difference is whether the model's output changes what happens next.
- Classify-and-route support email. The model labels the email; the routing branches are fixed and known in advance. The model's answer selects a branch, but it does not invent a new step. That is a flow with a model call. In the Microsoft stack it is a Power Automate flow with an AI Builder or model action, not a Copilot Studio agent.
- Investigate a flaky production incident. The system reads logs, forms a hypothesis, queries a service to test it, and decides the next probe based on what that query returned. The steps are not known in advance; each depends on the last result. That is an agent, and forcing it into a flow would mean enumerating branches you cannot enumerate.
The test in one line: if you can draw the branches in advance, it is a flow. If the model has to decide what the next step even is, it is an agent. A surprising amount of what gets scoped as an agent is the first thing wearing the costume of the second.
The agent tax
When the task genuinely is agent-shaped, price it honestly, because an agent costs more than the rung below it in four ways a one-run demo never shows.
- Non-determinism. The same input can produce different outputs. For open-ended work that is the point; for anything with a correct answer it is a liability you manage with evaluation and guardrails.
- A standing evaluation practice. You cannot unit-test an agent. A minimal baseline is a set of labeled cases, say fifty, with a pass-rate threshold you re-run on every prompt or tool change. Standing that up is roughly a week of work, plus a recurring owner, and most teams discover it late.
- Real-time cost risk. A looping agent spends money with nobody watching, and provider budgets mostly alert rather than stop. A per-run spend guard is not optional once you are past a toy, for the reasons in the spend caps that do not actually cap.
- The data underneath. The agent inherits the state of your data, and if identity and source-of-truth are not resolved, it answers confidently from the wrong records.
A flow that costs a week of modeling and then runs predictably for years is often the better engineering decision than an agent that demos in a day and then needs an eval harness, a spend guard, and a part-time owner.
When should you build a flow instead of an AI agent?
Run a candidate use case through these five questions in order. The first "yes" usually names your rung, and two of the five send you below the agent.
- Is the work only necessary because a process upstream is broken? If the task is reconciling two systems that should not disagree, fix the ownership upstream. Build nothing.
- Is the answer a lookup or aggregation over your data? Build a query, and resolve the data first.
- Is the task rule-expressible and repeatable? Build a deterministic flow.
- Is it a single judgment inside otherwise fixed steps? Build a flow with one model call, not an orchestration.
- Does the next step depend on what the model just found, and is the value worth the tax? Build an agent, with evaluation and a spend guard from day one.
Two short walkthroughs show the test doing real work.
A candidate that stops at question 2. "Give me the total open pipeline for this account across all its subsidiaries." It is a lookup and aggregation over operational data. The honest answer is a query, and the only hard part is resolving the four spellings of the account into one identity, an alternate key or a resolved-account table in Dataverse, not a name match the model guesses. No agent, and a correct, repeatable number.
A candidate that reaches question 5. "Triage ambiguous customer complaints arriving across email, chat, and call notes, decide which need investigation, and gather the context for the ones that do." It is not a fixed process (question 3, no), not one judgment in fixed steps (question 4, no, the investigation path depends on what each complaint turns out to be), and the value is high. This is an agent, and it should ship with a labeled eval set and a spend guard on day one.
The discipline is the deliverable
It is tempting to measure an AI practice by how many agents it ships. The better measure is how many it correctly chose not to ship, because each of those is a problem solved with something cheaper and more reliable, and a budget not spent managing non-determinism that bought nothing.
So make the test a habit: run the five questions out loud at kickoff, before anyone has fallen in love with the architecture. The team that resolved four spellings into one key shipped no agent and got the right number. That is what putting AI where it pays off looks like in practice, and the frameworks will not prompt you to do it, because prompting you to build is what frameworks are for.
Read next
- The Data-Prep Tax: Why Your AI Agent Project Is Really a Data Project - why so many agent projects are data projects, and how to scope the data work first.
- Microsoft's Agents Hub Decoded - what the official agent guidance formalizes, and the restraint and cost calls it leaves to you.
- AI Cost Governance: The Spend Caps That Don't Actually Cap - the real-time spend guard an agent needs once it leaves the demo.
This article was originally published at az365.ai. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at az365.ai.

Top comments (0)