customer-support-builder について
Customer Support Builderは、ドキュメント、セルフサービス、自動化、チケットのワークフローを通じて拡大に対応するサポート体制を設計するスキルです。サポートチャネル、指標、振り分け、段階的な拡張を扱います。
主な機能
- 01サポート成熟度の計画
- 02ナレッジベースの構成
- 03メールとチャットのワークフロー
- 04チャットボットの判断経路
- 05チケットの振り分けとライフサイクル
- 06サポート指標と監視
活用シーン
- 01成長する製品のサポート計画
- 02検索可能なヘルプセンターの作成
- 03よくある問い合わせの自動化
- 04チケットの割り当てルール策定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ daffy0208/ ai-dev-standards --skill customer-support-builderインストール後、Claude Code で/customer-support-builderを入力して読み込まれたか確認します。
同梱ファイルmanifest.yaml
詳細
カスタマーサポートビルダー
採用人数を比例して増やすことなく、プロダクトの成長に合わせて拡張できるカスタマーサポートシステムを構築します。
基本原則
ユーザー数の増加に対して、サポートはそれより緩やかに拡大するべきです。 ユーザー数が100人から10,000人に増えても、サポート件数が100倍に増えるべきではありません。優れたセルフサービスシステムがあれば、ユーザー数が100倍に増えても、サポートの必要性の増加を10〜20倍に抑えられます。
サポート成熟度モデル
ステージ1:創業者主導(ユーザー数0〜100人)
- 創業者がすべての質問に自ら回答する
- ユーザーが実際に困っていることを把握する
- よくある質問を手動で文書化する
- 主要指標:応答時間 < 2時間
ステージ2:文書化(ユーザー数100〜1,000人)
- 包括的なナレッジベース
- テンプレートを使ったメールサポート
- 基本的なFAQセクション
- 主要指標:セルフサービス率30%
ステージ3:セルフサービス(ユーザー数1,000〜10,000人)
- 検索可能なヘルプセンター
- アプリ内のコンテキストに応じたヘルプ
- よくある問題への自動応答
- 主要指標:セルフサービス率60%
ステージ4:大規模展開(ユーザー数10,000人以上)
- AI を活用したチャットボット
- コミュニティフォーラム
- 動画チュートリアル
- プロアクティブサポート(問い合わせが発生する前に問題を検知)
- 主要指標:セルフサービス率80%
ナレッジベースのアーキテクチャ
コンテンツ構成
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
記事テンプレート
# [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
- Screenshot/GIF
- Expected result
2. **Step 2**: Next action
- Screenshot/GIF
- Expected result
## Troubleshooting
- Problem: X → Solution: Y
- Problem: A → Solution: B
## Related Articles
- [Article 1](#)
- [Article 2](#)
サポートチャネル
メールサポート
セットアップ:
Primary: [email protected]
Routing:
- [email protected] → Billing team
- [email protected] → Engineering
- [email protected] → General inquiries
SLA:
- Critical: 2 hours
- High: 8 hours
- Normal: 24 hours
- Low: 48 hours
メールテンプレート:
# 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]
チャットサポート
アプリ内チャットウィジェット:
// 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>
チャットのSLA:
- 営業時間内:5分以内に応答
- 営業時間外:メールの自動応答
- 解決までの見込み:1〜3回のメッセージ
チャットボット(AI 搭載)
決定木:
User message →
├── Can answer with KB article? → Send article
├── Simple factual question? → AI answers
├── Complex issue? → Route to human
└── Angry/escalated? → Priority human routing
実装:
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)
}
チケット管理
チケット管理システムのスキーマ
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
}
自動振り分けルール
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
チケットのライフサイクル
New → Open → Pending → Resolved → Closed
↓ ↑
← Reopen ←
ステータスの定義:
- 新規:作成されたばかりで、まだ確認されていない
- オープン:エージェントが対応中
- 保留中:顧客からの返信待ち
- 解決済み:解決策を提示済みで、確認待ち
- クローズ:問題が解決したことを確認済み、または7日後に自動クローズ
セルフサービスツール
対話型トラブルシューティング
// 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' }
]
}
}
アプリ内ガイダンス
// 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'
}
}
}
サポート指標
追跡すべき主要指標
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
}
目標ベンチマーク
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'
拡大戦略
サポートチームの構成
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
サポートスタッフを採用するタイミング
目安:
- ユーザー数0〜500人:創業者が対応
- ユーザー数500〜2,000人:サポート担当者1人
- ユーザー数2,000〜5,000人:サポート担当者2〜3人
- ユーザー数5,000〜20,000人:サポート担当者5〜8人
- ユーザー数20,000人以上:チームを構築
より適切な指標:サポートの負荷
- 次の場合に採用:1日あたり50件を超えるチケット、または同時対応中のチャットが10件を超える
- エージェント1人あたりの対応可能件数:1日あたり約30〜40件のチケット、または8〜10件のチャット
ツールとソフトウェア
推奨スタック
チケット管理:Zendesk、Intercom、Help Scout、Freshdesk ナレッジベース:GitBook、Notion、Confluence、Document360 チャット:Intercom、Drift、Crisp チャットボットAI:OpenAI、Anthropic Claude、Dialogflow コミュニティ:Discourse、Circle、Slack/Discord 分析:Mixpanel、Amplitude(アプリ内の行動分析用)
統合例
// 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)
}
}
プロアクティブサポート
問い合わせが発生する前に問題を検知する
// 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)
}
}
ヘルススコアのモニタリング
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?"
})
}
クイックスタートチェックリスト
1週目:基盤
- サポート用メールアドレス(support@)を設定する
- 基本的なFAQを作成する(よくある質問トップ10)
- チャットウィジェットをインストールする
- 既知の問題を文書化する
2〜3週目:ナレッジベース
- ナレッジベースのプラットフォームを選ぶ
- スタートガイドを作成する
- すべての機能を文書化する
- スクリーンショットやGIFを追加する
- トラブルシューティングのセクションを作成する
4週目:自動化
- 自動応答を設定する
- メールテンプレートを作成する
- 振り分けルールを設定する
- 基本的なチャットボットを追加する
継続的な取り組み
- 毎週、チケットの傾向を確認する
- よくある質問に基づいてナレッジベースを更新する
- セルフサービス率を追跡する
- 顧客満足度を調査する
- 応答時間を最適化する
よくある落とし穴
❌ ユーザーがいないうちにナレッジベースを構築する:思い込みではなく、実際の質問に基づいてドキュメントを作成します ❌ 早い段階で自動化しすぎる:人はパターンを学習します。同じトピックのチケットが50件以上寄せられてから自動化します ❌ 検索機能が不十分:ユーザーが回答を見つけられなければ、チケットを送信します ❌ フィードバックの仕組みがない:チケットを送信する前にユーザーが閲覧した記事を追跡します ❌ モバイルを軽視する:ユーザーの40%はモバイルでサポートにアクセスします
成功の基準
次の条件を満たしていれば、優れたサポートを提供できています。
- ✅ ユーザーの70%以上が、サポートに問い合わせずに回答を見つけている
- ✅ 営業時間中の初回応答時間が2時間未満
- ✅ 顧客満足度が5点満点中4.5点を超えている
- ✅ サポートコストの増加率がユーザー数の増加率を下回っている
- ✅ サポートチームが、繰り返し寄せられる質問ではなく、複雑な問題に集中できている