Как найти Aha-moment в SQL

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

Зачем Aha-moment

Facebook нашёл свой aha-moment: «7 friends in 10 days». Если новый юзер достигал этого — retention rocket. Если нет — отвал. Aha-moment — действие или milestone, которое разделяет retained и churned.

Подход к расчёту

  1. Identify candidate actions (типа number of X in Y days).
  2. Compute retention для users, achieved action vs not.
  3. Найдите gap > 2x — это aha-moment.

Базовый расчёт

Допустим, hypothesis: «added 3 friends in first week».

WITH new_users AS (
    SELECT user_id, signup_date
    FROM users
    WHERE signup_date >= CURRENT_DATE - INTERVAL '90 days'
),
friend_count_w1 AS (
    SELECT
        n.user_id,
        n.signup_date,
        COUNT(*) AS friends_added_w1
    FROM new_users n
    LEFT JOIN friend_events f
        ON f.user_id = n.user_id
        AND f.event_date BETWEEN n.signup_date AND n.signup_date + INTERVAL '7 days'
    GROUP BY n.user_id, n.signup_date
),
retention AS (
    SELECT
        f.user_id,
        f.friends_added_w1,
        CASE
            WHEN EXISTS (
                SELECT 1 FROM events e
                WHERE e.user_id = f.user_id
                  AND e.event_date BETWEEN f.signup_date + INTERVAL '30 days'
                                       AND f.signup_date + INTERVAL '60 days'
            ) THEN 1 ELSE 0
        END AS retained_d30
    FROM friend_count_w1 f
)
SELECT
    CASE
        WHEN friends_added_w1 = 0 THEN '0 friends'
        WHEN friends_added_w1 BETWEEN 1 AND 2 THEN '1-2 friends'
        WHEN friends_added_w1 BETWEEN 3 AND 5 THEN '3-5 friends'
        ELSE '6+ friends'
    END AS bucket,
    COUNT(*) AS users,
    AVG(retained_d30) * 100 AS retention_d30_pct
FROM retention
GROUP BY 1
ORDER BY 1;

Если retention для «3-5» 60% vs «1-2» 20% — aha-moment near 3.

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

По сегментам

-- Aha-moment может отличаться по acquisition channel
WITH ... -- same logic
SELECT
    u.acquisition_channel,
    AVG(CASE WHEN friends_added_w1 >= 3 THEN retained_d30 END) * 100 AS retention_if_aha_hit,
    AVG(CASE WHEN friends_added_w1 < 3 THEN retained_d30 END) * 100 AS retention_if_not
FROM users u
JOIN retention r ON r.user_id = u.user_id
GROUP BY u.acquisition_channel;

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

Ошибка 1. Causation vs correlation. Юзеры с 5 friends в week 1 retained лучше — это потому что friends → retention или engaged users → friends + retention? Возможно selection bias.

Ошибка 2. Single-action aha. Real aha — комбо: «friends + posts + likes». ML / decision tree находит лучше.

Ошибка 3. Period mismatch. Action в week 1 → retention в month 1. Можно ли action в month 1 → retention в month 2? Зависит от продукта.

Ошибка 4. Threshold arbitrary. «3 friends» — где gap? Не «3 потому что красивая цифра», а «retention plot показывает knee at 3».

Ошибка 5. Игнорировать sample size. Если в bucket 10 юзеров — retention 100% или 0% — noise.

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

FAQ

Aha-moment у каждого продукта?

Да. Найти — половина победы. Twitter — 30 follows. Slack — 2000 messages. Dropbox — 1 file shared.

Aha vs Activation?

Activation — первая успешная интеграция продукта. Aha — milestone предсказывающий retention. Часто одно и то же.

Как тестировать гипотезу aha?

A/B: одна группа nudge'ится к aha (notifications), другая нет. Retention должна расти у первой.

Aha меняется со временем?

Да. Новые features могут менять aha-moment. Re-find раз в год.

Можно ли несколько aha?

В сложных продуктах — да. Onboarding aha, growth aha, retention aha — разные.