← Назад к вопросам

Какую задачу решал на проекте?

1.3 Junior🔥 221 комментариев
#Метрики и KPI#Опыт работы и проекты

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Проектная задача: Оптимизация воронки конверсии для SaaS платформы

Контекст проекта

Я работал на SaaS платформе для управления подписками с 50,000+ активных пользователей. Компания заметила, что конверсия с пробного периода в платных подписок упала с 35% до 18% за квартал. Это привело к потерям ~$500K в годовом доходе. Моя задача была понять причины и предложить рекомендации для восстановления конверсии.

Фаза 1: Анализ данных и выявление проблем

Первый шаг — построить воронку и найти узкие места:

WITH funnel AS (
    SELECT 
        'trial_signup' as stage,
        COUNT(DISTINCT user_id) as users
    FROM users WHERE trial_started_at IS NOT NULL
    
    UNION ALL
    
    SELECT 
        'first_login',
        COUNT(DISTINCT user_id)
    FROM sessions 
    WHERE user_id IN (SELECT user_id FROM users WHERE trial_started_at IS NOT NULL)
    
    UNION ALL
    
    SELECT 
        'feature_usage',
        COUNT(DISTINCT user_id)
    FROM events
    WHERE event_type = 'feature_used'
    AND user_id IN (SELECT user_id FROM users WHERE trial_started_at IS NOT NULL)
    
    UNION ALL
    
    SELECT 
        'paid_conversion',
        COUNT(DISTINCT user_id)
    FROM subscriptions
    WHERE user_id IN (SELECT user_id FROM users WHERE trial_started_at IS NOT NULL)
    AND subscription_status = 'active'
)
SELECT 
    stage,
    users,
    LAG(users) OVER (ORDER BY stage) as prev_stage_users,
    ROUND(100.0 * users / LAG(users) OVER (ORDER BY stage), 2) as conversion_percent
FROM funnel;

Результаты:

  • Trial signup → First login: 65% (норма)
  • First login → Feature usage: 42% (ниже, чем было 55%)
  • Feature usage → Paid conversion: 22% (критично, было 38%)

Фаза 2: Углублённый анализ когорт

Использовал Python для анализа когорт по времени:

import pandas as pd
import numpy as np

# Загрузка данных когорт
df_cohorts = pd.read_sql("""
    SELECT 
        DATE_TRUNC('week', trial_started_at) as cohort_week,
        DATE_TRUNC('week', subscription_created_at) as paid_week,
        COUNT(*) as users
    FROM users u
    LEFT JOIN subscriptions s ON u.user_id = s.user_id
    WHERE trial_started_at >= '2023-01-01'
    GROUP BY 1, 2
""", conn)

# Построение матрицы когорт
cohort_pivot = df_cohorts.pivot_table(
    values='users',
    index='cohort_week',
    columns='paid_week',
    aggfunc='sum'
)

# Расчёт конверсии по неделям
for col in cohort_pivot.columns:
    cohort_pivot[col] = 100.0 * cohort_pivot[col] / cohort_pivot.iloc[:, 0]

print(cohort_pivot)

Найденные закономерности:

  • Когорты от январь-марта: конверсия 35-40% (норма)
  • Когорты от апреля: конверсия 18-22% (критическое падение)
  • День падения конверсии совпадает с обновлением ценовой страницы

Фаза 3: Выявление корневой причины

Проанализировал поведение пользователей после обновления цен:

-- Сравнение поведения до и после обновления (1 апреля)
WITH user_events AS (
    SELECT 
        u.user_id,
        u.trial_started_at,
        COUNT(CASE WHEN e.event_type = 'pricing_page_view' THEN 1 END) as pricing_views,
        COUNT(CASE WHEN e.event_type = 'upgrade_button_click' THEN 1 END) as upgrade_clicks,
        COUNT(CASE WHEN e.event_type = 'feature_demo_started' THEN 1 END) as demo_starts,
        AVG(CASE WHEN e.event_type = 'feature_used' THEN 1 ELSE 0 END) as feature_engagement
    FROM users u
    LEFT JOIN events e ON u.user_id = e.user_id
    GROUP BY u.user_id, u.trial_started_at
)
SELECT 
    CASE WHEN trial_started_at < '2024-04-01' THEN 'Before' ELSE 'After' END as period,
    COUNT(*) as total_users,
    ROUND(AVG(pricing_views), 2) as avg_pricing_views,
    ROUND(AVG(upgrade_clicks), 2) as avg_upgrade_clicks,
    ROUND(AVG(feature_engagement), 2) as avg_engagement
FROM user_events
GROUP BY 1;

Вывод:

  • После обновления цен: количество переходов на pricing page упало на 30%
  • Те, кто всё же смотрели цены: upgrade click rate упал с 12% на 5%

Фаза 4: Гипотезы и рекомендации

Разработал 3 гипотезы:

Гипотеза 1: Ценовой шок

  • Средняя цена вросла на 25%
  • Рекомендация: A/B тест с более мягким повышением (15% пошагово)

Гипотеза 2: Оформление цен

  • Новый дизайн менее понятный (нет явного CTA)
  • Рекомендация: добавить яркий "Upgrade" button рядом с ценой

Гипотеза 3: Нехватка фич в пробном периоде

  • Пользователи не видят фичи за деньги, прежде чем платят
  • Рекомендация: разрешить 10 дополнительных фичей на день 7-10 пробного периода

Фаза 5: Реализация и результаты

Реализовал гипотезу 2 (А/В тестирование дизайна):

-- Отслеживание результатов A/B теста
SELECT 
    variant,
    COUNT(DISTINCT user_id) as users,
    COUNT(DISTINCT CASE WHEN purchased = true THEN user_id END) as converters,
    ROUND(100.0 * COUNT(DISTINCT CASE WHEN purchased = true THEN user_id END) / COUNT(DISTINCT user_id), 2) as conversion_rate,
    ROUND(AVG(revenue), 2) as avg_revenue_per_user
FROM ab_test_metrics
WHERE test_name = 'pricing_page_redesign'
GROUP BY variant;

Результаты:

  • Контрольная группа (старый дизайн): 5% конверсия
  • Тестовая группа (новый дизайн с CTA): 8.5% конверсия
  • Улучшение: +70% в конверсии с pricing page
  • В масштабе: восстановление ~$350K в годовом доходе

Ключевые метрики

МетрикаДоПослеИзменение
Общая конверсия18%24%+33%
Pricing page view → upgrade5%8.5%+70%
Средний доход на пользователя$42$48+14%
Время на pricing page45 сек65 сек+44% (лучше)

Навыки, которые я применил

  • SQL анализ — воронки, когорты, временные ряды
  • Python/Pandas — обработка и визуализация больших датасетов
  • Статистика — A/B тесты, доверительные интервалы (95%)
  • Бизнес-логика — понимание impact на доход
  • Коммуникация — презентация результатов stakeholders

Эта задача показала, как правильный анализ данных может напрямую влиять на доходы компании.