Opportunity Score vs ICE vs RICE: Product Prioritization Frameworks Explained
Opportunity Score identifies high-value customer problems using importance and satisfaction gaps, ICE adds confidence and ease ratings for rapid initiative triage, and RICE introduces reach and effort metrics for detailed resource allocation in larger teams.
The phuryn/pm-skills repository documents these three prioritization frameworks extensively across its product discovery and execution modules. Understanding the distinctions between Opportunity Score vs ICE vs RICE enables product managers to select the appropriate scoring method based on whether they are evaluating problems to solve or initiatives to ship.
What is Opportunity Score?
Opportunity Score is a problem-first metric designed to evaluate how valuable solving a specific customer problem would be. According to the source documentation in pm-product-discovery/skills/prioritize-features/SKILL.md, the formula follows Dan Olsen’s approach:
Opportunity Score = Importance × (1 − Satisfaction)
Both Importance and Satisfaction are normalized values between 0 and 1, derived from customer research. A high score indicates the problem is both critical to users and currently underserved by existing solutions. This framework excels during the discovery phase when the goal is determining what to build rather than sequencing specific features.
What is ICE?
ICE extends Opportunity Score to rank specific initiatives, features, or experiments. As documented in pm-product-discovery/skills/prioritize-assumptions/SKILL.md, the formula multiplies three factors:
ICE = Impact × Confidence × Ease
Where Impact is calculated as Opportunity Score × Number of Customers affected. Confidence and Ease are typically rated on a 1-10 scale based on team assessment. ICE is optimized for small teams requiring fast, rough prioritization without extensive estimation overhead. The multiplicative nature means any factor scoring zero eliminates the initiative from consideration, creating a natural filter.
What is RICE?
RICE provides granular scoring for complex prioritization decisions. The framework splits ICE’s impact component into separate Reach and Impact dimensions, and divides by Effort rather than multiplying by ease. The formula from pm-execution/skills/prioritization-frameworks/SKILL.md is:
RICE = (Reach × Impact × Confidence) ÷ Effort
- Reach: Number of users or events affected per time period (e.g., users/quarter)
- Impact: Magnitude of benefit per user (often the same Opportunity Score value)
- Confidence: Percentage or 1-10 scale reflecting estimate certainty
- Effort: Person-weeks or months required
RICE is best suited for larger teams needing to differentiate between breadth of impact (reach) and depth of impact (satisfaction gap), while accounting for resource constraints through the effort denominator.
Key Differences Between the Frameworks
The phuryn/pm-skills source code reveals three critical distinctions when comparing these methodologies:
-
Target of evaluation: Opportunity Score evaluates problems, while ICE and RICE evaluate initiatives or solutions.
-
Mathematical approach: Opportunity Score and ICE use multiplication, rewarding extreme values in any dimension. RICE uses division by effort, penalizing high-cost initiatives explicitly.
-
Data requirements:
- Opportunity Score requires customer survey data (importance/satisfaction)
- ICE requires customer count estimates and team ratings
- RICE requires temporal reach metrics and detailed effort estimation
-
Team size suitability: ICE favors small teams moving quickly; RICE supports larger organizations requiring reach differentiation and effort accountability.
How to Calculate Each Score
Here is a Python implementation illustrating the calculation logic for all three frameworks based on the mathematical definitions in the repository:
def opportunity_score(importance, satisfaction):
"""
Calculate problem value.
importance: 0-1 scale from customer research
satisfaction: 0-1 scale from customer research
"""
return importance * (1 - satisfaction)
def ice_score(opportunity, customers, confidence, ease):
"""
Calculate initiative priority for small teams.
opportunity: Result from opportunity_score()
customers: Number of customers affected
confidence: 1-10 scale
ease: 1-10 scale
"""
impact = opportunity * customers
return impact * confidence * ease
def rice_score(reach, impact, confidence, effort):
"""
Calculate initiative priority for larger teams.
reach: Users per time period
impact: 0-1 scale (often opportunity_score result)
confidence: 1-10 or percentage
effort: Person-weeks
"""
return (reach * impact * confidence) / effort
# Example calculation
importance = 0.9 # High importance
satisfaction = 0.2 # Low current satisfaction
customers = 1500
confidence = 8 # High confidence
ease = 6 # Moderate ease
reach = 1200 # Users per quarter
effort = 4 # Person-weeks
opp = opportunity_score(importance, satisfaction)
ice = ice_score(opp, customers, confidence, ease)
rice = rice_score(reach, opp, confidence, effort)
print(f"Opportunity Score: {opp:.2f}")
print(f"ICE score: {ice}")
print(f"RICE score: {rice:.2f}")
This example demonstrates how a problem scoring 0.72 on the Opportunity Score metric translates to different priorities when evaluated through ICE (62,208) versus RICE (1,728), highlighting how effort and reach metrics alter relative rankings.
When to Use Each Framework
Select your prioritization method based on organizational context and decision requirements:
-
Use Opportunity Score when conducting discovery research and building opportunity solution trees. It requires the least data and focuses purely on customer problem value.
-
Use ICE when running lean experiments with small teams where speed matters more than precision. The framework in
pm-product-discovery/skills/prioritize-assumptions/SKILL.mdspecifically recommends ICE for assumption testing prioritization. -
Use RICE when presenting to stakeholders who require effort justification, or when comparing initiatives with vastly different user reach profiles (e.g., a power-user feature vs. a mass-market improvement).
Summary
- Opportunity Score identifies which customer problems warrant solutions using importance and satisfaction gaps (
Importance × (1 − Satisfaction)) - ICE enables rapid initiative ranking for small teams by multiplying impact, confidence, and ease, where impact derives from Opportunity Score and customer count
- RICE provides enterprise-grade prioritization by splitting impact into reach and per-user value, then dividing by effort to maximize return on investment
- The phuryn/pm-skills repository implements these frameworks across
pm-product-discovery/skills/prioritize-features/SKILL.md,pm-product-discovery/skills/prioritize-assumptions/SKILL.md, andpm-execution/skills/prioritization-frameworks/SKILL.md
Frequently Asked Questions
Can I use Opportunity Score and RICE together?
Yes. Opportunity Score typically feeds into RICE as the Impact variable. You first calculate the problem's value using Importance × (1 − Satisfaction), then use that result as the Impact factor in your RICE calculation alongside Reach, Confidence, and Effort.
Why does ICE multiply by Ease while RICE divides by Effort?
The mathematical distinction reflects philosophical differences in resource planning. ICE (Impact × Confidence × Ease) rewards initiatives that are easy to build, multiplying benefits. RICE divides by Effort to create a cost-benefit ratio, explicitly quantifying how much value you generate per unit of work. You can convert between them by using Ease = 10 − Effort on a normalized scale, though this sacrifices RICE's explicit cost accounting.
Which framework works best for startup product teams?
ICE is generally optimal for startups. As documented in the phurun/pm-skills prioritization guides, ICE requires less estimation overhead than RICE (no reach forecasting or detailed effort breakdowns) while still incorporating Opportunity Score data. The speed of calculation matches the rapid iteration cycles typical of early-stage companies.
How do I normalize Confidence across these frameworks?
Opportunity Score requires no confidence metric—it relies purely on customer data. For ICE and RICE, Confidence is typically rated 1-10 where 10 represents certainty based on existing data. Some teams convert this to a percentage (50%, 80%, 100%) before multiplication. The pm-execution/skills/prioritization-frameworks/SKILL.md file recommends maintaining consistent scales within your organization rather than mixing percentage and decimal representations.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →