Every Sentry issue gets one RICE score, so the worst stuff floats to the top.
=
{% set num = [
('megaphone', 'Reach', 'rgba(108,95,199,0.18)', '#A396DA', 'rgba(108,95,199,0.45)'),
('zap', 'Impact', 'rgba(255,119,56,0.16)', '#FF9E6B', 'rgba(255,119,56,0.45)'),
('target', 'Confidence', 'rgba(77,199,113,0.16)', '#6BD894', 'rgba(77,199,113,0.45)'),
] %}
{% for icon, label, bg, fg, bd in num %}
{{ label }}
{% if not loop.last %}×{% endif %}
{% endfor %}
Effort
Big reach × high impact × high confidence, divided by how hard it is to fix.
Reach & the final score are computed deterministically; impact, confidence & effort come from the AI reading the actual code.
{% set dims = [
('megaphone', 'Reach', '#A396DA', 'rgba(108,95,199,0.4)', 'How many users hit it
recently. Recent volume × a recency decay — an issue not seen in weeks fades toward 0. Reach is
relative to the busiest issue in the same environment, so every environment is judged on its own scale.
Background jobs report 0 users, so their
event count stands in as the volume.'),
('zap', 'Impact', '#FF9E6B', 'rgba(255,119,56,0.4)', 'What
kind of thing is broken — fixed by category, set in your config from highest to lowest.'),
('target', 'Confidence', '#6BD894', 'rgba(77,199,113,0.4)', 'How sure the AI is after tracing the code. Higher when it pinpoints the exact failing line, lower when it can only find the general area.'),
('wrench', 'Effort', '#8FBCFF', 'rgba(92,157,255,0.4)', 'Fix complexity from the code:
2 = one-line guard,
5 = a module,
8+ = migration / multi-service. Min 0.5.'),
] %}
{% for icon, label, fg, bd, desc in dims %}
{{ label }}
{{ desc | safe }}
{% endfor %}
Impact by category
The AI maps each issue to the category it actually harms. Higher = worse when it breaks. These come from your config.yaml.
{% for cat, score in categories %}
{% set cm = cat_meta.get(cat, ['shapes', '#9AA0AA']) %}
{% endfor %}
Override anything, anytime
Disagree with a score? Click a row and edit any dimension. Your value drives the
effective RICE, but the AI's original is kept — every change lands in the
Disagreements
log, which is the training signal for sharpening future scoring.