Как посчитать self-service deflection в SQL

Закрепи формулу self service deflection в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать self service deflection в Telegram

Зачем deflection

Юзер ищет ответ в help center, читает FAQ, watches видео — и не создаёт тикет. Это deflection. Экономит время агентов и юзера. Метрика deflection rate показывает, насколько self-service инвестиция окупается.

Метрика

Сложно мерить напрямую: «юзер не создал тикет» — невидим. Proxy:

  • search в knowledge base без последующего тикета
  • viewer help article без последующего тикета
  • user vote «yes, this helped»

Deflection в SQL

WITH help_visitors AS (
    SELECT DISTINCT
        user_id,
        DATE_TRUNC('day', visit_date)::DATE AS visit_day
    FROM help_center_visits
    WHERE visit_date >= CURRENT_DATE - INTERVAL '30 days'
),
ticket_creators AS (
    SELECT DISTINCT
        user_id,
        DATE_TRUNC('day', created_at)::DATE AS ticket_day
    FROM support_tickets
    WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
),
deflection AS (
    SELECT
        h.user_id,
        h.visit_day,
        EXISTS (
            SELECT 1 FROM ticket_creators t
            WHERE t.user_id = h.user_id
              AND t.ticket_day BETWEEN h.visit_day AND h.visit_day + INTERVAL '1 day'
        ) AS created_ticket
    FROM help_visitors h
)
SELECT
    COUNT(*) AS help_visits,
    COUNT(*) FILTER (WHERE NOT created_ticket) AS deflected,
    COUNT(*) FILTER (WHERE NOT created_ticket)::NUMERIC * 100
    / NULLIF(COUNT(*), 0) AS deflection_rate_pct
FROM deflection;

Deflection 70-80% — здоровый help center.

По топикам

WITH article_visits AS (
    SELECT
        article_id,
        user_id,
        visit_date
    FROM help_center_visits
    WHERE visit_date >= CURRENT_DATE - INTERVAL '30 days'
),
post_visit_tickets AS (
    SELECT DISTINCT
        a.article_id,
        a.user_id
    FROM article_visits a
    JOIN support_tickets t
      ON t.user_id = a.user_id
     AND t.created_at BETWEEN a.visit_date AND a.visit_date + INTERVAL '1 day'
)
SELECT
    a.article_id,
    COUNT(DISTINCT a.user_id) AS visitors,
    COUNT(DISTINCT t.user_id) AS still_created_ticket,
    COUNT(DISTINCT a.user_id) - COUNT(DISTINCT t.user_id) AS deflected,
    (COUNT(DISTINCT a.user_id) - COUNT(DISTINCT t.user_id))::NUMERIC * 100
    / NULLIF(COUNT(DISTINCT a.user_id), 0) AS deflection_pct
FROM article_visits a
LEFT JOIN post_visit_tickets t USING (article_id, user_id)
GROUP BY a.article_id
HAVING COUNT(DISTINCT a.user_id) >= 50
ORDER BY deflection_pct ASC
LIMIT 20;

Articles с low deflection — переписать (плохо объясняет).

Закрепи формулу self service deflection в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать self service deflection в Telegram

Экономия

WITH counts AS (
    SELECT
        COUNT(*) AS help_visits,
        COUNT(*) FILTER (WHERE NOT created_ticket) AS deflected
    FROM deflection
),
cost AS (
    SELECT 12.0 AS cost_per_ticket  -- agent time × wage
)
SELECT
    deflected,
    deflected * cost_per_ticket AS estimated_savings_usd
FROM counts, cost;

100k deflections × $12 = $1.2M savings ежемесячно. Это бюджет на help center team.

Частые ошибки

Ошибка 1. Считать каждый visit = deflection. Юзер мог просто browse. Не каждый visit = «I had a problem».

Ошибка 2. Не учитывать time window. Тикет через 7 дней после visit — не related. Окно 24-48 часов.

Ошибка 3. Игнорировать negative feedback. Article voted «not helpful» — не deflection, даже если тикета нет.

Ошибка 4. Сравнивать deflection без context. 50% deflection в новом help center — норма. После 2 лет improvement — 80%.

Ошибка 5. Cost savings overstate. Customer мог не создать ticket даже без help center. Только incremental savings.

Связанные темы

FAQ

Какой deflection норма?

70-80% для зрелого help center. 50-60% для нового.

Окно после visit?

24-48 часов. Дальше — слабая связь.

Article quality vs deflection?

Бывает, полезная статья всё равно ведёт к тикету (юзер хочет double-check). Article quality — не единственная метрика.

Deflection через chatbot?

Chatbot, разрешающий вопрос до создания тикета — это deflection. Считайте отдельно.

Deflection и CSAT?

Не всегда позитивно: иногда юзер «решил сам» с frustration. Survey deflection users.