Waiting for someone to complain about their rotation is a policy of last resort. We built a load index that flags trouble before anyone has to speak up.
By the time an engineer says "I need a lighter month," they've usually been quietly struggling for weeks. Speaking up requires admitting difficulty out loud, and plenty of good engineers would rather grind through a bad rotation than be the one who asked for help.
Why we stopped waiting to be told
We built a composite on-call load index, computed automatically per engineer per rotating window, combining several signals that individually look fine but together tell a different story.
on_call_load_index (computed weekly, per engineer, trailing 8 weeks)
components:
- pages_after_22:00_or_before_06:00_local: weight 3
- consecutive_shifts_without_a_full_week_off: weight 2
- overlap_with_release_or_post_incident_week: weight 2
- self_reported_pre_shift_dread (if submitted): weight 2
- pto_taken_last_90_days: weight -1 # recent rest lowers the score
threshold: score > 14 triggers a private, no-fault check-in from manager
framed as "how's the rotation treating you," never as a warning
"Nobody wants to be the first to say the rotation is too much. A quiet check-in that starts with a question, not a concern, gives people permission to answer honestly."
What the index catches that complaints don't
In its first two quarters, the index flagged eleven check-ins. Three of those engineers, when asked directly, said they were fine and genuinely were — the index isn't perfect, and a false positive costs nothing but a five-minute conversation. The other eight described exactly the kind of quiet strain that would never have surfaced as a formal complaint, including two who admitted they'd been planning to grind through it silently for another month.
Keeping it from becoming surveillance
The score itself is never shown to anyone but the engineer and their manager, never used in performance reviews, and the self-reported dread component is voluntary — skipping it doesn't penalize the score. We were explicit about this in the rollout announcement because a load index that feels like monitoring will just get gamed or resented, and either outcome defeats the purpose.
- Don't wait for a complaint — build a composite load index from signals you already collect, and check in before someone has to ask.
- Frame automated check-ins as curiosity, not concern; the framing determines whether people answer honestly.
- Keep the score private to the engineer and their manager only, and never let it touch performance review, or trust in the system collapses.