01
Behavior Data Pipeline
Built the behavior-log ingestion flow using Azure Load Testing, Functions, Event Hubs, ADLS Gen2, and Databricks.
DATA · ANALYTICS · PRODUCT
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
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
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
03 — MY ROLE
01
Built the behavior-log ingestion flow using Azure Load Testing, Functions, Event Hubs, ADLS Gen2, and Databricks.
02
Queried and validated the DLT Gold user behavior snapshot table with SQL to inspect churn-related indicators and abnormal cases.
03
Identified users whose classification did not sufficiently reflect their actual inactivity and refined the user-state logic.
04
Separated current state, churn cause, and future churn probability and used them to design targeted campaign strategies.
04 — METRIC IMPROVEMENT
PROBLEM DISCOVERY
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
Sparse user activity
→
The denominator increases
→
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
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
Describes the user's current state: Active, Soft Churn, Dormant, or Churned.
BEHAVIORAL CONTEXT
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
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
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
What is the user's current churn-related state?
CAUSE
02
What behavioral reason may be contributing to churn?
FUTURE RISK
03
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
Separated historical and event data collection while integrating both into the downstream processing workflow.
02
Validated churn indicators and refined user-state classification by incorporating actual inactivity.
03
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.
SignalCraft · 2026