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
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.

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.

The model flags the risk. A person decides whether to intervene — before the decision to leave becomes final.

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