What is a project health score, and how do you measure it in Metabase?
A project health score is a transparent risk score that combines signals like overdue work, blocked work, stale work, and missing metadata. It should point leaders toward projects that need attention, not pretend to be a perfect forecast.
Definition
Project health score is a weighted combination of risk signals. Many teams invert it so 100 is healthy; the SQL below returns a 0-100 risk score where higher means more attention needed.
Data needed
- Project or board
- Open/completed state
- Due date, blocked status, and last-updated date
- Owner and priority fields for drilldowns
SQL pattern
WITH project_rollup AS (
SELECT
project_name,
COUNT(*) FILTER (WHERE completed_at IS NULL) AS open_items,
COUNT(*) FILTER (WHERE completed_at IS NULL AND due_date < CURRENT_DATE) AS overdue_items,
COUNT(*) FILTER (WHERE completed_at IS NULL AND status_group = 'blocked') AS blocked_items,
COUNT(*) FILTER (WHERE completed_at IS NULL AND updated_at < CURRENT_DATE - INTERVAL '14 days') AS stale_items
FROM work_items
WHERE archived_at IS NULL
AND canceled_at IS NULL
GROUP BY 1
)
SELECT
project_name,
open_items,
overdue_items,
blocked_items,
stale_items,
LEAST(
100,
ROUND(
40.0 * overdue_items / NULLIF(open_items, 0)
+ 35.0 * blocked_items / NULLIF(open_items, 0)
+ 25.0 * stale_items / NULLIF(open_items, 0),
0
)
) AS project_health_risk_score
FROM project_rollup
ORDER BY project_health_risk_score DESC NULLS LAST;