Agents vs. Workflows vs. Chatbots: Knowing What You're Actually Building

Blog post description.

Subhra

1/30/20265 min read

a man riding a skateboard down the side of a ramp
a man riding a skateboard down the side of a ramp

"We're building an AI agent." I hear this sentence constantly, and about half the time, the thing being described isn't an agent at all. It's a chatbot with a fancier name, or a workflow wearing an agent costume. This isn't pedantry — the confusion is expensive. Teams reach for autonomous agents when a simple workflow would be more reliable, cheaper, and easier to control. Or they build a rigid workflow and wonder why it can't handle the messy, open-ended task they actually have.

The single most useful thing you can do before building anything "agentic" is to know precisely which of three things you're building — because they have completely different costs, risks, reliability profiles, and ideal use cases. This article draws the lines clearly and, more importantly, tells you how to choose.

The three things, defined precisely:

Let's establish what each one actually is, because the terms get thrown around loosely.

A chatbot is conversational and reactive. You send a message, it responds, the turn ends. It might be very capable — answer questions, draft text, hold context across a conversation — but it doesn't take multi-step action toward a goal on its own. It waits for you to drive. This is most of what people have used so far.

A workflow is a system where an LLM is embedded in a predefined sequence of steps. A developer has decided, in advance, the path the task will take: first do this, then that, then this. The LLM does the intelligent work within each step — classify this, extract that, summarise this — but it doesn't decide the sequence. The orchestration is fixed in code by a human. The model is a smart component in a machine someone else designed.

An agent is a system where the LLM itself dynamically decides what steps to take, in what order, using which tools, based on the situation it encounters. The control flow isn't predetermined — the model drives it, in a loop, reasoning about each step based on the results of the last. The defining feature of an agent is that the model controls its own path.

Here's the distinction in one line: In a workflow, a human decided the steps in advance. In an agent, the model decides the steps as it goes. That single difference cascades into everything else.

A picture worth holding in your head

CHATBOT: You ──► LLM ──► Response (single turn, you drive next)

WORKFLOW: Input ──► [Step 1: LLM] ──► [Step 2: LLM] ──► [Step 3: LLM] ──► Output (path fixed by a developer in advance)

AGENT: Goal ──► ┌─► LLM reasons ──► picks a tool ──► acts ──► observes ─┐ └────────────── loops until done ◄────────────────────┘ (path decided by the model, dynamically)

The chatbot is a conversation. The workflow is a pipeline. The agent is a loop the model steers.

The trade-off that drives every decision

Now the part that actually matters for building. As you move from chatbot to workflow to agent, you trade control and reliability for flexibility and capability. This trade-off is the whole game.

Workflows are predictable. Because a human fixed the path, you know exactly what will happen. They're easier to test, cheaper to run, simpler to debug, and far more reliable. When something goes wrong, you know which step. The cost: they can only handle the situations you anticipated and designed for. Hand a workflow a case its designer didn't foresee, and it breaks or does something dumb.

Agents are flexible. Because the model decides the path, an agent can handle novel, open-ended, unpredictable tasks that no one could have fully scripted in advance. The cost: that same dynamism makes them less predictable, harder to test, more expensive (more reasoning, more tool calls, more tokens), and harder to debug. When something goes wrong, you have to reconstruct what the model decided to do and why.

This isn't agents being "better" than workflows or vice versa. It's a genuine engineering trade-off, and the mature move is to choose deliberately rather than reach for the most exciting option. As a rule of thumb that has saved teams enormous pain: use the least autonomous option that solves your problem.

How to choose: the decision questions

Walk these in order. They'll land you in the right category most of the time.

1. Is the task a single exchange, or does it require multiple steps toward a goal? Single exchange (answer a question, draft a thing) → a chatbot is plenty. Don't over-engineer.

2. If it's multi-step, can you define the steps in advance? If the path is knowable and stable — "always extract the data, then validate it, then file it" — build a workflow. You'll get reliability, lower cost, and easier debugging. Most business tasks that feel like they need an agent actually need a well-designed workflow. This is the most common and most valuable realisation in this whole article.

3. Is the task genuinely open-ended, where the right steps depend on what's discovered along the way? If you truly can't predict the path because it depends on the specific situation — "research this topic and follow wherever the findings lead" — then you have a real case for an agent. The unpredictability of the task is what justifies the unpredictability of the tool.

4. What are the stakes if it goes wrong? The higher the stakes, the more you should lean toward control. A low-stakes internal research task can tolerate an agent's occasional wrong turn. A task that sends money, deletes data, or contacts customers demands either a tightly-bounded agent with human approval gates, or a workflow with hard-coded safeguards. Autonomy and consequence should be inversely related.

The pattern most teams actually need

Here's a truth the agent hype obscures: the best real-world systems are usually mostly workflow with a touch of agency, not fully autonomous agents. You design a reliable backbone of predefined steps, and grant dynamic, agent-like decision-making only at the specific points where genuine flexibility is required.

For example: a customer-service system might follow a fixed workflow for 90% of its logic — classify the request, look up the account, check the policy — and only invoke agentic, multi-step reasoning for the genuinely open-ended cases that don't fit the script. You get the reliability of a workflow for the common path and the flexibility of an agent exactly where you need it, and nowhere you don't.

This hybrid mindset — "how little autonomy can I get away with?" — is the hallmark of teams that ship agentic systems that actually work in production, as opposed to demos that dazzle and then disappoint. (When you do build the agentic part, Inside the Agent Loop explains the mechanics, and the operational realities connect directly to LLMOps.)

The mistakes this framing prevents

Getting these distinctions right heads off the two classic failures.

Over-reaching: building a fully autonomous agent for a task that had a perfectly predictable structure. The result is a system that's expensive, flaky, and hard to debug, solving a problem that a simple, reliable workflow would have nailed. Teams do this because "agent" sounds more advanced and impressive. It usually just means more fragile.

Under-reaching: forcing a genuinely open-ended task into a rigid workflow, then bolting on more and more special-case branches as reality keeps producing situations the designer didn't anticipate — until the workflow is an unmaintainable tangle that still can't handle the long tail. This is the moment a real agent would have helped.

The skill is matching the tool to the shape of the problem: predictable path → workflow; genuinely unpredictable path → agent; single exchange → chatbot; and most often, a smart hybrid.

The bottom line

"Are we building a chatbot, a workflow, or an agent?" sounds like a terminology question. It's actually the most important architecture decision you'll make, because it determines your reliability, your cost, your risk, and whether the thing will survive contact with the real world. Answer it deliberately, default to the least autonomy that solves the problem, and reach for full agency only when the task's genuine open-endedness earns it. Build the right kind of thing, and you're halfway to building it well.

-----------------------------------------------------------------------------

Trying to decide whether your use case calls for a workflow, an agent, or something in between — before you commit engineering time to the wrong architecture? That early design call is one of the highest-leverage decisions in any agentic project, and exactly the kind I help teams get right. Reach out for a free consultation.