Skip to lesson
Exit
Bug Triage & Prioritization at Scale1 / 2

1 min lesson

Combining the axes into a score

Use the example in "Combining the axes into a score" to explain the main idea in plain words.

Step 1 of 2

Combining the axes into a scoreso loud-but-rare can't beat quiet-but-catastrophic

Keep severity and impact as separate axes, then collapse them into a priority band. Because the two multiply, volume alone never wins: a flood of S3 cosmetic complaints stays below a single S0 data-loss report with one reporter.

A priority score you can actually defend in a brief
priority = severity_weight × impact_score

severity_weight:  S0=100  S1=30  S2=8  S3=2
impact_score   =  (pct_DAU_affected × 10)
               +  (arr_affected_usd / 10_000)
               +  frequency_factor        // 1 rare … 5 every-keystroke
               +  (is_regression ? 15 : 0)

# assuming 1M DAU
# S0 with one reporter:  100 × (0.001 + 0 + 1 + 0)  ≈ 100
# S3 with 400 reporters:   2 × (0.4   + 0 + 3 + 0)  ≈   7
# the catastrophe wins and the math shows why
The score starts the conversation

When you say P1, you can name the severity tier, the percent of DAU, the ARR exposed and whether it's a regression. The formula forces the inputs into the open, and the engineer can argue with an input, which beats arguing with your vibe.