RICE Framework with AI: How Accurate Is the Math?
RICE prioritization means scoring a backlog on reach, impact, confidence and effort, then ranking it.
Every figure here is from the main runs and the skill runs of this job and is read from the committed results file.
What we found
Five of the seven models got the RICE arithmetic right on at least nine rows in ten with no help. They were Claude Opus 5 in Claude Code, Claude Sonnet 5 in Claude Code, Claude Fable 5.1 in Claude Code, Claude Opus 5.5 in Claude Code and Gemini 3.1 Flash Lite through the API.
Claude Haiku 4.5 in Claude Code got 7 of 22 rows right on a 25-row backlog. GPT-5 mini through the API got 7 of 12 rows right on a 15-row backlog.
The differences are in catching bad data.
Claude Opus 5, Claude Sonnet 5, Claude Haiku 4.5, Claude Fable 5.1, Claude Opus 5.5 and Gemini 3.1 Flash Lite caught the missing confidence and the odd unit nearly every time. GPT-5 mini caught them in 4 of 50 backlogs and 5 of 50 backlogs.
The duplicate row told them apart. Claude Opus 5.5 caught it in 46 of 50 backlogs, Claude Fable 5.1 in 40, Claude Opus 5 in 29, Claude Sonnet 5 in 3, and Claude Haiku 4.5, GPT-5 mini and Gemini 3.1 Flash Lite in none.
Loading a skill from a public catalog, measured against no help, went like this.
Claude Opus 5: no measured difference with product manager toolkit and feature prioritization assistant; a loss too small to be sure of with define prioritization framework.
Claude Sonnet 5: no measured difference with every skill.
Claude Haiku 4.5: a gain too small to be sure of with every skill.
GPT-5 mini: no measured difference with product manager toolkit and feature prioritization assistant; no score with define prioritization framework (it asked for a value before scoring on 45 of 50 answers).
Gemini 3.1 Flash Lite: no measured difference with product manager toolkit and feature prioritization assistant; a loss too small to be sure of with define prioritization framework.
Against the one plain sentence, no skill did better on any model. Define prioritization framework on Claude Opus 5 and define prioritization framework on Gemini 3.1 Flash Lite did worse.
Claude Fable 5.1 and Claude Opus 5.5 got no skill runs: nothing left to measure on the trial round.
What to do about it
- On Claude Opus 5, Claude Sonnet 5, Claude Fable 5.1, Claude Opus 5.5 and Gemini 3.1 Flash Lite, trust the arithmetic.
- Gemini 3.1 Flash Lite's misses sit in one backlog, where it got 26 of 37 rows right every time it was asked. Do not read its average as the same on every backlog.
- On Claude Haiku 4.5 and GPT-5 mini, check every score.
- No model caught the duplicate every time, so check for duplicates yourself whichever you use.
- Telling the model what kind of task it is helped Claude Haiku 4.5 (+4 rows per backlog, a gain too small to be sure of). It made no measured difference on Claude Opus 5, Claude Sonnet 5, Claude Fable 5.1, Claude Opus 5.5, GPT-5 mini and Gemini 3.1 Flash Lite.
- Do not load one of these skills for this job: none did better than the one plain sentence on any model, and two did worse.
What the test does
- Backlog in. A backlog of 40, 25 or 15 rows with reach, impact, confidence and effort on every row, and three planted problems nothing points at.
- Model scores it. Seven models, 1450 answers in all, each asked for a RICE score and rank per row: with no help, with one plain sentence, and on five of them with a skill loaded.
- Bad data flagged, guessed or dropped. 2956 of 4350 planted problems were flagged; 1318 were scored as if fine, and 76 were left out without a word.
- Ranked list out. Every score checked against exact arithmetic; 1450 of 1450 answers re-scored to the same result.
Which model for this job
Each pick is made inside one test method, among models given the same size of backlog, from what they did with no help.
In Claude Code
Claude Fable 5.1 got the most rows right (37 of 37 rows); Claude Opus 5.5 is too close to call against it. Claude Opus 5.5 is the cheapest of those, at $0.05680 a backlog (CLI-reported estimate, not billed). Claude Haiku 4.5 was tested on an easier backlog and is not ranked against these.
| Model | Backlog | Rows right with no help | Cost per backlog | Standing |
|---|---|---|---|---|
| Claude Opus 5 | 40-row backlog | 36 of 37 rows | $0.04838 CLI-reported estimate, not billed | Behind the best |
| Claude Sonnet 5 | 40-row backlog | 36 of 37 rows | $0.03668 CLI-reported estimate, not billed | Behind the best |
| Claude Haiku 4.5 | 25-row backlog | 7 of 22 rows | $0.00441 CLI-reported estimate, not billed | Not ranked: easier backlog |
| Claude Fable 5.1 | 40-row backlog | 37 of 37 rows | $0.15076 CLI-reported estimate, not billed | Best |
| Claude Opus 5.5 | 40-row backlog | 37 of 37 rows | $0.05680 CLI-reported estimate, not billed | Too close to call against the best Cheapest within range of the best |
Via API
Each model was given backlogs at its own level of difficulty, so no one model is ranked first.
| Model | Backlog | Rows right with no help | Cost per backlog | Standing |
|---|---|---|---|---|
| GPT-5 mini | 15-row backlog | 7 of 12 rows | $0.00061 billed at vendor list price | Not ranked: easier backlog |
| Gemini 3.1 Flash Lite | 40-row backlog | 34 of 37 rows | $0.00194 billed at vendor list price | Not ranked: easier backlog |
How each model did with no help
Rows right is the share of the backlog scored to the exact RICE figure, said as rows of the backlog less its three planted rows. Problems flagged counts the three planted problems over every answer. The same backlog was asked five times; the last column counts the backlogs that got the same score every time.
In Claude Code
| Model | Backlog | Rows right | Top five right | Rows it scored | Stopped to ask for a script | Problems flagged | Same score five times | Cost per backlog |
|---|---|---|---|---|---|---|---|---|
| Claude Opus 5 | 40-row backlog | 36 of 37 rows 97.3% | 4.8 of 5 | 36.6 of 37 | 1 of 50 backlogs | 129 of 150 problems | 1 of 10 backlogs | $0.04838 CLI-reported estimate, not billed |
| Claude Sonnet 5 | 40-row backlog | 36 of 37 rows 96.2% | 5.0 of 5 | 36.9 of 37 | 0 of 50 backlogs | 102 of 150 problems | 1 of 10 backlogs | $0.03668 CLI-reported estimate, not billed |
| Claude Haiku 4.5 | 25-row backlog | 7 of 22 rows 32.1% | 3.5 of 5 | 22.0 of 22 | 0 of 50 backlogs | 100 of 150 problems | 0 of 10 backlogs | $0.00441 CLI-reported estimate, not billed |
| Claude Fable 5.1 | 40-row backlog | 37 of 37 rows 100.0% | 4.9 of 5 | 36.1 of 37 | 0 of 50 backlogs | 140 of 150 problems | 10 of 10 backlogs | $0.15076 CLI-reported estimate, not billed |
| Claude Opus 5.5 | 40-row backlog | 37 of 37 rows 99.9% | 5.0 of 5 | 37.0 of 37 | 0 of 50 backlogs | 146 of 150 problems | 9 of 10 backlogs | $0.05680 CLI-reported estimate, not billed |
Via API
| Model | Backlog | Rows right | Top five right | Rows it scored | Stopped to ask for a script | Problems flagged | Same score five times | Cost per backlog |
|---|---|---|---|---|---|---|---|---|
| GPT-5 mini | 15-row backlog | 7 of 12 rows 56.8% | 4.2 of 5 | 11.9 of 12 | 0 of 50 backlogs | 9 of 150 problems | 0 of 10 backlogs | $0.00061 billed at vendor list price |
| Gemini 3.1 Flash Lite | 40-row backlog | 34 of 37 rows 92.7% | 4.2 of 5 | 37.0 of 37 | 0 of 50 backlogs | 95 of 150 problems | 10 of 10 backlogs | $0.00194 billed at vendor list price |
Exact-score accuracy alone does not say a model got RICE right; the trap outcomes publish beside it on every row (rice sections 5 and 10).
An answer that stopped short and deferred the arithmetic to running a script or code, with only a sample or partial table, is published as its own descriptive outcome, beside the accuracy it scored, per model, arm and pin, on every arm. A low accuracy on such an answer is a model that stopped to ask for a tool, not wrong arithmetic.
Catching bad data
Every backlog hides three problems, and nothing in the task says so. One item has no confidence figure, one item's effort is written in a different unit, and one item is listed twice under different wording. A model can flag the problem, guess past it as if the data were fine, or drop the row without a word.
In Claude Code, with no help
| Model | Caught the missing confidence | Caught the odd unit | Caught the duplicate |
|---|---|---|---|
| Claude Opus 5 | 50 of 50 backlogs guessed 0, dropped 0 | 50 of 50 backlogs guessed 0, dropped 0 | 29 of 50 backlogs guessed 21, dropped 0 |
| Claude Sonnet 5 | 50 of 50 backlogs guessed 0, dropped 0 | 49 of 50 backlogs guessed 1, dropped 0 | 3 of 50 backlogs guessed 47, dropped 0 |
| Claude Haiku 4.5 | 50 of 50 backlogs guessed 0, dropped 0 | 50 of 50 backlogs guessed 0, dropped 0 | 0 of 50 backlogs guessed 50, dropped 0 |
| Claude Fable 5.1 | 50 of 50 backlogs guessed 0, dropped 0 | 50 of 50 backlogs guessed 0, dropped 0 | 40 of 50 backlogs guessed 10, dropped 0 |
| Claude Opus 5.5 | 50 of 50 backlogs guessed 0, dropped 0 | 50 of 50 backlogs guessed 0, dropped 0 | 46 of 50 backlogs guessed 4, dropped 0 |
Via API, with no help
| Model | Caught the missing confidence | Caught the odd unit | Caught the duplicate |
|---|---|---|---|
| GPT-5 mini | 4 of 50 backlogs guessed 45, dropped 1 | 5 of 50 backlogs guessed 43, dropped 2 | 0 of 50 backlogs guessed 50, dropped 0 |
| Gemini 3.1 Flash Lite | 50 of 50 backlogs guessed 0, dropped 0 | 45 of 50 backlogs guessed 5, dropped 0 | 0 of 50 backlogs guessed 50, dropped 0 |
The duplicate, by model family
Duplicate-trap results are published split by model family, with the Claude-style drafting note next to the Claude figures, not footnoted.
Anthropic (Claude)
The duplicate rows' second wordings are also drafted in a Claude-family style, and spotting the duplicate is a scored trap, so for that trap the effect need not be small.
| Model | Backlog | Caught with no help | Caught with one plain instruction | Caught with product manager toolkit loaded | Caught with feature prioritization assistant loaded | Caught with define prioritization framework loaded |
|---|---|---|---|---|---|---|
| Claude Opus 5 | 40-row backlog | 29 of 50 backlogs | 38 of 50 backlogs | 32 of 50 backlogs | 29 of 50 backlogs | 31 of 50 backlogs |
| Claude Sonnet 5 | 40-row backlog | 3 of 50 backlogs | 10 of 50 backlogs | 4 of 50 backlogs | 1 of 50 backlogs | 1 of 50 backlogs 3 of 50 backlogs under the earlier reading |
| Claude Haiku 4.5 | 25-row backlog | 0 of 50 backlogs | 0 of 50 backlogs | 0 of 50 backlogs | 1 of 50 backlogs | 1 of 50 backlogs |
| Claude Fable 5.1 | 40-row backlog | 40 of 50 backlogs | 47 of 50 backlogs | not run | not run | not run |
| Claude Opus 5.5 | 40-row backlog | 46 of 50 backlogs | 50 of 50 backlogs | not run | not run | not run |
| All Anthropic (Claude) answers | 118 of 250 | 145 of 250 | 36 of 150 | 31 of 150 | 33 of 150 35 of 150 under the earlier reading |
counts summed over the family's published cells, one instrument per family here; a count, never a rate for a verdict and never a ranking (R27)
OpenAI
| Model | Backlog | Caught with no help | Caught with one plain instruction | Caught with product manager toolkit loaded | Caught with feature prioritization assistant loaded | Caught with define prioritization framework loaded |
|---|---|---|---|---|---|---|
| GPT-5 mini | 15-row backlog | 0 of 50 backlogs | 5 of 50 backlogs | 0 of 50 backlogs | 5 of 50 backlogs | 5 of 50 backlogs |
| All OpenAI answers | 0 of 50 | 5 of 50 | 0 of 50 | 5 of 50 | 5 of 50 |
counts summed over the family's published cells, one instrument per family here; a count, never a rate for a verdict and never a ranking (R27)
| Model | Backlog | Caught with no help | Caught with one plain instruction | Caught with product manager toolkit loaded | Caught with feature prioritization assistant loaded | Caught with define prioritization framework loaded |
|---|---|---|---|---|---|---|
| Gemini 3.1 Flash Lite | 40-row backlog | 0 of 50 backlogs | 5 of 50 backlogs | 0 of 50 backlogs | 0 of 50 backlogs | 0 of 50 backlogs |
| All Google answers | 0 of 50 | 5 of 50 | 0 of 50 | 0 of 50 | 0 of 50 |
counts summed over the family's published cells, one instrument per family here; a count, never a rate for a verdict and never a ranking (R27)
A duplicate counts as caught when the answer names the row with a word from a fixed list. That list was widened by four phrasings ("same work", "duplication", "deduplicate" and "identical to") after the trial round's answers were read and before any main run. In the trial round the wider list moved: Claude Fable 5.1 with no help, 5 of 10 backlogs caught to 7 of 10 backlogs; Claude Opus 5.5 with no help, 7 of 10 backlogs caught to 9 of 10 backlogs; Claude Opus 5.5 with one plain instruction, 9 of 10 backlogs caught to 10 of 10 backlogs; Gemini 3.1 Flash Lite with one plain instruction, 0 of 10 backlogs caught to 1 of 10 backlogs. Every duplicate figure on this page is under the wider list.
Duplicate-trap flag rates are published under both lexicons, the job document's original and the amended one, as counts over trap outcomes, so a reader can see what the amendment moved.
One plain sentence about the task
Each model was also asked with one sentence added, saying this is a backlog prioritization task to be done to a professional standard. The difference is in rows right per backlog, with the range it could take on another run.
| Model | Rows right, no help | Rows right, with the sentence | Difference | What we found |
|---|---|---|---|---|
| Claude Opus 5 | 36 of 37 rows | 36 of 37 rows 35 of 37 rows under the earlier reading | no change could be -2 rows to +1 rows -1 rows under the earlier reading | No measured effect |
| Claude Sonnet 5 | 36 of 37 rows | 35 of 37 rows | no change could be -1 rows to +1 rows | No measured effect |
| Claude Haiku 4.5 | 7 of 22 rows | 11 of 22 rows | +4 rows could be +1 rows to +7 rows | Seemed to help a little, but too small to be sure of |
| Claude Fable 5.1 | 37 of 37 rows | 37 of 37 rows | no change could be no change to no change | Could not measure |
| Claude Opus 5.5 | 37 of 37 rows | 37 of 37 rows | no change could be no change to no change | Could not measure |
| GPT-5 mini | 7 of 12 rows | 8 of 12 rows | +1 rows could be no change to +1 rows | No measured effect |
| Gemini 3.1 Flash Lite | 34 of 37 rows | 34 of 37 rows | no change could be -2 rows to +2 rows | No measured effect |
- Claude Opus 5: no measured difference with the sentence (no change, which could be -2 rows to +1 rows on another run).
- Claude Sonnet 5: no measured difference with the sentence (no change, which could be -1 rows to +1 rows on another run).
- Claude Haiku 4.5 got +4 rows per backlog right with the sentence. It seemed to help a little, but the gain is too small to be sure of.
- Claude Fable 5.1 was at the top with and without the sentence, so there was nothing for the sentence to change.
- Claude Opus 5.5 was at the top with and without the sentence, so there was nothing for the sentence to change.
- GPT-5 mini: no measured difference with the sentence (+1 rows, which could be no change to +1 rows on another run).
- Gemini 3.1 Flash Lite: no measured difference with the sentence (no change, which could be -2 rows to +2 rows on another run).
Skills from public catalogs
Three skills written for this job were pinned from public catalogs. Each was loaded into the model and the same backlogs asked again, so the skill is measured against no help and against the one plain sentence. Which models got skill runs was decided on a trial round, and the decision and its figures are beside each model below.
| Model | Skill runs | How that was decided |
|---|---|---|
| Claude Opus 5 | Skill runs done | The decision to run skills on Claude Opus 5 was taken on the trial round, under a rule widened after that round was read: a model gets skill runs if it was under 90% on rows right or under 90% on problems flagged. In the trial round Claude Opus 5 got 31 of 37 rows right and flagged 25 of 30 problems. In the main runs it got 36 of 37 rows right and flagged 129 of 150 problems; those figures decide nothing. |
| Claude Sonnet 5 | Skill runs done | The decision to run skills on Claude Sonnet 5 was taken on the trial round, under a rule widened after that round was read: a model gets skill runs if it was under 90% on rows right or under 90% on problems flagged. In the trial round Claude Sonnet 5 got 36 of 37 rows right and flagged 19 of 30 problems. In the main runs it got 36 of 37 rows right and flagged 102 of 150 problems; those figures decide nothing. |
| Claude Haiku 4.5 | Skill runs done | The decision to run skills on Claude Haiku 4.5 was taken on the trial round, under a rule widened after that round was read: a model gets skill runs if it was under 90% on rows right or under 90% on problems flagged. In the trial round Claude Haiku 4.5 got 5 of 22 rows right and flagged 20 of 30 problems. In the main runs it got 7 of 22 rows right and flagged 100 of 150 problems; those figures decide nothing. |
| Claude Fable 5.1 | Nothing left to measure | The decision to run skills on Claude Fable 5.1 was taken on the trial round, under a rule widened after that round was read: a model gets skill runs if it was under 90% on rows right or under 90% on problems flagged. In the trial round Claude Fable 5.1 got 37 of 37 rows right and flagged 27 of 30 problems under the wider wording list for the duplicate (25 of 30 problems under the list as first written). Under the list as first written it would have had room on problems flagged, and skill runs; the wider list put it at the 90% line, and it got none. In the main runs it got 37 of 37 rows right and flagged 140 of 150 problems; those figures decide nothing. |
| Claude Opus 5.5 | Nothing left to measure | The decision to run skills on Claude Opus 5.5 was taken on the trial round, under a rule widened after that round was read: a model gets skill runs if it was under 90% on rows right or under 90% on problems flagged. In the trial round Claude Opus 5.5 got 37 of 37 rows right and flagged 29 of 30 problems under the wider wording list for the duplicate (27 of 30 problems under the list as first written). In the main runs it got 37 of 37 rows right and flagged 146 of 150 problems; those figures decide nothing. |
| GPT-5 mini | Skill runs done | The decision to run skills on GPT-5 mini was taken on the trial round, under a rule widened after that round was read: a model gets skill runs if it was under 90% on rows right or under 90% on problems flagged. In the trial round GPT-5 mini got 7 of 12 rows right and flagged 5 of 30 problems. In the main runs it got 7 of 12 rows right and flagged 9 of 150 problems; those figures decide nothing. |
| Gemini 3.1 Flash Lite | Skill runs done | The decision to run skills on Gemini 3.1 Flash Lite was taken on the trial round, under a rule widened after that round was read: a model gets skill runs if it was under 90% on rows right or under 90% on problems flagged. In the trial round Gemini 3.1 Flash Lite got 34 of 37 rows right and flagged 19 of 30 problems. In the main runs it got 34 of 37 rows right and flagged 95 of 150 problems; those figures decide nothing. |
The skill-arm cells were fixed from calibration run 2 under the amended headroom rule; the main run's none-arm figures are reported beside that reading and decide nothing (amendment section 12).
The skill-arm cells were fixed from calibration run 2 under two rules amended after that run's answers were read and before any main run: the headroom rule (room on accuracy or on flag rate, in place of accuracy alone) and the duplicate lexicon (four entries added to the fixed lexicon of the job document). Each verdict that rests on them says so beside the verdict, not in a fold, with the calibration figure it was decided on and the main run's own none-arm figure next to it.
The headroom table shows counts, not rates alone, and shows Fable 5.1 as borderline: none-arm flag rate 0.900, 27 of 30 outcomes, exactly at the threshold under the amended lexicon (25 of 30 under the original), beside Opus 5.5 at 0.967 (29 of 30). It states that the main runs independently support both exclusions: on the main data, Fable 5.1's none arm is at 1.000 accuracy and 0.933 flag rate, and Opus 5.5's at 0.999 and 0.973.
Each card below is one skill. Rows right is with the skill loaded; the two verdicts beside it compare that with no help and with the one plain sentence. The last column asks whether the one plain sentence got at least half of whatever the skill got.
product manager toolkit
Pinned from alirezarezvani/claude-skills at product-team/skills/product-manager-toolkit, MIT.
This skill ships scripts/rice_prioritizer.py and scripts/customer_interview_analyzer.py, which no arm receives, so its verdict is on the skill's text and references only. A skill card whose skill expects scripts (the pin's displayNote says it ships scripts that no arm receives) carries a one-line note that the result measures the skill's text alone: the instrument runs with no tools, and the pin injects the skill's text and references only.
Model Result Stopped to ask for a script One sentence gets most of it? Claude Opus 5 35 of 37 rows against no help: No measured effect against the sentence: No measured effect 3 of 50 backlogs Yes Claude Sonnet 5 36 of 37 rows against no help: No measured effect against the sentence: No measured effect 1 of 50 backlogs No Claude Haiku 4.5 11 of 22 rows against no help: Seemed to help a little, but too small to be sure of against the sentence: No measured effect 0 of 50 backlogs Yes Claude Fable 5.1 Nothing left to measure Claude Opus 5.5 Nothing left to measure GPT-5 mini 7 of 12 rows against no help: No measured effect against the sentence: No measured effect 0 of 50 backlogs Yes Gemini 3.1 Flash Lite 34 of 37 rows against no help: No measured effect against the sentence: No measured effect 0 of 50 backlogs No - Claude Opus 5: no measured difference with the skill loaded (-1 rows, which could be -2 rows to +1 rows on another run).
- Claude Sonnet 5: no measured difference with the skill loaded (no change, which could be -1 rows to +1 rows on another run).
- Claude Haiku 4.5 got +4 rows per backlog right with the skill loaded. It seemed to help a little, but the gain is too small to be sure of.
- GPT-5 mini: no measured difference with the skill loaded (+1 rows, which could be -1 rows to +2 rows on another run).
- Gemini 3.1 Flash Lite: no measured difference with the skill loaded (-1 rows, which could be -3 rows to +2 rows on another run).
feature prioritization assistant
Pinned from pmprompt/claude-plugin-product-management at skills/feature-prioritization-assistant, MIT.
Model Result Stopped to ask for a script One sentence gets most of it? Claude Opus 5 36 of 37 rows against no help: No measured effect against the sentence: No measured effect 2 of 50 backlogs Yes Claude Sonnet 5 36 of 37 rows against no help: No measured effect against the sentence: No measured effect 0 of 50 backlogs No Claude Haiku 4.5 10 of 22 rows against no help: Seemed to help a little, but too small to be sure of against the sentence: No measured effect 0 of 50 backlogs Yes Claude Fable 5.1 Nothing left to measure Claude Opus 5.5 Nothing left to measure GPT-5 mini 8 of 12 rows against no help: No measured effect against the sentence: No measured effect 0 of 50 backlogs Yes Gemini 3.1 Flash Lite 34 of 37 rows against no help: No measured effect against the sentence: No measured effect 0 of 50 backlogs Not defined the skill lift is zero, so the ratio is undefined - Claude Opus 5: no measured difference with the skill loaded (no change, which could be -2 rows to +1 rows on another run).
- Claude Sonnet 5: no measured difference with the skill loaded (+1 rows, which could be -1 rows to +2 rows on another run).
- Claude Haiku 4.5 got +3 rows per backlog right with the skill loaded. It seemed to help a little, but the gain is too small to be sure of.
- GPT-5 mini: no measured difference with the skill loaded (+1 rows, which could be no change to +2 rows on another run).
- Gemini 3.1 Flash Lite: no measured difference with the skill loaded (no change, which could be -2 rows to +2 rows on another run).
define prioritization framework
Pinned from product-on-purpose/pm-skills at skills/define-prioritization-framework, Apache-2.0.
Model Result Stopped to ask for a script One sentence gets most of it? Claude Opus 5 32 of 37 rows against no help: Seemed to do a little worse, but too small to be sure of against the sentence: Seemed to do a little worse, but too small to be sure of 8 of 50 backlogs No Claude Sonnet 5 36 of 37 rows 35 of 37 rows under the earlier reading against no help: No measured effect against the sentence: No measured effect 0 of 50 backlogs No Claude Haiku 4.5 11 of 22 rows against no help: Seemed to help a little, but too small to be sure of against the sentence: No measured effect 0 of 50 backlogs Yes Claude Fable 5.1 Nothing left to measure Claude Opus 5.5 Nothing left to measure GPT-5 mini GPT-5 mini with define prioritization framework loaded asked for a value before scoring on 45 of 50 answers and gave 5 outside the requested format. So 5 of 10 backlogs never got a score and no rows-right figure is given. not read Not defined an arm is withheld Gemini 3.1 Flash Lite 33 of 37 rows against no help: Seemed to do a little worse, but too small to be sure of against the sentence: Seemed to do a little worse, but too small to be sure of 0 of 50 backlogs No - Claude Opus 5 got -4 rows per backlog right with the skill loaded. It seemed to do a little worse, but the loss is too small to be sure of.
- Claude Sonnet 5: no measured difference with the skill loaded (no change, which could be no change to +1 rows on another run).
- Claude Haiku 4.5 got +4 rows per backlog right with the skill loaded. It seemed to help a little, but the gain is too small to be sure of.
- GPT-5 mini with define prioritization framework loaded asked for a value before scoring on 45 of 50 answers and gave 5 outside the requested format. So 5 of 10 backlogs never got a score and no rows-right figure is given.
- Gemini 3.1 Flash Lite got -2 rows per backlog right with the skill loaded. It seemed to do a little worse, but the loss is too small to be sure of.
For agents
The same findings as data, at /jobs/rice-prioritization.json. Route by job on this evidence, refuse jobs it does not measure, and never pool two test methods.
- Job
- RICE prioritization: rICE prioritization means scoring a backlog on reach, impact, confidence and effort, then ranking it.
- Test methods
- In Claude Code; Via API. Codex: not tested, see above.
- Use when
- On Claude Opus 5, Claude Sonnet 5, Claude Fable 5.1, Claude Opus 5.5 and Gemini 3.1 Flash Lite, trust the arithmetic.
- Skip when
- On Claude Haiku 4.5 and GPT-5 mini, check every score.
- Evidence
- 700 answers from the main runs and 750 from the skill runs, every one re-scored from its raw text to the same figure; records at the paths under How this was tested.
- Last run
- Read from the answers file when it is on the checkout; otherwise stated in the data as not read.
How this was tested
Levels: t1 is a 15-row backlog, t2 25 rows, t3 40 rows; each model ran at the level its trial round selected. Arms: none (the bare task), instruction (one neutral sentence), skill (a pinned skill loaded). Cells: 10 items x 5 passes per arm. Instruments: claude-cli and api, never pooled.
| Model | Instrument | Tier | Arm | Exact-score accuracy | Kendall tau | Top-5 overlap | Flag rate | Identical items | Orbit |
|---|---|---|---|---|---|---|---|---|---|
| Claude Opus 5 | claude-code | t3 | none | 0.973 | 0.905 | 0.952 | 0.860 | 1 of 10 | |
| Claude Opus 5 | claude-code | t3 | instruction | 0.962 | 0.956 | 0.964 | 0.920 | 2 of 10 | In free drift |
| Claude Opus 5 | claude-code | t3 | skill: alirezarezvani-product-manager-toolkit | 0.955 | 0.925 | 0.943 | 0.880 | 2 of 10 | In free drift |
| Claude Opus 5 | claude-code | t3 | skill: pmprompt-feature-prioritization-assistant | 0.960 | 0.897 | 0.920 | 0.860 | 2 of 10 | In free drift |
| Claude Opus 5 | claude-code | t3 | skill: product-on-purpose-define-prioritization-framework | 0.854 | 0.938 | 0.930 | 0.873 | 0 of 10 | In free drift |
| Claude Sonnet 5 | claude-code | t3 | none | 0.962 | 0.976 | 0.996 | 0.680 | 1 of 10 | |
| Claude Sonnet 5 | claude-code | t3 | instruction | 0.959 | 0.978 | 0.988 | 0.733 | 0 of 10 | In free drift |
| Claude Sonnet 5 | claude-code | t3 | skill: alirezarezvani-product-manager-toolkit | 0.970 | 0.979 | 0.980 | 0.693 | 2 of 10 | In free drift |
| Claude Sonnet 5 | claude-code | t3 | skill: pmprompt-feature-prioritization-assistant | 0.979 | 0.986 | 0.988 | 0.673 | 3 of 10 | In free drift |
| Claude Sonnet 5 | claude-code | t3 | skill: product-on-purpose-define-prioritization-framework | 0.975 | 0.986 | 0.984 | 0.673 | 2 of 10 | In free drift |
| Claude Haiku 4.5 | claude-code | t2 | none | 0.321 | 0.581 | 0.704 | 0.667 | 0 of 10 | |
| Claude Haiku 4.5 | claude-code | t2 | instruction | 0.510 | 0.666 | 0.772 | 0.660 | 1 of 10 | In free drift |
| Claude Haiku 4.5 | claude-code | t2 | skill: alirezarezvani-product-manager-toolkit | 0.494 | 0.592 | 0.692 | 0.647 | 0 of 10 | In free drift |
| Claude Haiku 4.5 | claude-code | t2 | skill: pmprompt-feature-prioritization-assistant | 0.467 | 0.576 | 0.680 | 0.667 | 0 of 10 | In free drift |
| Claude Haiku 4.5 | claude-code | t2 | skill: product-on-purpose-define-prioritization-framework | 0.508 | 0.621 | 0.758 | 0.673 | 0 of 6 | In free drift |
| Claude Fable 5.1 | claude-code | t3 | none | 1.000 | 1.000 | 0.976 | 0.933 | 10 of 10 | |
| Claude Fable 5.1 | claude-code | t3 | instruction | 1.000 | 1.000 | 0.992 | 0.980 | 10 of 10 | Unobservable |
| Claude Opus 5.5 | claude-code | t3 | none | 0.999 | 1.000 | 1.000 | 0.973 | 9 of 10 | |
| Claude Opus 5.5 | claude-code | t3 | instruction | 1.000 | 1.000 | 1.000 | 0.987 | 10 of 10 | Unobservable |
| GPT-5 mini | api | t1 | none | 0.568 | 0.688 | 0.844 | 0.060 | 0 of 10 | |
| GPT-5 mini | api | t1 | instruction | 0.627 | 0.715 | 0.864 | 0.313 | 0 of 10 | In free drift |
| GPT-5 mini | api | t1 | skill: alirezarezvani-product-manager-toolkit | 0.618 | 0.675 | 0.852 | 0.193 | 0 of 10 | In free drift |
| GPT-5 mini | api | t1 | skill: pmprompt-feature-prioritization-assistant | 0.650 | 0.699 | 0.864 | 0.427 | 0 of 10 | In free drift |
| GPT-5 mini | api | t1 | skill: product-on-purpose-define-prioritization-framework | withheld: no answer that scored on item-01, item-02, item-04, item-07, item-08 | |||||
| Gemini 3.1 Flash Lite | api | t3 | none | 0.927 | 0.686 | 0.840 | 0.633 | 10 of 10 | |
| Gemini 3.1 Flash Lite | api | t3 | instruction | 0.930 | 0.666 | 0.760 | 0.667 | 10 of 10 | In free drift |
| Gemini 3.1 Flash Lite | api | t3 | skill: alirezarezvani-product-manager-toolkit | 0.911 | 0.697 | 0.720 | 0.533 | 10 of 10 | In free drift |
| Gemini 3.1 Flash Lite | api | t3 | skill: pmprompt-feature-prioritization-assistant | 0.927 | 0.698 | 0.760 | 0.533 | 10 of 10 | In free drift |
| Gemini 3.1 Flash Lite | api | t3 | skill: product-on-purpose-define-prioritization-framework | 0.881 | 0.714 | 0.780 | 0.667 | 10 of 10 | In free drift |
The record
- Results file: harness/src/pm-wave-1/main-1a-analysis.ts wrote it from harness/results/pm-wave-1/stage-1a-i-main/records.jsonl (sha256 42d3c803898908805a8df31d6c01d38607bfe687b50a9aeb4f522ac74f6f9fb1), 700 records, 700 valid, and from harness/results/pm-wave-1/stage-1a-i-skill/records.jsonl (sha256 0a6e1de54a6562208003debf2f549e1b0b24e4e8d25ea9ff7a0de1c8950423fd), 900 records, 750 valid.
- Rescore check: 700 of 700 stored main-run scores identical when re-scored from the raw output; 750 of 750 skill-run scores.
- Scoring: every valid record re-scored from its raw output by the scorer at this commit under the corrected table rule (amendment 1a-i-review-fixes section 4: the last table naming more than half of S, else the largest), which is primary, with asked before answering and the amended duplicate lexicon of amendment 1a-i-main-run-conditions; any figure that differs under the rule in force at main-run time (the plain last table, under which the stored scores were written) carries that figure beside it; rescoreCheck holds the stored scores against a re-score under that rule
- Verdict rule: lib/verdict/rule.ts, status_v1 classify, called by the page on each lift's scale, baselineMean, treatmentMean, delta and halfWidth when it reads this record; no verdict word is stored here (cohort 11.2: called and not reproduced) Interval: 1.96 * sd(per-item differences of per-item arm means) / sqrt(pairs), as lib/skills/cells.ts computes it.
- Billed: $0.2691 in all for the main runs and $0.8723 for the skill runs.
- Skill phase: 900 records, 750 valid.
Limits
- Instruments are never pooled, averaged or subtracted; a Claude Code figure beside an API figure is two instruments (cohort section 9).
- Lifts compare within a model across arms and pins, never across models as a ranking (R27; cohort 11.2).
- No instrument has code execution, so no instrument difference is attributable to it (rice section 8).
- Exact-score accuracy alone does not say a model got RICE right; the trap outcomes publish beside it on every row (rice sections 5 and 10).
- The unit of every interval is the item; passes are repeat samples of one item (cohort section 2).
- The skill-arm cells were fixed from calibration run 2 under the amended headroom rule; the main run's none-arm figures are reported beside that reading and decide nothing (amendment section 12).
- Trap outcomes come from the registered pattern detector with the lexicon as amended in calibration data before any main run; its hand audit is amendment 1a-i-main-run-conditions sections 4, 11.2 and 11.3.
Registered by
- docs/preregistration/pm-wave-1-cohort.md sections 2, 5, 8, 9, 11, 12
- docs/preregistration/pm-wave-1-rice-prioritization.md sections 1, 3, 5, 8, 10
- docs/preregistration/pm-wave-1-amendment-D3-edge-cases-20261005.md sections 1, 2
- docs/preregistration/pm-wave-1-amendment-Q1-rice-titles-20261005.md section 8.5
- docs/preregistration/pm-wave-1-amendment-1a-i-ask-backlog-in-message-20261010.md section 7
- docs/preregistration/pm-wave-1-amendment-1a-i-main-run-conditions-20261011.md sections 3, 4, 7, 11.3, 12
- docs/preregistration/pm-wave-1-amendment-1a-i-review-fixes-20261012.md sections 1, 3, 4