How-to
How to automate customer support with AI agents
First-line support is the job agents are best at, because most of it is reading something varied and deciding what it is. The pattern below is two agents and a trigger, and the important design choice is in step four: the agent drafts, a person sends.
I ran this exact shape on my own account and published the record, including the part where it went wrong — that is the last section of this page.
Build it
- Create a **Triage** agent. In its Configuration box, set `system_prompt` to classify the message — billing, technical, returns, other — and to return structured JSON so the next step can read the fields.
- Create a **Reply** agent whose `system_prompt` drafts an answer in your tone, with an instruction to say when it is unsure rather than guess.
- Give the Reply agent `http_request` so it can look up the real order, and `slack_message` or `send_email` so it can escalate.
- Chain them in a sequential workflow. Leave sending to a person for the first few weeks.
- Add a Webhook trigger so a new ticket starts a run, or a schedule to sweep a queue.
- Read the first twenty runs before you trust it with anything.
What it costs per ticket
| The job | Time | Cost |
|---|---|---|
| Triaged and answered (worked example) | 8.4 seconds | $0.0144 |
| Answered and escalated to a human | 28.5 seconds | $0.0204 |
| Failed early, because the lookup was down | 4.1 seconds | $0.0024 |
Source: rows one and three are the worked example, costed by the same pricing code the product bills with. Row two is a logged run of my own, published as the API returned it.
At those numbers a thousand tickets a month is a few dollars of usage, which means cost is not the thing to think hard about. Correctness is.
The failure that matters here
Support is the worst possible place for an agent to be confidently wrong, because the output goes straight to a customer.
It told a customer something it had not checked
In the published run above, both order lookups came back 403 — and the tool result recorded "ok": true, because the HTTP call itself completed. The agent treated that as a successful lookup. Its Slack escalation genuinely failed, Slack not being connected; its email escalation did go out. The reply it drafted still said it could see the charge, and the run finished as COMPLETED.
Why a human on the send button fixes it cheaply
A wrong draft costs a second of reading. A wrong sent reply costs a customer. Drafting is where nearly all the value is; sending is where nearly all the risk is, and they are easy to separate.
What to check in the run
Read the step rows, not the status. Every tool call shows its result, so a refused lookup is visible — but only if you look at the step rather than the green badge.
What not to automate yet
- Refunds, cancellations, anything that moves money. Let the agent prepare it and a person approve it.
- Anything where a wrong answer is expensive and nobody reads the outbox.
- Legal or compliance replies, where the wording is the product.
Next
- Connect it to your order system — see How to connect AI agents to your APIs.
- Make it run on its own — see How to run AI agents automatically.