A client asked us last month: "We want an AI agent for our onboarding process." We built it as a deterministic workflow with three LLM calls inside it. They were happier than they would have been with a fully autonomous loop. Here's the heuristic we used.
Reach for an automation when:
- The path is known. You can write down the steps.
- The inputs are structured or near-structured.
- Failure is expensive and you need every run to look the same.
- Cost-per-run matters more than handling edge cases.
This is your Zapier, your n8n, your Temporal worker, your old-fashioned cron job. Maybe with a couple of LLM calls sprinkled in for the parts where natural language shows up — but the control flow is yours.
Reach for an agent when:
- The path is discovered, not specified. The right next step depends on what's been seen so far.
- The inputs are messy — emails, transcripts, screenshots, half-finished docs.
- The work involves judgment that you can describe in a paragraph but not in a flowchart.
- You need it to handle the long tail without you writing a branch for every case.
This is when you actually want a real agent loop — tools, planning, reflection, the works. It's more expensive per run, harder to evaluate, and worth it when the alternative is a human reading 200 inboxes a day.
The honest answer
Most "AI agent" requests we get turn out to want about 70% automation and 30% agent. That's a feature, not a bug. The interesting design work is figuring out where to draw that line.