LESSON

顧客満足度の測定

「AIが良い回答を返しているかは、最終的に顧客が満足しているかで判断する。」

田中VPoEが顧客満足度データを見せる。

「CSAT、解決率、再問い合わせ率。これらの指標でエージェントの真の価値を測ろう。」

満足度指標

指標定義目標
CSAT顧客満足度アンケート(1-5点)>= 4.0
一次解決率1回の対応で解決した割合>= 70%
再問い合わせ率同一件で再度問い合わせした割合<= 15%
対応時間問い合わせから解決までの時間< 5分(AI)/ < 30分(人間)
エスカレーション率人間に引き継がれた割合<= 25%

CSATの自動収集

class CSATCollector:
    """顧客満足度の収集"""

    def __init__(self):
        self.scores = []

    def request_feedback(self, ticket_id):
        """対応後にCSATアンケートを送信"""
        return {
            'ticket_id': ticket_id,
            'question': 'この対応にどの程度満足していますか?',
            'options': [
                {'value': 1, 'label': '非常に不満'},
                {'value': 2, 'label': '不満'},
                {'value': 3, 'label': '普通'},
                {'value': 4, 'label': '満足'},
                {'value': 5, 'label': '非常に満足'},
            ],
        }

    def record_score(self, ticket_id, score, comment=None):
        """CSATスコアを記録"""
        self.scores.append({
            'ticket_id': ticket_id,
            'score': score,
            'comment': comment,
            'timestamp': datetime.now().isoformat(),
        })

    def compute_csat(self, period_days=30):
        """期間内のCSATを計算"""
        recent = [s for s in self.scores
                  if (datetime.now() - datetime.fromisoformat(s['timestamp'])).days <= period_days]

        if not recent:
            return None

        scores = [s['score'] for s in recent]
        satisfied = sum(1 for s in scores if s >= 4)

        return {
            'csat_score': round(np.mean(scores), 2),
            'satisfaction_rate': round(satisfied / len(scores) * 100, 1),
            'n_responses': len(scores),
            'distribution': {i: scores.count(i) for i in range(1, 6)},
        }

AI対応 vs 人間対応の比較

def compare_ai_human_performance(ai_tickets, human_tickets):
    """AI対応と人間対応のパフォーマンス比較"""
    comparison = {
        'AI対応': {
            'n_tickets': len(ai_tickets),
            'avg_csat': round(np.mean([t['csat'] for t in ai_tickets if t.get('csat')]), 2),
            'first_resolution_rate': round(
                sum(1 for t in ai_tickets if t['resolved_first']) / len(ai_tickets) * 100, 1
            ),
            'avg_response_time_min': round(
                np.mean([t['response_time_min'] for t in ai_tickets]), 1
            ),
            'cost_per_ticket': 50,  # API費用
        },
        '人間対応': {
            'n_tickets': len(human_tickets),
            'avg_csat': round(np.mean([t['csat'] for t in human_tickets if t.get('csat')]), 2),
            'first_resolution_rate': round(
                sum(1 for t in human_tickets if t['resolved_first']) / len(human_tickets) * 100, 1
            ),
            'avg_response_time_min': round(
                np.mean([t['response_time_min'] for t in human_tickets]), 1
            ),
            'cost_per_ticket': 2500,  # 人件費
        },
    }
    return comparison

まとめ

項目ポイント
CSAT顧客満足度を直接測定(目標4.0以上)
一次解決率AI対応の実用性を測る最重要指標
対応時間AI: <5分、人間: <30分を目標
コスト比較AI: 50円/件 vs 人間: 2,500円/件

チェックリスト

  • CSATの収集・計算方法を理解した
  • 一次解決率と再問い合わせ率を計算できる
  • AI対応と人間対応のパフォーマンスを比較できる
  • 満足度改善のアクションを設計できる

次のステップへ

顧客満足度の測定を学んだ。次はエスカレーション最適化を学ぼう。

推定読了時間: 30分