DATA · ANALYTICS · PRODUCT

SignalCraft

OTT Churn Prevention
Data Platform

PERIOD

2026.01 — 2026.02

TEAM

Microsoft Data School · 5 Members

ROLE

Data Pipeline · Metric Design · Strategy Design

Azure Event Hubs · ADLS Gen2 · Azure Databricks · DLT · Delta Lake · PySpark · SQL · XGBoost · MLflow

01 — OVERVIEW

Turning user behavior data into actionable churn prevention strategies.

SignalCraft is an Azure-based OTT churn prevention platform designed to collect and process user behavior data, analyze churn-related indicators, and estimate future churn probability.

The project connected data engineering, analytics, and retention campaign strategy design so that processed data could ultimately support concrete customer actions.

02 — DATA PIPELINE

From behavior events to analytics-ready customer data.

User behavior events were collected through Azure services and processed in Databricks using a Medallion Architecture.

Behavior Logs

Azure Load Testing

Functions

HTTP Trigger

Event Hubs

Event Ingestion

ADLS Gen2

Raw Storage

Databricks

Bronze · Silver · Gold

Analytics

SQL · XGBoost

Historical data and event data were collected separately and integrated during downstream processing.

03 — MY ROLE

01

Behavior Data Pipeline

Built the behavior-log ingestion flow using Azure Load Testing, Functions, Event Hubs, ADLS Gen2, and Databricks.

02

Metric Validation

Queried and validated the DLT Gold user behavior snapshot table with SQL to inspect churn-related indicators and abnormal cases.

03

Churn Logic Improvement

Identified users whose classification did not sufficiently reflect their actual inactivity and refined the user-state logic.

04

Campaign Strategy Design

Separated current state, churn cause, and future churn probability and used them to design targeted campaign strategies.

04 — METRIC IMPROVEMENT

PROBLEM DISCOVERY

I found a reversal problem in the MIVT-based churn-risk metric for users with sparse activity.

The original churn state was derived from an inactivity index calculated by dividing the number of days since the last login by MIVT. However, this produced counterintuitive results for users with very few active days.

MIVT

observation days ÷ active days

Average activity interval calculated from the user's accumulated observation period and active days.

INACTIVITY INDEX

days since last login ÷ MIVT

Used to classify the user's current churn-risk state.

WHY THE METRIC FAILED

Fewer Active Days

Sparse user activity

Larger MIVT

The denominator increases

Lower Risk Index

The user may appear more active

As activity became sparser, MIVT could become excessively large. This reduced the inactivity index and could make a long-inactive user appear less risky — the opposite of the intended interpretation.

EXAMPLE

Observation Period

90 days

Active Days

1 day

Days Since Last Login

60 days

MIVT = 90 / 1 = 90
Inactivity Index = 60 / 90 = 0.67

Despite 60 days of inactivity, the original rule could classify this user as Active.

REDESIGN

Separate the user's state from the reason behind it.

A single MIVT-based risk score could not reliably describe every behavioral pattern. I introduced a separate churn_reason dimension to capture the context behind each user's state and identify cases where the original metric required additional interpretation.

STATE

churn_risk_level

Describes the user's current state: Active, Soft Churn, Dormant, or Churned.

BEHAVIORAL CONTEXT

churn_reason

Separately captures patterns such as prechurned, data gap, onboarding failure, and silent decay.

prechurned

Users with no active days despite a sufficiently long observation period.

data_gap

Users with too few active days for MIVT-based interpretation to be reliable.

onboarding_fail

New users who showed little activity and became inactive shortly after joining.

silent_decay

Previously active users whose recent engagement dropped sharply.

STATE CORRECTION

Correcting users that MIVT could not represent reliably.

For prechurned users, I used their actual inactivity period instead of relying solely on MIVT and corrected the final churn state accordingly.

< 14 days

Soft Churn

14 — 59 days

Dormant

≥ 60 days

Churned

OUTCOME

The redesign removed counterintuitive classifications, improved the interpretability of churn states, and created a clearer foundation for connecting behavioral context to retention campaign actions.

05 — STRATEGY DESIGN

From churn prediction to actionable retention campaigns.

Instead of expressing churn through a single indicator, the decision structure was separated into three dimensions: current state, causal drivers, and future churn risk.

CURRENT STATE

01

Risk Level

What is the user's current churn-related state?

CAUSE

02

Churn Reason

What behavioral reason may be contributing to churn?

FUTURE RISK

03

Probability Band

How likely is the user to churn according to the XGBoost prediction?

SEGMENTATION

Churn Reason + XGBoost Probability Band

ACTION

8 Targeted Campaign Strategies

User segments were connected to rule-based campaign strategies so that analytics could lead to concrete customer actions.

06 — RESULT

01

Integrated Data Pipeline

Separated historical and event data collection while integrating both into the downstream processing workflow.

02

Improved Metric Logic

Validated churn indicators and refined user-state classification by incorporating actual inactivity.

03

Actionable Segmentation

Connected churn causes and future probability bands to eight targeted retention campaign strategies.

The project also established a Medallion Architecture for layered data processing and enabled churn KPI monitoring through an automatically refreshed analytics workflow.

07 — WHAT I LEARNED

Reliable metrics start with reliable data.

Through this project, I learned that data collection, pipeline design, metric definition, and business strategy are closely connected. A technically correct pipeline becomes more valuable when its outputs can be trusted, interpreted, and translated into concrete actions.

Back to Projects

SignalCraft · 2026