AI-система оцінки здоров'я клієнтів (Customer Health Score)
Customer Health Score (CHS) — інтегральний показник того, наскільки клієнт залучений до продукту та наскільки можливе продовження чи відтік. Для B2B SaaS та передплатних сервісів це провідний індикатор NRR (Net Revenue Retention). ML-підхід дозволяє перейти від інтуїції CSM до об'єктивної оцінки, що відтворюється.
Сигнали для моделі
Використання продукту:
- DAU/WAU/MAU: активність основних користувачів облікового запису
- Feature adoption: процент ключових фіч, задіяних в останні 30 днів
- глибина використання: advanced features vs. базові
- Стагнація: зниження використання за останні 4 тижні
Support & Success сигнали:
- Відкриті тикети без відповіді > 3 днів – негативний сигнал
- NPS, CSAT оцінки за останні 6 місяців
- EBR (Executive Business Review) відбувся – позитивний сигнал
- Escalations: скарги рівня керівництва
Комерційні індикатори:
- Близькість дати оновлення: < 90 днів → підвищене увагу
- Expansion або скорочення за останні 12 місяців
- Invoice payment delays: прострочення платежів
- Contract modifications: спроби переглянути умови
Сигнал стосунків:
- Sponsor changes: пішов champion з облікового запису - високий ризик
- Multi-threading: скільки контактів знає CSM (< 2 = single-threaded)
- Last meaningful interaction: коли востаннє була реальна розмова
Інженерія функцій
def compute_customer_health_features(account_id, lookback_days=90):
використання = get_product_usage(ідентифікатор_акаунту, дні_багатого_огляду)
підтримка = get_support_tickets(ідентифікатор_акаунта, дні_перегляду)
комерційний = get_crm_data(ідентифікатор_акаунта)
повернути {
# Тенденції використання
'usage_trend_slope': np.polyfit(діапазон(дні_повернення), використання['щоденні_активні_користувачі'], 1)[0],
'feature_adoption_score': len(використання['активні_функції']) / total_key_features,
'power_user_ratio': використання['високочастотні_користувачі'] / використання['загальна_кількість_місць'],
# Підтримка здоров'я
'open_critical_tickets': support[support['priority'] == 'критичний']['кількість'],
'avg_resolution_time_days': підтримка['avg_resolution_time'],
'recent_nps': підтримка['last_nps_score'],
# Комерційний
'днів_до_оновлення': (комерційний['дата_оновлення'] - сьогодні).днів,
'logo_expansion_12m': комерційний['arr_change_12m'],
'payment_delay_days': commercial['avg_payment_delay'],
# Зв'язок
'sponsor_change_6m': комерційний['sponsor_changed_flag'],
'contacts_known': commercial['known_contacts_count'],
'днів_з_останнього_дзвінка': (сьогодні - комерційний['останній_суттєвий_контакт']).днів
}
Моделі та архітектура
Composite Score (правиловий baseline):
def rule_based_health_score(функції):
score = 100 # починаємо зі 100
# Штрафи за використання
якщо features['usage_trend_slope'] < -0,1:
бал -= 20
якщо features['feature_adoption_score'] < 0,3:
бал -= 15
# Штрафи за підтримку
якщо функції['відкрити_критичні_квитки'] > 0:
бал -= 25
якщо features['recent_nps'] та features['recent_nps'] < 7:
бал -= 15
# Комерційний ризик
якщо features['days_to_renewal'] < 60 та features['logo_expansion_12m'] < 0:
бал -= 20
повернути max(0, min(100, бал))
ML-модель поверх: LightGBM або Logistic Regression навчена на історичних даних "продовжив/пішов" через 12 місяців. Перевага vs. правила: виявляє нелінійні взаємодії (наприклад, зниження usage саме по собі – не ризик, але у поєднанні з upcoming renewal – критично).
Часова перевірка:
# Walk-forward: навчаємо на когортах < 12 місяців тому, передбачаємо на пізніших
# Метрика: AUC прогнозу відтоку клієнтів за 90 днів
# Baseline: просто renewal date + останній NPS
Сегментація ризиків та дії
Рівні ризику:
| Рівень | Score | Дія |
|---|---|---|
| Здоровий | 70-100 | Щоквартальна перевірка, розширення гри |
| Увага | 50-69 | Щомісячний огляд CSM, виправлення проблемних моментів |
| У групі ризику | 30-49 | Планування EBR, участь керівництва |
| Критично | 0-29 | Зберегти тактику, можливі поступки |
Автоматизовані ігрові книги:
def trigger_playbook(обліковий запис, показник_справності, коди_причин):
якщо показник здоров'я < 30:
crm.create_task(власник='csm_manager', тип='urgent_review', обліковий запис=обліковий запис)
slack.notify('#csm-alerts', f"КРИТИЧНО: {account.name} score={health_score}")
elif health_score < 50 та 'usage_decline' у reason_codes:
gainsight.enroll_in_playbook(обліковий запис, 'активаційна_кампанія')
elif health_score > 80 та account.days_to_renewal < 90:
crm.create_opportunity(рахунок, тип='розширення', сума=рахунок.arr * 0.2)
Інтеграція з інструментами CS
Gainsight, ChurnZero, Totango: Ці платформи вже мають native health scoring. Кастомна ML модель експортує score через API → замінює або доповнює вбудовані правила.
CRM (Salesforce, HubSpot): Custom field "AI Health Score" на об'єкті Account. Оновлюється щотижня. Використовується в reports і forecasting.
Аналітика продукту (амплітуда, мікшпанель, купа): Джерело використання даних. Окремий API/export для B2B account-level агрегації.
Терміни: feature pipeline + rule-based score + Salesforce інтеграція - 3-4 тижні. ML-модель навчання та валідації + automated playbook triggers + Gainsight integration - 6-8 тижнів.







