AI Agents B2B SaaS · 7 weeks · STAR method

AI Email Triage Agent Cut Mean Response Time From 4 Hours to 18 Minutes

A company like Intercom · B2B SaaS

4.2 hrs → 18 min
Mean response time
68%
Autonomous handling rate
+22 points
NPS improvement
68%
Tier-1 volume deflected

Situation

A B2B SaaS company with 4,200 active business accounts had a support team of six engineers. These engineers were generalists — capable of handling everything from API debugging to billing disputes to enterprise onboarding calls.

But the support inbox told a different story. A manual analysis of 30 days of tickets showed that 68% of inbound email volume was tier-1 work:

CategoryVolume ShareExamples
Password reset assistance18%“I can’t log in”, “reset link not working”
Invoice / billing requests14%“Need invoice for Q3”, “when does my plan renew”
Plan change confirmations12%“Can you confirm my upgrade”, “what’s included in Pro”
Basic how-to questions13%“How do I add a team member”, “where is X setting”
Feature availability11%“Do you support SSO?”, “can we export to CSV?”

Complex issues — API errors, data pipeline failures, integration debugging, enterprise negotiations — made up only 32% of volume but required 80%+ of each engineer’s cognitive capacity.

The tier-1 work wasn’t hard. It was just relentless. Engineers described feeling “mentally exhausted before the interesting work starts.” Mean response time sat at 4.2 hours — not because engineers were slow, but because the queue was always full of routine requests.


Task

Build an AI email triage and response system that would:

  1. Classify every inbound support email into a tier and sub-category
  2. Automatically handle tier-1 emails without human involvement
  3. Draft responses for tier-2 emails with relevant account context pre-filled
  4. Route tier-3 (complex/enterprise) emails directly to the most appropriate engineer
  5. Maintain a human-in-the-loop audit trail for compliance and quality monitoring

Non-negotiables from the client: no customer should feel they’re talking to a bot; escalation to a human must always be available; all AI responses must be audited for the first 60 days.


Action

Architecture Overview

We built the system on n8n (self-hosted) using Claude as the classification and drafting model, with the company’s support inbox connected via Gmail API and their CRM via REST API.

┌─────────────────────────────────────────────────────────────┐
│                   Email Triage Pipeline                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   Inbound Email                                             │
│        │                                                    │
│        ▼                                                    │
│   [1] Enrichment                                           │
│   Pull account data from CRM                               │
│   (plan, account age, open issues, account health score)   │
│        │                                                    │
│        ▼                                                    │
│   [2] Classification (Claude)                              │
│   Tier 1 / 2 / 3 + sub-category + urgency + sentiment     │
│        │                                                    │
│   ┌────┴──────────────────────┐                            │
│   │                           │                            │
│   ▼                           ▼                            │
│ Tier 1                      Tier 2 / 3                     │
│ Auto-respond                Draft + route                  │
│ (Claude)                    (Claude + human review)        │
│   │                           │                            │
│   └────────────┬──────────────┘                            │
│                ▼                                            │
│         Audit Log + Metrics                                 │
└─────────────────────────────────────────────────────────────┘

Step 1 — Account Enrichment Before Classification

Before Claude sees the email, we pull the sender’s account context from the CRM:

// n8n function node — account enrichment
const senderEmail = $input.item.json.sender;

const account = await fetch(`${CRM_API}/accounts?email=${senderEmail}`)
  .then(r => r.json());

return {
  email_body: $input.item.json.body,
  sender_name: account.contact_name,
  company_name: account.company,
  plan: account.plan,          // starter / pro / enterprise
  account_age_days: account.days_since_signup,
  health_score: account.health_score,  // 0-100
  open_tickets: account.open_ticket_count,
  last_interaction: account.last_cs_touchpoint,
};

This context is passed to Claude so classification and response drafting can be personalised and account-aware.

Step 2 — Classification Prompt

You are a support triage agent for a B2B SaaS platform. Classify the following
customer email and return a JSON object only.

Account context:
- Customer: {{sender_name}} at {{company_name}}
- Plan: {{plan}}
- Account age: {{account_age_days}} days
- Health score: {{health_score}}/100
- Open tickets: {{open_tickets}}

Email:
{{email_body}}

Return:
{
  "tier": 1|2|3,
  "category": "password_reset"|"billing_inquiry"|"plan_change"|"how_to"|"feature_question"|"technical_error"|"integration_issue"|"enterprise_request"|"other",
  "urgency": "low"|"medium"|"high"|"critical",
  "sentiment": "positive"|"neutral"|"frustrated"|"angry",
  "summary": "one sentence summary of the request",
  "recommended_owner": "auto"|"tier2_queue"|"[engineer_name]",
  "escalate_reason": null or "string explaining why this needs human attention"
}

Rules:
- Tier 1: fully resolvable with documentation or account actions, no judgement needed
- Tier 2: needs human review but draft response would be helpful
- Tier 3: complex, sensitive, enterprise, or contains escalate signals
- Always tier 3: churn signals, legal mentions, data breach concerns, angry enterprise accounts

Step 3 — Tier-1 Auto-Response

For classified tier-1 emails, a second Claude call generates the response:

You are a helpful, human-sounding support agent at {{company_name}}.

Write a complete email response to this tier-1 support request.

Customer: {{sender_name}} ({{company_name}}, {{plan}} plan)
Request category: {{category}}
Their email: {{email_body}}

Relevant documentation:
{{kb_article}}  ← retrieved from knowledge base via vector search

Guidelines:
- Sound like a knowledgeable human colleague, not a bot
- Be concise — max 150 words
- Provide the exact answer or link, don't hedge
- End with "Let me know if you need anything else" — never use "Is there anything
  else I can help you with today?"
- Sign off as "Support Team, [Company]" — never give a fake name

The response is sent automatically. A copy is written to the audit log with the classification reasoning, confidence score, and a one-click “I’ll handle this instead” override link sent to a #support-ai-audit Slack channel.

Step 4 — Tier-2 Draft and Route

Tier-2 emails open a Help Scout conversation in the correct queue, with:

  • Claude’s draft response pre-filled in the reply box
  • The account enrichment data shown in the sidebar
  • Classification reasoning visible to the engineer
  • “Accept draft” / “Edit and send” / “Start fresh” options

Engineers report that having a first draft, even when they edit heavily, reduces response time significantly. The cognitive load of staring at a blank reply box is removed.

Step 5 — Tier-3 Routing Logic

Complex and enterprise emails are routed based on account tier and issue type:

  • Enterprise accounts (>$2k MRR) → assigned directly to a named enterprise CSM
  • Churn signals (“cancelling”, “looking at alternatives”) → CS lead + account executive CC’d
  • Technical errors with error codes → routed to the engineer who most recently handled that integration
  • Legal/compliance → flagged to CS lead + copied to legal@

Result

Six months post-launch:

Mean response time fell from 4.2 hours to 18 minutes. The 18-minute average is dominated by tier-2 and tier-3 responses (which still require human action); tier-1 responses now send in under 3 minutes.

68% autonomous handling rate. This matches the initial tier-1 analysis closely — essentially all tier-1 volume is now handled automatically. The support engineers spend their time entirely on tier-2 and tier-3 work.

NPS score improved 22 points (from 34 to 56) in the six months following launch. Exit surveys attributed the improvement primarily to faster response times and more technically detailed answers on complex issues — both direct results of engineers being freed from routine work.

The AI accuracy rate (measured via monthly audits of 100 random auto-responses) has been 96.4% “appropriate or better.” The remaining 3.6% are cases where Claude was technically correct but missed a tone cue — usually a frustrated customer who needed acknowledgement before a solution.

One important finding: the 60-day mandatory audit period revealed that Claude was occasionally giving slightly outdated pricing information when it had changed mid-month. We added a Knowledge Base refresh to the n8n workflow that runs every 24 hours and updates the context snippets. A simple fix that required the audit process to surface.

The ROI of AI email triage isn’t just time savings. It’s what happens to your team when you remove the cognitive tax of routine work. The best engineers in this team had been spending half their day on password resets. Removing that unlocked their capacity for the complex problems that actually require their expertise.

Ready to Fix Your Analytics?

Get a free 30-minute consultation with our team. No pitch, just honest advice on your current tracking setup.