AI CRM-аналитика iGaming: сегментация, churn prediction, бонусы

Крупный iGaming-оператор с базой 2 млн игроков терял 30% прибыльных клиентов в первые 90 дней. Массовые бонусы привлекали охотников, ROI кампаний колебался около 80% — каждый доллар бонуса приносил 80 копеек возврата. После внедрения нашей системы оператор сократил убытки: снижение бонусного бюджета

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1440
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    997
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1264
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1002

Крупный iGaming-оператор с базой 2 млн игроков терял 30% прибыльных клиентов в первые 90 дней. Массовые бонусы привлекали охотников, ROI кампаний колебался около 80% — каждый доллар бонуса приносил 80 копеек возврата. После внедрения нашей системы оператор сократил убытки: снижение бонусного бюджета на $200,000 в год и увеличение LTV на 20%, что принесло дополнительно $1.5 млн.

Мы разработали AI-систему CRM-аналитики на основе ансамбля GradientBoosting (Gradient boosting) и KMeans-сегментации. За 6 недель внедрения оператор получил ROI 250%, снизил бонусный бюджет на 20% и сократил churn rate на 18%. Ключевое изменение — переход от универсальных RFM к GGR-сегментации, учитывающей реальную прибыльность игрока.

Система включает пайплайны на Airflow, хранилище ClickHouse и дашборды Metabase. Для каждого сегмента (champion, at_risk_highvalue, loyal_lowvalue, dormant) подбирается индивидуальная бонусная механика с разным вейджером. Встроенные RG-проверки блокируют бонусы для игроков с высоким риском проблемного поведения. Система еженедельно обновляет сегменты и модели, адаптируясь к изменениям поведения игроков.

Проблемы, которые решаем

  • Churn prediction: стандартные RFM-модели не учитывают тренды. Мы строим фичи: изменение сессий за 7/30 дней, тренд GGR, жалобы в поддержку. GradientBoosting даёт AUC 0.87 — на 12% лучше логистической регрессии.
  • Bonus abuse: массовые бонусы привлекают охотников. Сегментация выделяет 4 группы: champion (5–10% базы, 50–70% GGR), at_risk_highvalue, loyal_lowvalue, dormant. Для каждой — свой тип бонуса с разным вейджером.
  • RG compliance: встроенные проверки блокируют бонусы для игроков с высоким RG-риском. Это снижает претензии регуляторов.

Как предсказать отток игроков за 30 дней?

Используем ансамбль GradientBoosting с параметрами: n_estimators=200, learning_rate=0.05, max_depth=4. Обучаем на данных за 6 месяцев. Фичи включают days_since_last_session, sessions_trend, ggr_trend, bonus_expiry_ignored. Модель выдаёт вероятность churn и разбивает на tier: low, medium, high, critical. Для critical tier автоматически запускается реактивационная кампания с кешбэком.

Почему сегментация по GGR эффективнее RFM?

RFM учитывает только давность, частоту и сумму. GGR = депозиты – выводы – бонусы. Он точнее отражает реальную ценность игрока. Например, игрок с высоким RFM, но частыми выводами и бонусами — убыточен. GGR-сегментация выделяет 'champion' (высокий GGR + активность) и 'at_risk_highvalue' (высокий GGR, низкая активность) — именно на них нужно фокусировать ресурсы.

Как мы это делаем

Стек: Python, scikit-learn, PyTorch, Hugging Face (для NLP анализа чатов поддержки), ClickHouse (аналитика в реальном времени), Airflow (пайплайны), Metabase/Tableau (дашборды). Развёртывание в Docker/Kubernetes.

Пример кода сегментации:

import pandas as pd import numpy as np from sklearn.ensemble import GradientBoostingClassifier from sklearn.cluster import KMeans class iGamingPlayerSegmentor: """Сегментация по GGR и поведению""" def compute_player_value(self, player_data: pd.DataFrame) -> pd.DataFrame: """ GGR (Gross Gaming Revenue) и LTV расчёт. GGR = deposits - withdrawals - bonuses_paid """ df = player_data.copy() df['ggr'] = df['total_deposits'] - df['total_withdrawals'] - df['bonuses_paid'] df['ggr_per_month'] = df['ggr'] / df['months_active'].clip(1) df['deposit_frequency'] = df['deposit_count'] / df['months_active'].clip(1) df['withdrawal_ratio'] = df['total_withdrawals'] / df['total_deposits'].clip(1) # LTV прогноз: простая линейная проекция df['predicted_ltv_12m'] = df['ggr_per_month'] * 12 * ( 1 - df['churn_probability_30d'].fillna(0.3) ) return df def segment_players(self, player_value: pd.DataFrame) -> pd.DataFrame: """Сегментация по value и активности""" df = player_value.copy() ggr_median = df['ggr'].median() activity_median = df['sessions_last_30d'].median() def classify(row): high_ggr = row['ggr'] > ggr_median active = row['sessions_last_30d'] > activity_median if high_ggr and active: return 'champion' elif high_ggr and not active: return 'at_risk_highvalue' elif not high_ggr and active: return 'loyal_lowvalue' else: return 'dormant' df['segment'] = df.apply(classify, axis=1) return df class ChurnPredictoriGaming: """Churn prediction для iGaming""" def __init__(self): self.model = GradientBoostingClassifier( n_estimators=200, learning_rate=0.05, max_depth=4, random_state=42 ) def build_features(self, players: pd.DataFrame) -> pd.DataFrame: return pd.DataFrame({ 'days_since_last_session': players['days_since_last_session'], 'sessions_trend': (players['sessions_last_7d'] - players['sessions_prev_7d']) / (players['sessions_prev_7d'] + 1), 'ggr_trend': (players['ggr_last_30d'] - players['ggr_prev_30d']) / (abs(players['ggr_prev_30d']) + 1), 'deposit_count_7d': players['deposit_count_7d'], 'withdrawal_request': players['has_pending_withdrawal'].astype(int), 'bonus_expiry_ignored': players['bonus_expiry_ignored'].astype(int), 'support_complaint': players['has_support_complaint'].astype(int), 'avg_session_duration_trend': players['avg_session_duration_trend'], }).fillna(0) def predict(self, players: pd.DataFrame) -> pd.DataFrame: X = self.build_features(players) probs = self.model.predict_proba(X)[:, 1] result = players[['player_id']].copy() if 'player_id' in players.columns else pd.DataFrame(index=players.index) result['churn_prob_30d'] = probs result['churn_tier'] = pd.cut(probs, bins=[0, 0.2, 0.5, 0.75, 1.0], labels=['low', 'medium', 'high', 'critical']) return result class BonusCampaignOptimizer: """Оптимизация бонусных кампаний""" def design_retention_campaign(self, player_segment: str, player_stats: dict, budget_per_player: float) -> dict: """Бонусное предложение под сегмент и бюджет""" campaigns = { 'champion': { 'bonus_type': 'cashback_vip', 'value': min(player_stats.get('avg_weekly_ggr', 50) * 0.15, budget_per_player), 'wagering_req': 1, # Минимальный вейджер для VIP 'message': 'Эксклюзивный кешбэк для наших лучших игроков' }, 'at_risk_highvalue': { 'bonus_type': 'targeted_reload', 'value': min(player_stats.get('avg_deposit', 100) * 0.25, budget_per_player), 'wagering_req': 3, 'message': 'Специальное предложение — вернитесь к нам' }, 'loyal_lowvalue': { 'bonus_type': 'free_spins', 'value': 20, # 20 free spins ~ $5-10 value 'wagering_req': 5, 'message': 'Бонус за лояльность' }, 'dormant': { 'bonus_type': 'reactivation_bonus', 'value': min(20, budget_per_player), 'wagering_req': 5, 'message': 'Мы скучали! Вот бонус за возвращение' } } campaign = campaigns.get(player_segment, campaigns['loyal_lowvalue']) # RG проверка: не выдаём бонусы игрокам с высоким RG-риском if player_stats.get('rg_risk_level') == 'high': return {'bonus_type': 'none', 'reason': 'RG restriction'} return campaign def calculate_campaign_roi(self, campaign_results: pd.DataFrame) -> dict: """ROI бонусной кампании""" total_bonus_cost = campaign_results['bonus_value'].sum() incremental_ggr = ( campaign_results['ggr_post_campaign'] - campaign_results['ggr_pre_campaign'] ).sum() return { 'total_bonus_cost': round(total_bonus_cost, 2), 'incremental_ggr': round(incremental_ggr, 2), 'roi_pct': round((incremental_ggr - total_bonus_cost) / max(total_bonus_cost, 1) * 100, 1), 'reactivation_rate': (campaign_results['returned_to_active'] > 0).mean(), 'bonus_abuse_rate': ( campaign_results['withdrawal_after_bonus'] > campaign_results['bonus_value'] * 0.9 ).mean() } 

Процесс работы

  1. Аналитика: аудит текущей CRM, сбор данных (DWH, ClickHouse), выделение сегментов.
  2. Проектирование: определение метрик (GGR, LTV, churn rate), выбор моделей.
  3. Реализация: пайплайны на Airflow, обучение моделей, интеграция с бонусной системой.
  4. Тестирование: A/B тест на 10% трафика, сравнение ROI.
  5. Деплой: развёртывание в продакшн, дашборды, документация.

Что входит в работу

  • Аудит текущей CRM и данных
  • Наполнение DWH (ClickHouse, PostgreSQL)
  • ML-модели сегментации, churn prediction, оптимизации бонусов
  • Интеграция с бонусной системой (REST API)
  • Дашборды в Metabase/Tableau
  • Обучение команды (2 воркшопа)
  • Техническая поддержка 1 месяц

Ориентировочные сроки

Этап Срок
Аналитика 1-2 недели
Проектирование 1 неделя
Реализация 3-4 недели
Тестирование 1 неделя
Деплой и обучение 1-2 недели
Итого 4-8 недель

Сравнение метрик сегментации

Сегмент Доля базы Доля GGR Churn риск Рекомендуемый бонус
Champion 5–10% 50–70% Низкий Кешбэк с вейджером 1
At-risk high value 10–15% 20–30% Средний Релоад с вейджером 3
Loyal low value 30–40% 10–15% Средний Фриспины с вейджером 5
Dormant 40–50% 5–10% Высокий Реактивационный бонус
Детали модели GradientBoosting

Оптимальные гиперпараметры: n_estimators=200, learning_rate=0.05, max_depth=4, subsample=0.8. Важность фичей: days_since_last_session (0.25), ggr_trend (0.20), sessions_trend (0.18). Оценка AUC на отложенной выборке — 0.87.

Типичные ошибки

  • Игнорирование RG: без встроенных RG-проверок бонусы могут стимулировать проблемных игроков, что приведёт к штрафам.
  • Pure RFM: RFM не учитывает GGR и тренды, даёт ложные приоритеты.
  • Массовые бонусы: без сегментации бонусный бюджет тратится на охотников, ROI падает ниже 100%.
  • Слабая инфраструктура: без DWH и пайплайнов данные устаревают, модели работают некорректно.

Гарантируем повышение ROI бонусных кампаний минимум на 30% по результатам A/B теста. Свяжитесь с нами для консультации — оценим ваш проект за 2 дня. Закажите внедрение системы и получите первые результаты уже через 4 недели.