calvin.goh
/ aam · 04 / subscriber-nba
← All projects
Gartner Analytics Ascendancy Model · stage 04 of 04 · on Sooka
01
Descriptive
what's happening?
02
Diagnostic
why is it happening?
03
Predictive
what will happen?
04 · YOU ARE HERE
Prescriptive
what should we do?
Prescriptive · what should we doSooka · subscriber lifecycleCohort × churn × affinitySuppress would-renew

The retention play that writes itself — and knows when not to send.

Retention was firing the same discount at every wobbling subscriber — and burning margin on the ones who were going to renew anyway. This loop scores every Sooka subscriber daily on churn risk and content affinity, picks one of four actions per cohort, and writes a Clevertap campaign brief automatically. The biggest win wasn't the campaigns we sent. It was the 30% we suppressed.

Retention lift · loyal cohort
+18%
vs holdout · 90 day window
Campaign efficiency
+24%
Spend per retained subscriber
Margin saved · per quarter
$215k
Suppressed would-renew sends
Clevertap pushes
9,432
Per quarter · zero manual briefs
01 · PROBLEM
One offer, every wobble, no logic

Retention was a broadcast: any subscriber whose engagement dipped got the same three-month discount. Roughly a third of those subs would have renewed at full price. The discount cost was visible; the margin leak wasn’t.

02 · APPROACH
Cohort it, score it, suppress it

Daily cohort assignment on Redshift, joined to the survival-model churn risk and a content-affinity vector. Per-cohort uplift fit from prior campaigns. A would-renew suppression layer on top — if the renewal probability is above 0.85, do nothing. The matrix exposes the rule, not just the answer.

03 · RESULT
Smaller campaigns, larger lift

Retention went from one-mechanic-fits-all to four cohort-tuned plays. Total subscribers touched dropped 30%. Net retention went up 18% on the loyal-sport-core cohort, 12% on engaged-content. The team started reading the suppression list as a feature, not a bug.

// THE LOOP · 1 QUARTER · 10,000 ACTIVE SUBSCRIBERS

What the matrix decided last quarter.

Loyal · sport core1,840Engaged · content-led2,640Trial · expiring3,120At-risk · waning1,480Dormant · 30d+ idle920Content push · affinity-led2,860Retention offer · price/term2,380Bundle upsell · telco partner1,320Suppress · would-renew anyway2,440Renewed / converted4,380No measurable lift3,180Margin saved · suppressed2,44001 · SUBSCRIBER COHORT02 · NEXT-BEST-ACTION03 · OUTCOME · 30D
Of 10,000 at-risk subscribers, 2,440 (24%) were suppressedfrom the weekly send because the would-renew model said the discount would cost margin we didn't need to spend. 7,560 received a cohort-tuned action. 4,380 renewed or converted in the 30 days that followed. The suppression count was the metric retention watched first.
// FOUR STAGES · CLICK THROUGH

From a daily subscriber score to a Sooka in-app rail.

STAGE · CLASSIFY
Score the subscriber

Every Sooka subscriber gets a daily score from OneLake — churn risk from the survival model, content affinity (sport vs K-content vs variety), engagement trend, and lifecycle stage. The model labels them into five behavioural cohorts and tracks transitions week-over-week.

WHY THIS STAGE MATTERS
A static segmentation re-cut quarterly is yesterday’s newspaper. Daily refresh from OneLake is what makes the matrix react to actual viewing behaviour, not last quarter’s — the day someone stops watching is the day the score moves.
// stage · classifyexample payload
# subscriber NBA score · daily refresh
{
  "subscriber_id":   "SK-MY-08412",
  "tenure_days":     142,
  "lifecycle":       "loyal_sport_core",
  "churn_risk_30d":  0.34,
  "affinity": {
    "sport":   0.71,
    "kdrama":  0.18,
    "variety": 0.11
  },
  "engagement_trend_4w": "stable → declining",
  "bundle":          "celcom_postpaid · expires 14d",
  "would_renew_p":   0.82
}
// LIVE RUN

Score one subscriber yourself.

Pick a subscriber dossier — or paste your own (4 KB cap) — and watch the agent score renewal probability, assign a cohort, and recommend the single highest-leverage action. Suppression triggers automatically when renewal is already a near-certainty. Live model call. Cached replay if the rate-limit fires.

pick a fixture_
or

waiting for verification token…

~/demo/subscriber-nba.log
idle · waiting for input
model_
pick a fixture, then press [ run demo ].
01 · cohortrenewal prior
waiting for run…
02 · actionnext best play
waiting for run…
03 · outboundmoengage copy
waiting for run…
── nba recommender log ──
no log entries yet
// IMPACT · 8-QUARTER TREND · LOYAL-SPORT-CORE COHORT

Retention, recovered.

Retention rate · index (Q-7 = 100)Pre-NBA trajectory
The week we suppressed 30% of the send and the loyal cohort still grew, the matrix earned its keep.
— Head of Retention, Sooka
That's the four. Descriptive sees, diagnostic explains, predictive anticipates, prescriptive acts. One product, four rungs — the ladder, end to end.
BACK TO →
The full index
All four · side by side