Why health scores die#
The pattern is always the same. The score launches, the team checks it for two weeks, someone notices a client scored "at risk" for a reason that makes no sense, and from that day forward the score is decoration. A health score has exactly one job — make the at-risk list worth reading — and it only takes a few bad entries to lose that trust permanently.
The failure modes are predictable, which means they are designable-around.
Failure one: scoring data that isn't there#
A client with no projects is not "failing on delivery" — that axis simply does not exist for them. Scores that average a fixed set of contributors quietly punish clients for services they never bought, and the team spots it immediately: "why is our hosting-only client red on project delivery?"
The fix is renormalization: only contributors with real data count, and their weights rescale to fill the space. A client with data for three contributors is scored on those three — not on all of them with zeros for the rest.
Failure two: the bare number#
A score of 54 invites an argument. A score of 54 with "2 of 14 tickets breached SLA in the last 90 days" and "no logged conversation in 11 weeks" invites a phone call. Every contributor should carry a sentence a human can verify — the moment the math is hidden, the score becomes an opinion, and opinions get argued with instead of acted on.
Failure three: scoring the expected state#
A dormant client — finished project, no agreement, will call when they need you — has no tickets, no meetings, and no invoices. Score them and they are maximally "at risk" forever. But quiet is their expected state; flooding the worklist with red that means nothing teaches people to skim past red that means everything.
The rule: clients whose status says dormant or inactive leave the scoring pool entirely. Their check-in cadence is the only commitment worth tracking. An active client going quiet is a warning; a dormant client being quiet is the plan working.
Failure four: alerting on wiggles#
A score that moves from 71 to 69 did not tell you anything. If every twitch pings the account owner, the pings become noise within a week. Alert on band transitions only — Healthy to Watch, Watch to At risk — and name the weakest contributor in the notification so the first read already says what changed.
What a trustworthy score looks like#
Put together: a handful of weighted contributors (cadence compliance, engagement recency, SLA responsiveness, delivery punctuality, commercial standing, satisfaction, plus your team's own read), each present only when its data is, each explained in a sentence, renormalized so absence is never failure, snapshotted nightly with band-change alerts only, and with dormant clients excluded on purpose.
That is the design AspirePro ships. The score lives on the company record, the companies list, and the Lifecycle worklist — and it is internal-only, because a health score is a diagnostic instrument, not a client deliverable.
Takeaways#
- A health score has one job: keep the at-risk list worth reading.
- Renormalize — a client with no projects isn't failing on delivery; that axis is absent.
- Every contributor needs a human-verifiable sentence, or the score becomes an argument.
- Exclude dormant clients: quiet is their expected state, and fake red trains people to ignore real red.
- Alert on band changes, never on score wiggles — and name the weakest contributor.