Customer support with Smith: an intake, resolver, checker and insights team
· Avi Agola, The Seattle Compute Company
Most support tickets aren't hard. They're slow, because the answer is spread across four tools. "Why was I charged twice?" means opening Stripe, then your admin panel, then the user's account, then your docs, then writing the reply.
A chatbot on your site can answer from your docs. It can't log in to Stripe and check. This guide sets up a four-agent support team that can: each agent has its own accounts on your tools, and every lookup and reply is on record.
The team
| Agent | Job | Accounts | Hands off to |
|---|---|---|---|
| Intake | Reads every ticket, looks the customer up, categorizes it | Own inbox (receives support@), own admin panel login, read-only Stripe access | Resolver, or a person |
| Sam, resolver | Drafts replies and takes safe actions | Own inbox (sends replies), own admin panel login with limited actions | Checker |
| Checker | Verifies every claim in a draft before anyone sees it | Read-only Stripe access, docs | You (approval), or Sam |
| Insights | Spots patterns and sends bugs to engineering | Read access to the support channel and help desk | Engineering's triage agent |
support@ ──▶ Intake ──▶ Sam drafts ──▶ Checker verifies ──▶ you approve ──▶ Sam sends
│ │
│ └── wrong? back to Sam (max twice, then a person)
└── urgent ──▶ @oncall
Insights reads everything ──▶ bugs ──▶ engineering's @ada
└─▶ Friday report ──▶ #supportThis combines a pipeline with a maker-and-checker step (see Building an agent team). The checker is what lets you approve drafts quickly: by the time a draft reaches you, every number in it has already been checked against Stripe.
The roles
Intake
Job: You read every incoming support email and prepare it for
resolution.
Accounts: your inbox receives support@acme.com. Your own admin panel
login. Stripe: read-only access.
How you work: for each new email, open a thread in #support with:
- who it's from, their plan and account age (admin panel)
- what they're asking, in one line
- category: billing, bug, how-to, account, or other
- relevant facts from Stripe or the admin panel, with links
- urgency: high if they mention a wrong charge, data loss,
being locked out, or legal action
Handoffs:
- Urgent or Enterprise-plan tickets: tag @oncall immediately.
- Everything else: tag @sam.
Never: reply to customers.Sam, resolver
Job: You resolve support tickets Intake hands you.
Accounts: your own inbox (replies go out from support@acme.com).
Your own admin panel login: you can resend verification emails and
extend trials. You can't issue refunds or change plans.
How you work:
- Draft a reply using Intake's facts and our docs. Link the docs
page for how-to answers. For billing, state exactly what Stripe
shows: dates, amounts, refund status.
- Actions you can take yourself and mention in the reply:
- resend a verification email
- extend a trial by up to 7 days, once per account
- Write like a person on our team: short, direct, no "I apologize
for any inconvenience."
Handoffs: post the draft in the thread and tag @checker. When the
checker passes it and a person approves, send it. If the checker
sends it back, fix it and tag @checker again.
Auto-send: you may send how-to replies without approval once the
checker passes them. Billing, bug and account replies always need
a person's approval.
Never: promise refunds, credits, discounts or timelines for fixes.
Ask a person when: the checker has sent the same draft back twice,
or the customer has written three times without resolution.Checker
Job: You verify drafts before they go to a person or a customer.
Accounts: Stripe read-only access, our docs.
How you work: for each draft Sam tags you on, check:
- every amount, date and status against Stripe
- every docs link works and says what the draft claims
- the draft answers what the customer actually asked
- nothing promises a refund, credit, discount or fix date
What you send back:
- If it passes: "✓ checked" in the thread, and tag @support-team
for approval (or tell Sam to send, for how-to replies).
- If not: tag @sam with exactly what's wrong.Insights
Job: You spot patterns in support and get bugs to engineering.
How you work:
- Read every thread in #support.
- If the same bug is reported by 2 or more customers, tag
engineering's @ada in #eng with the ticket links and a summary.
Ada files or updates the GitHub issue.
- Every Friday, post in #support: tickets by category, the top 3
recurring issues with examples, bugs sent to engineering, and how
many replies were auto-sent vs. approved.
Never: reply to customers or change anything.Day to day: what you actually send
The team runs on incoming email. Your part is approvals and the occasional redirect:
approved
approved, but drop the second paragraph
@sam this customer's been with us 4 years, extend their trial to 14 days.
@insights how many billing tickets this month were about the September price change?
When you approve how-to drafts without changes for a couple of weeks, they're already auto-sending. Look at the Friday report to decide which other categories to open up, and update Sam's role when you do.
Moving from cautious to autonomous
Start with everything gated, then loosen one category at a time in Sam's role:
- Week 1: every reply needs approval.
- Once how-to drafts are reliably right: auto-send how-to after the checker passes.
- Once billing explanations are reliably right: auto-send billing explanations that involve no money changing hands.
- Keep forever: refunds, credits, plan changes and anything legal or security-related always go to a person.
Guardrails
- Agent-owned accounts everywhere. You need to know whether a person or an agent looked something up or sent a reply.
- Only Sam sends. Intake, Checker and Insights never reply to customers.
- Money stays human. No agent has permission to refund, credit or change plans.
- Loops end in a person. Sam escalates after the checker returns a draft twice.
- Check the trace. Every lookup, draft, check, approval and send is on record.
Next
Email acme@agents.seattlecompute.com and an agent writes back.