Product Case · People Analytics

Flight risk only showed up after the exit interview — once the decision to leave was already final, leaving no room for intervention.

Attrition ran at 16.1% — 237 of 1,470 employees — and HR only learned who was at risk from a quarterly report or a resignation letter, after the decision was already made and replacement cost was already in motion. I built a model that scores every employee's flight risk and matches each one to the right response, before they hand in notice — catching 6 in 10 leavers early enough to act.

Attrition intervention prototype Try the self-service version →
Who HR business partner Decides where to focus limited retention effort across the team.
What Know who's at risk, and what to do about it A risk score per employee, matched to a specific intervention — before they resign.
Why 6 in 10 caught, each with a matched response 61.7% of actual leavers flagged in time — and routed to the right intervention, not a blanket one.
Workforce attrition prototype — live walkthrough of risk scores and matched interventions, sped up 2x
Workforce attrition: The self-service prototype, in motion.

Two things that were broken

Found out after the fact

Attrition showed up in a quarterly report or an exit interview — after the decision to leave was already made and replacement cost was already in motion.

Accuracy was the wrong yardstick

A model that predicts "everyone stays" is 84% accurate and catches nobody. Optimizing for accuracy would have missed exactly the people worth catching.

What we changed

Attrition Risk and Intervention Prototype — summary metrics and risk-tier drill-down
The live prototype — real held-out employees, scored and sorted into Quietly Fine, False Alarm, Missed Entirely, and Caught in Time.
Attrition Risk and Intervention Prototype — summary metrics and risk-tier drill-down
The live prototype — real held-out employees, scored and sorted into Quietly Fine, False Alarm, Missed Entirely, and Caught in Time.
Attrition Risk and Intervention Prototype — summary metrics and risk-tier drill-down
The live prototype — real held-out employees, scored and sorted into Quietly Fine, False Alarm, Missed Entirely, and Caught in Time.

How interventions get prioritized

A risk score alone doesn't tell HR who to act on first — a junior individual contributor and a hard-to-replace senior engineer can carry the same risk score but very different consequences if they leave. Prioritization runs on a Risk × Impact matrix — the standard framework for allocating limited attention under constraint, adapted here to flight-risk score × role/replacement value, instead of treating every flagged employee the same.

↓ Flight risk Business impact of loss →
Low risk · Standard-impact role Monitor

No action. Logged for quarterly trend tracking so a slow drift doesn't go unnoticed.

Low risk · High-impact role Quiet check-in

A light, proactive touch even without a strong signal — the role is too costly to lose to justify waiting for one.

High risk · Standard-impact role Retention conversation

A real conversation within two weeks. The human still makes the call on what's offered.

High risk · High-impact role Escalate to manager + HRBP

Risk and value are both high at once — the costliest miss to allow, so it's routed to both immediately, not queued.

What it moved

6 in 10
Leavers flagged before they resigned
61.7% recall · a "stays" guess catches 0%
1 in 3
Flags that turn out to be real
34.5% precision · the rest are just a quick check-in
$290K–$1.1M
Replacement cost put back in reach
retaining 1 in 3 of the 29 caught in time
3 tiers, 3 responses
No one-size-fits-all outreach
quiet check-in → retention conversation → manager escalation

Dataset: IBM HR Analytics Employee Attrition (Kaggle) · 1,470 employees. Trained on an 80/20 stratified split, so the same 16.1% attrition rate held in both the training data and the 294 held-out test employees the model never saw.

Go deeper