plugins/nw/skills/nw-jtbd-opportunity-scoring/SKILL.md
JTBD opportunity scoring and prioritization - outcome statement format, opportunity algorithm, scoring interpretation, feature prioritization, and opportunity matrix template
npx skillsauth add nwave-ai/nwave nw-jtbd-opportunity-scoringInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use when prioritizing features, stories, or backlog items based on customer-defined outcomes. Opportunity scoring (Ulwick's ODI) replaces gut-feel prioritization with evidence-based ranking.
Every customer need expressed as a desired outcome following strict format:
[Direction] + the [metric] + [object of control] + [contextual clarifier]
Outcome statement must be: Solution-free (no specific technology) | Measurable (ratable on importance/satisfaction 1-5) | Controllable (customer can assess improvement) | Unambiguous (same interpretation by all stakeholders)
Walk the 8-step job map (see jtbd-core skill) and generate 2-3 per step. Produces 16-24 outcome statements per job -- comprehensive view of customer needs.
| Job Map Step | Outcome Statement Pattern | |-------------|--------------------------| | Define | "Minimize the time to determine [what is needed]" | | Locate | "Minimize the likelihood of missing [required input]" | | Prepare | "Minimize the time to set up [environment/context]" | | Confirm | "Minimize the likelihood of proceeding with [invalid state]" | | Execute | "Minimize the time to complete [core action]" | | Monitor | "Minimize the likelihood of [undetected failure]" | | Modify | "Minimize the time to recover from [exception]" | | Conclude | "Minimize the likelihood of [incomplete cleanup]" |
Opportunity Score = Importance + max(0, Importance - Satisfaction)
Where:
Rewards outcomes both important and unsatisfied. If satisfaction >= importance, second term is zero (appropriately served). If satisfaction < importance, gap amplifies score (underserved).
| Score Range | Category | Action | |-------------|----------|--------| | 15-20 | Extremely underserved | High-priority; invest heavily | | 12-15 | Underserved | Strong opportunity; plan for next iteration | | 10-12 | Appropriately served | Maintain; incremental improvement | | < 10 | Overserved | Simplification candidate; may be over-engineered |
From job mapping and interview findings, compile 15-30 per major job.
Gather ratings from users/stakeholders. For small teams:
Compute scores, sort descending. Top scores = highest-priority features.
Each high-scoring outcome maps to one or more stories. Score 15+ should produce at least one story in current iteration.
Scores below 10 are simplification candidates. Resources on overserved outcomes are better redirected to underserved ones.
## Opportunity Scoring: [Product/Feature Area]
| # | Outcome Statement | Imp. (%) | Sat. (%) | Score | Priority |
|---|-------------------|----------|----------|-------|----------|
| 1 | Minimize the time to [outcome A] | | | | |
| 2 | Minimize the likelihood of [outcome B] | | | | |
| 3 | Maximize the [quality] when [context C] | | | | |
### Scoring Method
- Importance: % of respondents rating 4+ on 5-point scale
- Satisfaction: % of respondents rating 4+ on 5-point scale
- Score: Importance + max(0, Importance - Satisfaction)
- Priority: Extremely Underserved (15+), Underserved (12-15),
Appropriately Served (10-12), Overserved (<10)
### Top Opportunities (Score >= 12)
1. [Outcome] -- Score: [X] -- Story: [link or title]
2. [Outcome] -- Score: [X] -- Story: [link or title]
### Overserved Areas (Score < 10)
1. [Outcome] -- Score: [X] -- Simplification opportunity: [description]
### Data Quality Notes
- Source: [user interviews / team estimates / support ticket analysis]
- Sample size: [N respondents]
- Confidence: [High if N >= 10 with user data, Medium if team estimates]
Context: CLI tool for deploying applications. 8 users surveyed.
| # | Outcome Statement | Imp. | Sat. | Score | Priority | |---|-------------------|------|------|-------|----------| | 1 | Minimize time to identify root cause of failed deployment | 92% | 35% | 14.9 | Extremely Underserved | | 2 | Minimize likelihood of deploying untested code | 88% | 72% | 10.4 | Appropriately Served | | 3 | Minimize time to roll back a bad deployment | 85% | 30% | 14.0 | Underserved | | 4 | Minimize time to onboard a new team member to deploy | 65% | 40% | 9.0 | Overserved | | 5 | Minimize likelihood of misconfiguring environment variables | 80% | 45% | 11.5 | Appropriately Served |
Prioritization result:
Ulwick's methodology assumes large-scale surveys (100+ respondents). For small agile teams:
| Method | Best For | Combine With Opportunity Scoring | |--------|----------|--------------------------------| | MoSCoW | Sprint-level scope decisions | Use opportunity scores to inform Must/Should/Could | | Value/Effort matrix | Quick relative ranking | Use opportunity scores as "value" axis | | RICE | Feature-level prioritization | Use opportunity score as "Impact" component | | Story mapping | Release planning | Use opportunity scores to prioritize rows (MVP vs later) |
jtbd-core skilljtbd-interviews skilljtbd-bdd-integration skillleanux-methodology skilltesting
Scala 3 language-specific patterns with ZIO, Cats Effect, and opaque types
testing
Kotlin language-specific patterns with Arrow, Raise DSL, and coroutine-based effects
testing
Haskell language-specific patterns, GADTs, type classes, and effect systems
testing
F# language-specific patterns, Railway-Oriented Programming, and Computation Expressions