The question that separates them
Three different machines get called "an agent." One question tells them apart: who decides what happens next?
A chatbot: you decide. You type, it answers, you type again. Every step forward comes from a human, and it never touches anything outside the conversation. A model with no tools connected is a chatbot. That is genuinely useful, and it is not an agent.
A workflow: the author decided, before it ever ran. Somebody drew a graph — trigger, step, branch, step — and the graph is the same every time. A Zapier Zap, an n8n flow, a Make scenario, a cron job running a Python script. The path is fixed at build time.
Here is the part that trips people up: a workflow with a model in it is still a workflow. Take this n8n flow, running at a coaching centre in Bengaluru:
new WhatsApp message
→ model step: enquiry, fee question, or other?
→ if enquiry: send brochure, add row to sheet
→ if fee: send fee schedule, notify office
→ else: forward to a humanThere is a language model in the middle making a judgement call. It is still not an agent. Every path that flow can ever take was drawn by a person in advance. The model is filling in one blank on a form somebody else designed.
An agent: the model decides, at run time, in a loop. You give it a goal, some tools, and no fixed path. It picks a tool, sees the result, picks again. The tell is this: you do not know how many steps it will take before it runs. Same goal, different input, different number of steps.
The agent version of the same coaching centre: "Here is the WhatsApp inbox, the fee structure, the batch timetable, and the ability to book seats. Handle enquiries." Now the work depends on what the parent asks. A simple question might take one step. A parent negotiating a transfer between batches, checking two timetables and a refund rule, might take nine.
It is a dial, not a switch
Most real systems sit somewhere in between, and it helps to say where.
- Fixed graph, no model. A cron job. Fully predictable.
- Fixed graph, model in one box. Classification, extraction, drafting. Predictable structure, uncertain content.
- Router. The model picks branch A, B or C; each branch is fixed. One decision point.
- Bounded agent. A loop over a small tool set with a hard step limit.
- Open agent. Many tools, long horizon, the model decides when it is finished.
Move down that list and you gain flexibility. You also lose, in this order: predictable cost, predictable latency, testability, and your ability to explain to a customer why it did what it did.
Why the vocabulary is worth getting right
Almost everything currently sold as "an AI agent" sits in the middle of that dial. That is usually good news rather than a criticism. Workflows cost roughly the same every run, you can test them, and when one breaks you can point at the box that broke.
The mistake that costs people months is reaching for the bottom of the dial first. Someone builds an open agent for a task that was always going to take the same seven steps. It works in the demo, costs forty times what the workflow would have cost, fails in a new way each week, and nobody can debug it because "it decided to."
So when a task lands on your desk, ask the question first: does the sequence of steps actually change from run to run? If it does not, you want a workflow, possibly with a model inside one of its boxes. If it genuinely does — if the shape of the work depends on what you find partway through — then you want an agent, and the rest of this course is about what that costs you.
Before you move on