AI Telecom Subscriber Churn Prediction System Development

We design and deploy artificial intelligence systems: from prototype to production-ready solutions. Our team combines expertise in machine learning, data engineering and MLOps to make AI work not in the lab, but in real business.
Showing 1 of 1 servicesAll 1566 services
AI Telecom Subscriber Churn Prediction System Development
Medium
~1-2 weeks
FAQ
AI Development Areas
AI Solution Development Stages
Latest works
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1041
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    823
  • image_logo-aider_0.jpg
    AIDER company logo development
    762
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    848

Development of an AI System for Telecom Subscriber Churn Prediction

Telecom is a classic vertical for churn prediction: clear data on subscriber behavior, regular transactions, acquisition cost is 5-7 times higher than retention. An accurate model allows targeting retention budget only to those who will truly leave.

Telecom Churn Specifics

Types of churn:

  • Voluntary churn: subscriber consciously switches to a competitor or discontinues service
  • Involuntary churn: disconnection due to non-payment
  • Early churn: departure within first 90 days (special segment, often fraud or misfit)

Contractual vs. prepaid:

  • Postpaid plans (contract): clear termination date. Model predicts termination at renewal.
  • Prepaid: no explicit contract. Churn defined through inactivity: 30/60/90 days without top-up.

Feature Engineering from BSS/OSS Systems

Service usage:

features_usage = {
    # Voice
    'voice_outgoing_min_30d': sum(voice_outgoing_last_30d),
    'voice_incoming_min_30d': sum(voice_incoming_last_30d),
    'unique_called_numbers': len(unique_called_30d),
    'international_calls_flag': has_intl_calls_last_month,

    # Data
    'data_usage_gb_30d': sum(data_usage_last_30d),
    'data_usage_trend': data_30d - data_60_30d,  # growth/decline in consumption
    'wifi_calls_ratio': wifi_calls / total_calls,

    # SMS (declining but still informative)
    'sms_out_30d': sms_count_outgoing,

    # Financials
    'arpu': avg_monthly_revenue,
    'arpu_trend': arpu_30d - arpu_90d,
    'payment_delays': count(payment_delay > 5d),
    'last_payment_days_ago': days_since_last_payment
}

Operator interaction:

features_interaction = {
    'cs_contacts_30d': count(support_contacts_last_30d),
    'complaints_90d': count(formal_complaints_90d),
    'nps_score': last_nps_response,
    'app_logins_30d': mobile_app_logins_count,
    'mcare_self_service_ratio': self_service_actions / total_contacts,
    'billing_disputes': count(billing_disputes_ever)
}

Competitive context:

  • Numbers ported from network to competitor in last 30 days (MNP statistics by segment)
  • Competitive plan price: the higher the price gap, the higher the risk

Multi-horizon Models

30-day horizon: for personal retention offers (SMS, agent call) 90-day horizon: for segment retention campaigns 180-day horizon: for strategic customer base analysis

Different horizons—different features:

  • 30 days: signals from last week matter (CS call, negative NPS)
  • 90 days: trends over 3 months (gradual decline in usage)

Uplift Model for Retention ROI

Naive approach: offer discount to all high-risk subscribers. Problem: some will leave anyway, some will stay without discount. Discount only needed for "persuadables".

2×2 Matrix:

Without offer With offer
Will stay Sure Things Sure Things
Will leave Lost Causes Persuadables

Uplift model: Uplift = P(retained | treated) - P(retained | not treated)

Target only Persuadables with uplift > 0.

Meta-learner (T-Learner):

# T-Learner: two separate classifiers for treatment and control
model_treatment = LightGBMClassifier().fit(X_treated, y_treated)
model_control = LightGBMClassifier().fit(X_control, y_control)

uplift = model_treatment.predict_proba(X)[:, 1] - model_control.predict_proba(X)[:, 1]

Personalization of Retention Offers

When and what to offer:

Timing:

  • 30-60 days before contract end: maximum sensitivity
  • After negative NPS: within 48 hours
  • After support complaint: immediately, through agent

Offer selection model: Next Best Offer: multiclass classification (discount / bonus traffic / plan upgrade / free roaming). Features: CLV, ARPU, consumption type, offer history.

Timeline: basic churn model on BSS data—4-5 weeks. System with uplift modeling, NBO and CRM integration for retention campaigns—3-4 months.