RICE Prioritisation Skill
Apply consistent, criteria-based RICE scoring to a list of features or initiatives to produce an objective prioritisation ranking.
Reads from / Writes to the Brain
If a professional-brain (brain/) exists, ground in it instead of re-asking for what you already know:
- Read first:
knowledge/strategy.md (so the ranking serves the direction), the items as entities/, and impact hypotheses/. Run python3 ../professional-brain/scripts/brain_query.py ./brain "<initiative theme>" and carry each fact's provenance tag through — an impact estimate is usually a [hunch], not [data].
- 📥 Propose to the Brain: after producing, propose recording the ranking decision to
decisions/ and the reach/impact estimates as hypotheses/ tagged by evidence strength. Show them, get a yes, then write with ../professional-brain/scripts/brain_write.py … --commit (append-only, dry-run by default).
Required Inputs
Ask the user for these if not provided:
- List of initiatives or features to score (names and brief descriptions)
- Reach estimates (users affected per quarter — from analytics if available)
- Impact estimates (use the standard scale below)
- Effort estimates (person-months — from engineering if available)
- Quarter or planning period
RICE Definitions (adapt to your context)
- Reach: Number of users affected per quarter (use actual DAU/MAU data where available)
- Impact: Effect on your primary metric — use scale: 3=massive, 2=high, 1=medium, 0.5=low, 0.25=minimal
- Confidence: How certain are we about R and I estimates? 100%=high, 80%=medium, 50%=low
- Effort: Person-months required across all functions
RICE Formula
RICE Score = (Reach × Impact × Confidence) / Effort
Programmatic Helper
This skill ships with a stdlib-only Python script that calculates and ranks RICE scores so the maths is consistent and the quick-win / moonshot flags are applied by rule, not by feel. Feed it the initiatives once R, I, C, and E are gathered.
# From a JSON file (confidence accepts 0.8 or 80)
python3 scripts/rice_calculator.py initiatives.json
# Or from a CSV with header: name,reach,impact,confidence,effort
python3 scripts/rice_calculator.py initiatives.csv --format csv
# Or piped in
echo '[{"name":"Onboarding","reach":5000,"impact":2,"confidence":0.8,"effort":3}]' \
| python3 scripts/rice_calculator.py -
It outputs a ranked table with computed RICE scores and auto-flags quick-win (strong score, low relative effort), moonshot (high impact, high effort), and low-confidence (≤50%) items. Use the computed ranking as the starting point, then apply the validation step below — never accept a surprising top rank without checking the estimates behind it.
Deeper Materials
references/estimate-calibration.md — how to anchor each of the four estimates (reach sources, the impact scale with reserve-it-for examples, evidence-based confidence, cross-functional effort) and the cross-checks to run on the finished ranking. Apply it when challenging the user's inputs.
templates/scoring-worksheet.md — a fill-in worksheet whose evidence columns force each score to name its source. Offer it when a team wants to score together rather than have the ranking generated.
Where this sits — scoring on the spine
Third in the product-decision spine: /assumption-mapper → /prd-template →
rice-prioritisation → /roadmap-narrative. It receives the success metric from
each initiative's PRD — RICE's Impact is the estimated move on that baselined number,
not a fresh guess — and hands /roadmap-narrative the ranked initiatives with their
scores to group into themes. The four RICE terms are defined once in
docs/craft/product-decisions.md; Confidence
there is the honesty valve, and this skill lives or dies on using it.
The loop
RICE fails when estimates are invented to produce a desired ranking. The loop's job is
to keep every score honest; Phase 2 is where that happens.
- Gather the four estimates per initiative. Reach (real count per period), Impact
(magnitude on the PRD's success metric), Confidence (0–1), Effort (person-months).
Pull Impact from the upstream PRD's metric where it exists.
Done when: every initiative has all four, and each carries a provenance tag on
its source.
- Interrogate confidence — the anti-gaming phase. For each estimate, confidence
must reflect evidence, not enthusiasm: a bold impact with no data gets a low
confidence, and the score self-corrects. Challenge weak inputs and name what data
would raise them (the disclosed estimate-calibration
reference is the how).
Done when: no [hunch] estimate wears a high confidence, and the person who owns
the estimate would defend each number out loud.
- Score, rank, and stress the top. Compute RICE, rank, flag quick wins (high
score, low effort) and moonshots (high impact, high effort), note dependencies.
Then the cross-check: if the top item surprises the team, an estimate is probably
inflated — RICE is a tool, not a verdict.
Done when: the ranking is computed and the top result has survived one honest
"does this feel right, and if not, which estimate is lying?"
- Hand off. Pass the ranked table (with scores and dependencies) to
/roadmap-narrative so it groups by theme rather than re-deriving priorities.
Done when: /roadmap-narrative could theme these without re-scoring.
Output Structure
RICE Prioritisation: [Backlog/Quarter]
| Initiative |
Reach |
Impact |
Confidence |
Effort |
RICE Score |
Notes |
| [name] |
[n] |
[score] |
[%] |
[months] |
[score] |
[flags] |
Recommended Sequence
[Top 5 initiatives with rationale]
Quick Wins (high score, low effort)
[Items to pick up alongside bigger bets]
Data Gaps to Address
[What information would most improve scoring accuracy]
Scoring Rubric (0–40)
Score any output of this skill before handing it over; 32+ is ship-quality.
| Dimension |
0 |
5 |
10 |
| Estimate credibility |
Round-number guesses at 100% confidence; effort estimated by PM alone |
Reach grounded in analytics but confidence uniform across items regardless of evidence |
Each estimate names its source; anything without data sits at 50% confidence; effort comes from engineering, and the doc says so |
| Impact discrimination |
Everything scored 2–3 — the scale produces no signal |
Some spread across the scale but anchors undefined, so scores aren't comparable |
Full scale used with a stated anchor for each level; "massive" reserved for genuinely rare items |
| Ranking interrogation |
Raw sorted output accepted as the verdict |
Quick wins and moonshots flagged, but surprising ranks and dependencies unexamined |
Surprising top ranks investigated with the inflated estimate found or defended; dependencies noted where they change sequencing |
| Actionable sequencing |
A scored table with no recommendation |
Table plus a top-5 list, but no rationale or data-gap follow-ups |
Recommended sequence with per-item rationale, quick wins slotted alongside bigger bets, and named data gaps that would sharpen the next pass |
Quality Checks
Anti-Patterns
1---2name: rice-prioritisation3description: Scores and ranks product initiatives using the RICE framework. Use when asked to prioritise features, rank a backlog using RICE, score initiatives for quarterly planning, or apply an objective framework to a list of competing ideas. Produces a ranked RICE table with scores, quick wins and moonshot flags, dependency notes, and a recommended sequencing order.4---5
6# RICE Prioritisation Skill
7
8Apply consistent, criteria-based RICE scoring to a list of features or initiatives to produce an objective prioritisation ranking.
9
10## Reads from / Writes to the Brain
11
12If a [`professional-brain`](../professional-brain/SKILL.md) (`brain/`) exists, ground in it instead of re-asking for what you already know:
13
14- **Read first:** `knowledge/strategy.md` (so the ranking serves the direction), the items as `entities/`, and impact `hypotheses/`. Run `python3 ../professional-brain/scripts/brain_query.py ./brain "<initiative theme>"` and carry each fact's provenance tag through — an impact estimate is usually a `[hunch]`, not `[data]`.
15- **📥 Propose to the Brain:** after producing, propose recording the ranking decision to `decisions/` and the reach/impact estimates as `hypotheses/` tagged by evidence strength. Show them, get a yes, then write with `../professional-brain/scripts/brain_write.py … --commit` (append-only, dry-run by default).
16
17## Required Inputs
18
19Ask the user for these if not provided:
20- **List of initiatives or features to score** (names and brief descriptions)
21- **Reach estimates** (users affected per quarter — from analytics if available)
22- **Impact estimates** (use the standard scale below)
23- **Effort estimates** (person-months — from engineering if available)
24- **Quarter or planning period**
25
26## RICE Definitions (adapt to your context)
27- **Reach:** Number of users affected per quarter (use actual DAU/MAU data where available)
28- **Impact:** Effect on your primary metric — use scale: 3=massive, 2=high, 1=medium, 0.5=low, 0.25=minimal
29- **Confidence:** How certain are we about R and I estimates? 100%=high, 80%=medium, 50%=low
30- **Effort:** Person-months required across all functions
31
32## RICE Formula
33RICE Score = (Reach × Impact × Confidence) / Effort
34
35## Programmatic Helper
36
37This skill ships with a stdlib-only Python script that calculates and ranks RICE scores so the maths is consistent and the quick-win / moonshot flags are applied by rule, not by feel. Feed it the initiatives once R, I, C, and E are gathered.
38
39```bash
40# From a JSON file (confidence accepts 0.8 or 80)
41python3 scripts/rice_calculator.py initiatives.json
42
43# Or from a CSV with header: name,reach,impact,confidence,effort
44python3 scripts/rice_calculator.py initiatives.csv --format csv
45
46# Or piped in
47echo '[{"name":"Onboarding","reach":5000,"impact":2,"confidence":0.8,"effort":3}]' \
48 | python3 scripts/rice_calculator.py -
49```
50
51It outputs a ranked table with computed RICE scores and auto-flags **quick-win** (strong score, low relative effort), **moonshot** (high impact, high effort), and **low-confidence** (≤50%) items. Use the computed ranking as the starting point, then apply the validation step below — never accept a surprising top rank without checking the estimates behind it.
52
53## Deeper Materials
54
55- **`references/estimate-calibration.md`** — how to anchor each of the four estimates (reach sources, the impact scale with reserve-it-for examples, evidence-based confidence, cross-functional effort) and the cross-checks to run on the finished ranking. Apply it when challenging the user's inputs.
56- **`templates/scoring-worksheet.md`** — a fill-in worksheet whose evidence columns force each score to name its source. Offer it when a team wants to score together rather than have the ranking generated.
57
58## Where this sits — scoring on the spine
59
60Third in the product-decision spine: **`/assumption-mapper` → `/prd-template` →
61`rice-prioritisation` → `/roadmap-narrative`**. It receives **the success metric** from
62each initiative's PRD — RICE's *Impact* is the estimated move on *that* baselined number,
63not a fresh guess — and hands `/roadmap-narrative` **the ranked initiatives with their
64scores** to group into themes. The four RICE terms are defined once in
65[`docs/craft/product-decisions.md`](../../docs/craft/product-decisions.md); *Confidence*
66there is the honesty valve, and this skill lives or dies on using it.
67
68## The loop
69
70RICE fails when estimates are invented to produce a desired ranking. The loop's job is
71to keep every score honest; Phase 2 is where that happens.
72
731. **Gather the four estimates per initiative.** Reach (real count per period), Impact
74 (magnitude on the PRD's success metric), Confidence (0–1), Effort (person-months).
75 Pull Impact from the upstream PRD's metric where it exists.
76 **Done when:** every initiative has all four, and each carries a provenance tag on
77 its source.
782. **Interrogate confidence — the anti-gaming phase.** For each estimate, confidence
79 must reflect *evidence*, not enthusiasm: a bold impact with no data gets a low
80 confidence, and the score self-corrects. Challenge weak inputs and name what data
81 would raise them (the disclosed [estimate-calibration](references/estimate-calibration.md)
82 reference is the how).
83 **Done when:** no [hunch] estimate wears a high confidence, and the person who owns
84 the estimate would defend each number out loud.
853. **Score, rank, and stress the top.** Compute RICE, rank, flag *quick wins* (high
86 score, low effort) and *moonshots* (high impact, high effort), note dependencies.
87 Then the cross-check: if the top item surprises the team, an estimate is probably
88 inflated — RICE is a tool, not a verdict.
89 **Done when:** the ranking is computed and the top result has survived one honest
90 "does this feel right, and if not, which estimate is lying?"
914. **Hand off.** Pass the ranked table (with scores and dependencies) to
92 `/roadmap-narrative` so it groups by theme rather than re-deriving priorities.
93 **Done when:** `/roadmap-narrative` could theme these without re-scoring.
94
95## Output Structure
96
97### RICE Prioritisation: [Backlog/Quarter]
98| Initiative | Reach | Impact | Confidence | Effort | RICE Score | Notes |
99|------------|-------|--------|------------|--------|------------|-------|
100| [name] | [n] | [score] | [%] | [months] | [score] | [flags] |
101
102#### Recommended Sequence
103[Top 5 initiatives with rationale]
104
105#### Quick Wins (high score, low effort)
106[Items to pick up alongside bigger bets]
107
108#### Data Gaps to Address
109[What information would most improve scoring accuracy]
110
111## Scoring Rubric (0–40)
112
113Score any output of this skill before handing it over; 32+ is ship-quality.
114
115| Dimension | 0 | 5 | 10 |
116|---|---|---|---|
117| Estimate credibility | Round-number guesses at 100% confidence; effort estimated by PM alone | Reach grounded in analytics but confidence uniform across items regardless of evidence | Each estimate names its source; anything without data sits at 50% confidence; effort comes from engineering, and the doc says so |
118| Impact discrimination | Everything scored 2–3 — the scale produces no signal | Some spread across the scale but anchors undefined, so scores aren't comparable | Full scale used with a stated anchor for each level; "massive" reserved for genuinely rare items |
119| Ranking interrogation | Raw sorted output accepted as the verdict | Quick wins and moonshots flagged, but surprising ranks and dependencies unexamined | Surprising top ranks investigated with the inflated estimate found or defended; dependencies noted where they change sequencing |
120| Actionable sequencing | A scored table with no recommendation | Table plus a top-5 list, but no rationale or data-gap follow-ups | Recommended sequence with per-item rationale, quick wins slotted alongside bigger bets, and named data gaps that would sharpen the next pass |
121
122## Quality Checks
123
124- [ ] Every initiative has all four RICE components estimated (even roughly)
125- [ ] Confidence is 50% for anything without data backing (not 100% as a default)
126- [ ] Quick wins and moonshots are explicitly called out
127- [ ] Dependencies that affect sequencing are noted
128- [ ] Any surprising ranking is investigated before accepting it
129
130## Anti-Patterns
131
132- [ ] Do not default to 100% confidence on estimates that lack supporting data — this inflates scores and misleads planning
133- [ ] Do not treat RICE scores as a final decision — a ranking that surprises the team must be investigated before it is accepted
134- [ ] Do not omit effort estimates from engineering — PM-only effort estimates are frequently optimistic and skew results
135- [ ] Do not forget to note dependencies that would change the sequencing even if RICE scores suggest otherwise
136- [ ] Do not score every initiative at the same impact level — if everything is "high impact," the framework produces no useful signal