# Account Health Scorer

> Score and rank an entire portfolio of enterprise accounts for churn risk and expansion opportunity from a single portfolio export. Use this skill whenever the user mentions portfolio review, renewal risk, churn triage, book-of-business health, account prioritization, or uploads a multi-account CSV and asks which accounts need attention, even if they do not say "score."

- Skill: `prashanthvara/account-health-scorer` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add prashanthvara/account-health-scorer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/prashanthvara/account-health-scorer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: Prashanthvara (https://skillmd.com/u/prashanthvara)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/prashanthvara/account-health-scorer

---


# Account Health Scorer

Portfolio-level triage for CSMs managing 100+ enterprise accounts. Converts a flat portfolio export into a ranked risk register and a weekly action list.

## Inputs

- `portfolio.csv`: account_id, vertical, contract_value, renewal_date, trailing_90d_spend, trailing_90d_spend_prior, open_tickets, last_qbr_date, active_users, licensed_users
- Optional overrides file for accounts with known context (executive change, M&A, budget freeze)

Synthetic sample in `references/sample_portfolio.csv`.

## Workflow

1. Run `scripts/score.py` to compute per-account signals: spend velocity delta, utilization ratio (active/licensed), support burden per dollar, days since last touch, days to renewal.
2. Apply the weighting model in `references/scoring_model.md`. Renewal proximity acts as a multiplier on risk, not an additive term. An at-risk account 60 days from renewal outranks a worse account 300 days out.
3. Segment output into four queues: Act This Week, Monitor, Stable, Expansion Candidates.
4. For each Act This Week account, generate a one-line reason code tied to the specific signal that triggered it.

## Output format

Ranked table per queue, then a `## This Week` section listing at most 8 accounts with reason codes and a suggested first action for each.

## Guardrails

- Cap the action list. A triage that outputs 40 priorities is not a triage.
- Reason codes must reference the computed signal, never a generic label like "low engagement."

