Customer Service Automation: Map Rules, AI and Human Work
Split customer service automation into deterministic rules, retrieval answers, and authorized actions, with a worked returns workflow, baseline metrics, and rollback.
Split customer service automation into deterministic rules, retrieval answers, and authorized actions, with a worked returns workflow, baseline metrics, and rollback.
Many automation projects fail before any tool ships, because the work was never mapped. A team buys an AI agent, then discovers the task was already a rule that a macro could have run. Another team lets an agent draft a response, then finds out it promised a refund it had no authority to issue. Customer service automation works when the decision comes before the deployment: where does each request go, which mechanism handles it, and what happens when the mechanism fails. The distinction between an agent and automation shapes this whole exercise.
This guide is a workflow exercise. You will sort your incoming support into three mechanisms, walk one returns request through a full decision cycle, define the measurements you need, and set a rollback path. It applies to any help desk platform.
TL;DR:
Deterministic rules. A macro, trigger, or routing rule produces the same output for the same input. Order-received acknowledgements, password reset links, and queue routing belong here. No model is required, and no model should be added. The strength of a rule is that it is inspectable: anyone can read the condition and verify it. The weakness is that it breaks when customers phrase things unexpectedly. A well-designed rule therefore stops instead of guessing. If a tracking link is missing, the rule ends and a person sees the ticket. That stop is the safety mechanism.
Retrieval answers. When a customer describes a problem in their own words and the correct help center article is one of thirty, a retrieval system selects the article and the model quotes it. This is grounded answer generation, often called retrieval-augmented generation (RAG). The fence is the list of intents the agent may close and the list it must assign. Refunds stay on the second list until you have reviewed enough transcripts to trust the agent with them. A retrieval answer may not invent a policy the article does not state.
Authorized actions. Some requests are not questions. "Cancel my subscription," "create a return," and "refund my order" change the state of another system. These need a permission boundary, an integration, and confirmation that the write succeeded. Answering "Here is how to cancel" does not complete a cancellation. This distinction is where most misunderstanding lives, and it drives everything below.
Use a common case: an online store receives several return requests each day. We want the routine parts automated, the exceptions handled, and the actions confirmed.
Start by building a decision table. Each row names a trigger, the conditions that must hold, the action, the owner, and the source that supplies the truth.
| Trigger | Condition | Action | Owner | Source |
|---|---|---|---|---|
"Where is my order?" | Order number present | Look up current status | Rule | Orders API |
"Where is my order?" | Order number missing | Ask for order number | Rule | Orders API |
"I want to return an item" | Order found, within return window, item eligible | Initiate return label | Authorized action | Catalog and policy data |
"I want to return an item" | Outside window or item ineligible | Explain policy, offer exception path | Human | Returns policy article |
"My item arrived damaged" | Photo attached | Route to human with photo context | Rule | Ticket attachment |
"How do I return something?" | Policy question | Quote returns policy article | Retrieval | Help center policy page |
Three design choices matter here. First, the rule only fetches data it can find. If the order lookup returns nothing, the rule asks for the order number again or hands off. Second, the "outside window" branch does not let the agent override policy. It explains the policy and sends the customer to a person who may approve an exception. Approval is a human decision, and it should never be delegated silently. Third, a matching order number is a lookup key, not proof of identity. The "Initiate return label" action must sit behind an authenticated customer session or a server-validated identity flow, with object-level authorization on every request. A typed email address or order number alone must never unlock account access.
Define the columns before filling them in. For each intent in your queue, ask:
You will find that most intents split into two or three branches. The branches that fail conditions are the ones that need people.
The agent is worth its cost on requests where the phrasing varies and the answer is a document. A customer writes "my package was supposed to arrive yesterday and I'm leaving town" and the right article is "how to reschedule a delivery." No rule can enumerate every phrasing. Retrieval can choose the closest source and quote it.
Give the agent a fence, not a blank space. Write a list of intents it may handle and a list it must escalate. Free-text generation without a list of permitted actions tends to drift into guesses about policy. The list is the control. Revisit it every two weeks using an edit count: how often did the agent's draft need correction, and which corrections were policy errors versus wording issues? If the correction is always the same sentence, that intent is a macro.
Actions need a scope. Grant the agent the minimum permissions it needs: create a return label, update an order, or look up a customer's order. It should not have authority to see other customers' records or change billing settings unless the workflow requires it.
Identity verification is part of this, and it begins with what is not proof. A typed email address, order number, or account ID is a lookup key, not a verified identity. Access to a customer's records requires an authenticated customer session or a server-validated identity flow, plus object-level authorization on every request. Never collect passwords, admin tokens, or one-time codes inside chat; route those through a secure login or verification screen. For a guest lookup, send a secure link to the stored contact address and let the customer verify there, without exposing their records in the conversation.
Confirmation is the second half of an action. A call that attempts a refund is not a refund. The billing or commerce system must confirm the change for the action to count. An API response code of 200 or 202, or a timeout, is not automatically a completed business action. Read the operation state from the authoritative record; asynchronous jobs can be pending or failed. On timeout, inspect the operation before retrying, and use idempotency keys to prevent duplicate writes. If the system reports an error, the workflow should handle it explicitly: request missing information, try an alternative path, or escalate. Never auto-retry an action that is not idempotent. Retrying a refund creation twice can create duplicate refunds. Design retries for reads, not writes, and let a person handle repeated write failures.
When the agent needs a decision instead of an execution, allow a lightweight approval (human-in-the-loop). The agent collects the context, prepares the action, and asks a teammate for a yes or no while continuing to manage the conversation. Full transfer to a person is reserved for requests that genuinely need human ownership, such as a disputed charge or a policy exception.
When you build the integration behind these actions, follow the provider's current setup path. On Shopify, for example, new custom apps are created through the Dev Dashboard or Shopify CLI, not in the shop admin, since January 1, 2026; older admin-generated token instructions are legacy only. Verify the current authentication and scopes documentation for whatever platform you connect.
You cannot tell whether automation helped without a before picture. Before launching, record for a full month:
Keep the definition of resolution strict. A generated answer, a contained conversation, and a closed session are not the same thing. A resolved request is one where the customer's intended outcome was completed, any required action succeeded and was confirmed, and the same issue did not return within a recontact window. Choose that window per request type. Product questions settle quickly; refunds take longer to confirm.
Here is a worked example with illustrative numbers. Suppose a store receives 400 requests in a period. Before the period, the team decides the agent will handle 300 of them. The agent resolves 270. Scope coverage is 75 percent, resolution within scope is 90 percent, and overall AI resolution is 67.5 percent. Both numbers matter. Within scope tells you whether the agent does its assigned work well. Overall tells you how much of the whole queue it actually absorbs. Report both, and keep failures in the denominator. An order lookup that fails is still an eligible request, and it belongs in the denominator.
A closure is not a resolution. A session can end because the customer gave up or because the answer was wrong. The customer's silence supplies no evidence that the policy was correct. Audit a sample of marked-resolved conversations against the current policies and records, and report the sample size and error count alongside the rate.
Every automation should be reversible. Keep the old macro or manual path intact even after the agent goes live. Launch behind a feature flag or a routing toggle so you can move a single intent back to humans without redeploying. Set a review checkpoint after two weeks: compare first response time, resolution, and repeat contacts against the baseline. If the repeat-contact rate rises or resolution falls for an intent, turn that intent off and investigate. The goal is to expand from proven intents, not to keep a headline percentage high.
Use this checklist when you plan an intent:
Pricing reflects the same split. Rules are usually included in a help desk seat; agents and their outcomes are metered. Zendesk's annual pricing starts at $19 per agent per month for Support Team, $55 for Suite Team, and $115 for Suite Professional, with AI agents included on every Suite and Support plan and billed per automated resolution, meaning a request the AI completes without escalating to a person (Zendesk pricing). Intercom's Fin is priced at $0.99 per outcome, with qualification events at $9.99; Fin can run on another helpdesk without Intercom seats, with a 50-outcomes-per-month minimum on the existing-helpdesk path (Fin pricing). Freshdesk includes an initial allowance of Freddy AI sessions, then sells additional session packs of 100 for $49 (Freshdesk pricing). Gorgias pairs a per-ticket help desk fee with an automation fee when AI fully resolves a ticket without human handoff within its 72-hour window; current numeric rates require a quote, and accounts created before May 28, 2025 may fall under legacy billing, where a ticket carries only one of the two fees (Gorgias billing docs). The help desk comparison on this site reviews these models in detail, and the figures above were checked on 26 October 2026. Because metering differs, your volume forecast determines which structure is cheaper for you.
What is the difference between a rule and an AI agent in customer service? A rule fires the same predetermined output for the same input, like a macro or a routing trigger. An agent selects words and may take actions based on customer phrasing. If the reply can be written down as a fixed sentence, it is a rule, and adding an agent adds cost without improving the outcome.
When should I avoid using an AI agent? Avoid an agent when the task is deterministic, when the correct answer is not captured in a source you control, or when the request requires an action the agent cannot confirm. Also avoid it when a human decision is required, such as policy exceptions or disputes, since the agent should gather context and hand off rather than guess.
Does closing a ticket mean the customer's issue is resolved? No. A closed session only means the conversation ended. As covered in the baseline section, resolution requires evidence that the intended outcome was completed and that the same issue did not return within a reasonable window. Audit a sample of closed conversations to verify.
How do I verify an AI resolution is real? Check three things: the answer matched the request, any required action succeeded and was confirmed by the owning system, and the customer did not recontact about the same issue. Review a sample of resolved conversations against current policies and records, and keep the sample size visible next to the reported rate.
Should an AI agent be allowed to issue refunds? Only if you build the permission and confirmation path and have reviewed enough transcripts to trust it. A typed email or order number is not identity proof; the agent needs an authenticated customer session or a server-validated identity flow, authority for the specific action, and a confirmed success from the billing system. Until those are in place, refunds belong on the human-handling list.
What should I measure before automating? Measure ticket volume by intent, first response time, resolution rate with a strict definition, repeat-contact rate, and cost per resolved request. Run the baseline for at least a month. Then launch behind a toggle and compare the same measures after two weeks. Keep a rollback path for any intent that regresses.
The reliable way to scale support is to map the work first. Separate the requests you can specify as rules from the ones that vary and need retrieval, and give every state-changing action a permission boundary and a confirmation check. Measure the baseline, define resolution as a confirmed outcome, and keep every deployment reversible. When you do that, the agent handles the varied, documented work it is good at, the rules absorb the predictable volume, and people spend their time on the exceptions that actually need them.
Further reading
3 next jobs from this page. Named destinations, not a pile of related guides.
03