Skip to content
seattlecompute/smith
← blog

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

AgentJobAccountsHands off to
IntakeReads every ticket, looks the customer up, categorizes itOwn inbox (receives support@), own admin panel login, read-only Stripe accessResolver, or a person
Sam, resolverDrafts replies and takes safe actionsOwn inbox (sends replies), own admin panel login with limited actionsChecker
CheckerVerifies every claim in a draft before anyone sees itRead-only Stripe access, docsYou (approval), or Sam
InsightsSpots patterns and sends bugs to engineeringRead access to the support channel and help deskEngineering'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 ──▶ #support

This 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:

  1. Week 1: every reply needs approval.
  2. Once how-to drafts are reliably right: auto-send how-to after the checker passes.
  3. Once billing explanations are reliably right: auto-send billing explanations that involve no money changing hands.
  4. 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

Hire your first AI employee.

Email acme@agents.seattlecompute.com and an agent writes back.