it’s 3 separate scores (cash, profit, revenue). then “overall” = the lowest one.
cash score (uses cushion + runway days)
cushion = (bank now + opex share from money-in) − must pay soon
runway days = cushion ÷ (monthly opex / 30)
score rules:
if cushion < 0 → 20 (red)
else if runway < 15 days → 60 (orange)
else if runway < 30 days → 85 (orange)
else → 100 (green)
profit score (uses real revenue + profit% gap + opex% over)
real revenue = monthly revenue − direct costs
actual profit% = (real revenue − owner pay − tax − fixed opex) ÷ real revenue
actual opex% = fixed opex ÷ real revenue
start at 100 points, then subtract:
if actual profit% is below target profit%:
subtract 2 points for every 1 percentage-point you’re short
(math: (target − actual) × 200)
if actual opex% is above target opex%:
subtract 1 point for every 1 percentage-point you’re over
(math: (actual − target) × 100)
cap deductions so score stays between 0 and 100
revenue score (your glide badge: actual vs target)
ratio = revenue actual ÷ revenue target
score rules:
ratio ≥ 1.00 → 100
0.90–0.99 → 85
0.70–0.89 → 60
< 0.70 → 20
overall label
find the lowest of the 3 scores
whichever pillar is lowest becomes the “focus area” text (and only that score gets colored in the Scores list)