customer-support-builder

安装量: 105
排名: #8035

安装

npx skills add https://github.com/daffy0208/ai-dev-standards --skill customer-support-builder

Customer Support Builder

Build scalable customer support systems that grow with your product without requiring linear hiring increases.

Core Principle

Support should scale sub-linearly with users. As you grow from 100 to 10,000 users, support volume shouldn't increase 100x. Good self-service systems can keep support needs growing at only 10-20x while user base grows 100x.

Support Maturity Model Stage 1: Founder-Led (0-100 users) Founders answer every question personally Learn what users actually struggle with Document FAQs manually Key Metric: Response time < 2 hours Stage 2: Documented (100-1,000 users) Comprehensive knowledge base Email support with templates Basic FAQ section Key Metric: 30% self-service rate Stage 3: Self-Service (1,000-10,000 users) Searchable help center Contextual in-app help Automated responses for common issues Key Metric: 60% self-service rate Stage 4: Scaled (10,000+ users) AI-powered chatbots Community forums Video tutorials Proactive support (detect issues before tickets) Key Metric: 80% self-service rate Knowledge Base Architecture Content Structure Help Center ├── Getting Started │ ├── Quick Start Guide (< 5 min) │ ├── Account Setup │ └── First Steps Tutorial ├── Core Features │ ├── Feature A Guide │ ├── Feature B Guide │ └── Feature C Guide ├── Troubleshooting │ ├── Common Errors │ ├── Performance Issues │ └── Integration Problems ├── Account & Billing │ ├── Pricing Plans │ ├── Billing Issues │ └── Account Management └── API & Integrations ├── API Documentation ├── Webhooks └── Integration Guides

Article Template

[Clear, Searchable Title]

Time to complete: 3 minutes Difficulty: Beginner/Intermediate/Advanced

Problem

One-sentence description of what this solves.

Solution

Step-by-step instructions with screenshots.

  1. Step 1: Clear action
  2. Screenshot/GIF
  3. Expected result

  4. Step 2: Next action

  5. Screenshot/GIF
  6. Expected result

Troubleshooting

  • Problem: X → Solution: Y
  • Problem: A → Solution: B

Support Channels Email Support

Setup:

Primary: support@company.com Routing: - billing@company.com → Billing team - api@company.com → Engineering - hello@company.com → General inquiries SLA: - Critical: 2 hours - High: 8 hours - Normal: 24 hours - Low: 48 hours

Email Templates:

Welcome Email

Subject: Welcome to [Product]! Here's how to get started

Hi [Name],

Welcome! Here's what to do first:

  1. Complete setup: [Link]
  2. Try this tutorial: [Link]
  3. Join our community: [Link]

Need help? Reply to this email or check our help center: [Link]

[Your Name]

Issue Resolved

Subject: [Ticket #123] Resolved - [Issue Title]

Hi [Name],

Good news! Your issue is resolved.

What we did: [Clear explanation]

What you should see: [Expected result]

If the problem returns: [Troubleshooting steps]

Was this helpful? [Yes] [No]

[Your Name]

Chat Support

In-App Chat Widget:

// Intercom, Drift, Crisp example

<script> window.intercomSettings = { app_id: "YOUR_APP_ID", // Custom attributes email: user.email, user_id: user.id, created_at: user.createdAt, plan: user.plan, // Show relevant help articles help_center: { search_enabled: true } }; </script>

Chat SLA:

Business hours: 5-minute response After hours: Email auto-response Expected resolution: 1-3 messages Chatbot (AI-Powered)

Decision Tree:

User message → ├── Can answer with KB article? → Send article ├── Simple factual question? → AI answers ├── Complex issue? → Route to human └── Angry/escalated? → Priority human routing

Implementation:

def handle_support_message(message, user_context): # 1. Search knowledge base kb_results = search_kb(message, top_k=3)

if kb_results[0].score > 0.85:
    return {
        'type': 'article',
        'article': kb_results[0],
        'confidence': 'high'
    }

# 2. Try AI response with context
ai_response = generate_response(
    message=message,
    kb_context=kb_results,
    user_history=user_context
)

if ai_response.confidence > 0.8:
    return {
        'type': 'ai_response',
        'response': ai_response.text,
        'sources': kb_results
    }

# 3. Route to human
return {
    'type': 'human_handoff',
    'priority': calculate_priority(message, user_context),
    'suggested_agent': route_to_specialist(message)
}

Ticket Management Ticketing System Schema interface Ticket { id: string status: 'new' | 'open' | 'pending' | 'resolved' | 'closed' priority: 'low' | 'normal' | 'high' | 'critical' category: string // 'billing', 'technical', 'feature', etc. subject: string description: string requester: User assignee?: Agent tags: string[] created_at: Date updated_at: Date resolved_at?: Date first_response_at?: Date satisfaction_rating?: 1 | 2 | 3 | 4 | 5 }

Auto-Routing Rules Routing Rules: - Condition: subject contains "billing" OR "payment" Action: Assign to billing-team Priority: high

  • Condition: user.plan == "enterprise" Action: Assign to enterprise-team Priority: high SLA: 2 hours

  • Condition: subject contains "API" OR "webhook" Action: Assign to engineering Tag: 'api-issue'

  • Condition: sentiment == "angry" Action: Priority routing Priority: critical Notify: support-manager

Ticket Lifecycle New → Open → Pending → Resolved → Closed ↓ ↑ ← Reopen ←

Status Definitions:

New: Just created, not yet viewed Open: Agent working on it Pending: Waiting for customer response Resolved: Solution provided, awaiting confirmation Closed: Issue confirmed resolved or auto-closed after 7 days Self-Service Tools Interactive Troubleshooters // Example: Connection troubleshooter const troubleshooter = { start: { question: 'What problem are you experiencing?', options: [ { text: "Can't connect", next: 'check_connection' }, { text: 'Slow performance', next: 'check_performance' }, { text: 'Error message', next: 'check_error' } ] }, check_connection: { question: 'Can you access our website?', options: [ { text: 'Yes', next: 'browser_check' }, { text: 'No', action: 'show_status_page' } ] }, browser_check: { question: 'Clear your browser cache and try again.', options: [ { text: 'It worked!', action: 'problem_solved' }, { text: 'Still not working', action: 'contact_support' } ] } }

In-App Guidance // Contextual help tooltips const helpTooltips = { '/dashboard': { first_visit: { title: 'Welcome to your dashboard!', steps: [ '1. View your key metrics here', "2. Click 'Add Widget' to customize", '3. Need help? Click the ? icon' ] } }, '/settings/billing': { always_show: { payment_methods: 'We accept Visa, Mastercard, and AmEx', billing_cycle: 'Changes take effect next billing cycle' } } }

Support Metrics Key Metrics to Track interface SupportMetrics { // Response metrics first_response_time: { p50: number // median p90: number // 90th percentile p99: number }

// Resolution metrics avg_resolution_time: number tickets_resolved_first_contact: number

// Volume metrics tickets_created_today: number tickets_open: number tickets_overdue: number

// Quality metrics customer_satisfaction_score: number // 1-5 net_promoter_score: number // -100 to 100

// Efficiency metrics self_service_rate: number // % resolved without ticket deflection_rate: number // % answered by KB/bot cost_per_ticket: number }

Target Benchmarks Excellent Support: first_response_time_p90: '< 2 hours' resolution_time_avg: '< 24 hours' self_service_rate: '> 70%' csat: '> 4.5/5' nps: '> 50'

Good Support: first_response_time_p90: '< 4 hours' resolution_time_avg: '< 48 hours' self_service_rate: '> 50%' csat: '> 4.0/5' nps: '> 30'

Scaling Strategy Support Team Structure Support Organization (at scale):

Support Manager (1) ├── Knowledge Base Lead (1) │ └── Technical Writers (2-3) ├── Chat Support (Tier 1) (5-10) │ ├── Handle 80% of issues │ └── Escalate complex cases ├── Email Support (Tier 2) (3-5) │ ├── Handle escalations │ └── Complex troubleshooting └── Specialist Support (Tier 3) (2-3) ├── API/Technical issues └── Enterprise customers

When to Hire Support Staff

Rule of Thumb:

0-500 users: Founders handle it 500-2,000 users: 1 support person 2,000-5,000 users: 2-3 support people 5,000-20,000 users: 5-8 support people 20,000+ users: Build a team

Better metric: Support load

Hire when: > 50 tickets/day or > 10 concurrent chats Each agent can handle: ~30-40 tickets/day or 8-10 chats/day Tools & Software Recommended Stack

Ticketing: Zendesk, Intercom, Help Scout, Freshdesk Knowledge Base: GitBook, Notion, Confluence, Document360 Chat: Intercom, Drift, Crisp Chatbot AI: OpenAI, Anthropic Claude, Dialogflow Community: Discourse, Circle, Slack/Discord Analytics: Mixpanel, Amplitude (for in-app behavior)

Integration Example // Unified support API class SupportSystem { async createTicket(data) { const ticket = await zendesk.createTicket(data) await analytics.track('support_ticket_created', { ticket_id: ticket.id, category: data.category, user_id: data.user_id }) return ticket }

async trackKBArticleView(article_id, user_id) { await analytics.track('kb_article_viewed', { article_id, user_id })

// If user doesn't create ticket after viewing,
// article was helpful (deflection)

} }

Proactive Support Detect Issues Before Tickets // Monitor for patterns async function detectPotentialIssues() { // Error spike detection const errorRate = await getErrorRate('last_hour') if (errorRate > 2 * avgErrorRate) { await notifySupport('Error spike detected') await displayStatusMessage("We're investigating an issue...") }

// User struggle detection const strugglingUsers = await detectStrugglingUsers({ criteria: ['repeated_failed_actions', 'long_time_on_page', 'back_and_forth_clicks'] })

if (strugglingUsers.length > 0) { await offerProactiveHelp(strugglingUsers) } }

Health Score Monitoring interface CustomerHealth { user_id: string health_score: number // 0-100 signals: { usage_frequency: 'increasing' | 'stable' | 'declining' feature_adoption: number support_tickets_recent: number last_login: Date payment_status: 'current' | 'overdue' } }

// Reach out proactively when health score drops if (customer.health_score < 40) { await sendProactiveOutreach({ type: 'check_in', message: "Haven't seen you in a while. Need help with anything?" }) }

Quick Start Checklist Week 1: Foundation Set up support email (support@) Create basic FAQ (top 10 questions) Install chat widget Document known issues Week 2-3: Knowledge Base Choose KB platform Create getting started guide Document all features Add screenshots/GIFs Create troubleshooting section Week 4: Automation Set up auto-responders Create email templates Configure routing rules Add chatbot (basic) Ongoing Review ticket themes weekly Update KB based on common questions Track self-service rate Survey customer satisfaction Optimize response times Common Pitfalls

❌ Building KB before having users: Write docs based on actual questions, not assumptions ❌ Over-automating too early: Humans learn patterns; automate after seeing 50+ tickets on same topic ❌ Poor search: If users can't find answers, they'll submit tickets ❌ No feedback loop: Track which articles users view before submitting tickets ❌ Ignoring mobile: 40% of users will access support on mobile

Success Criteria

You have great support when:

✅ 70%+ of users find answers without contacting support ✅ First response time < 2 hours during business hours ✅ Customer satisfaction > 4.5/5 ✅ Support costs grow slower than user base ✅ Support team can focus on complex issues, not repetitive questions

返回排行榜