Help us improve
Share bugs, ideas, or general feedback.
From great_cto
Build an Opportunity Solution Tree (OST) to structure product discovery — map desired outcomes to customer opportunities, solutions, and experiments. Use when the team is unclear what to build next.
npx claudepluginhub avelikiy/great_ctoHow this skill is triggered — by the user, by Claude, or both
Slash command
/great_cto:opportunity-solution-treeWhen to use
Apply when: - The team knows the outcome to improve but not which opportunity to chase - Multiple feature ideas exist and the team isn't sure which solves the right problem - CTO asks "what should we build to improve retention / conversion / NPS?" - Starting discovery on a new product area Guards — do NOT apply when: - The feature and problem are already well-defined (go straight to /prd) - You have a single, validated user story (use /prd directly) - This is a bug fix or technical debt item
docs/discovery/**This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Structures product discovery by connecting a desired outcome → customer opportunities → solutions → experiments. Prevents jumping to solutions before validating the problem space.
Builds Opportunity Solution Trees (OST) mapping outcomes to customer opportunities, solutions, and experiments. Guides continuous product discovery and prioritization.
Creates an opportunity solution tree mapping desired outcomes to opportunities and potential solutions. Use for outcome-driven product discovery, prioritization, or communicating product strategy.
Use this skill when the user asks about "opportunity solution tree", "OST", "Teresa Torres framework", "build my OST", "map opportunities to solutions", "how should we structure our discovery", "connect outcomes to opportunities", "continuous discovery framework", or wants to visually structure the relationship between outcomes, opportunities, and solutions. Also use this skill when a user has a list of ideas and wants to organize them against user outcomes.
Share bugs, ideas, or general feedback.
Structures product discovery by connecting a desired outcome → customer opportunities → solutions → experiments. Prevents jumping to solutions before validating the problem space.
Based on Teresa Torres, Continuous Discovery Habits (2021).
┌─────────────────────┐
│ DESIRED OUTCOME │ ← single measurable metric
└──────────┬──────────┘
┌───────────────┼────────────────┐
┌──────┴─────┐ ┌──────┴─────┐ ┌──────┴─────┐
│Opportunity │ │Opportunity │ │Opportunity │ ← customer pain/need
│ A │ │ B │ │ C │
└──────┬─────┘ └──────┬─────┘ └────────────┘
┌──────┴───┐ ┌──────┴───┐
┌───┴──┐ ┌───┴──┐ ┌───┴──┐ ┌───┴──┐
│Sol 1 │ │Sol 2 │ │Sol 3 │ │Sol 4 │ ← possible solutions
└───┬──┘ └──────┘ └───┬──┘ └──────┘
┌────┴────┐ ┌───┴────┐
│ Exp 1 │ │ Exp 2 │ ← fast experiments
└─────────┘ └────────┘
Key principles:
Confirm or help the user articulate one measurable outcome at the top of the tree.
Good outcomes:
Bad outcomes (reject these):
If the user can't state a metric: ask "What would need to be true for you to consider this effort a success?"
From customer interviews, analytics, support tickets, or NPS feedback, identify 3–7 customer opportunities (pain points, unmet needs, desires).
Frame each from the customer's perspective:
Prioritise using Opportunity Score (Dan Olsen, The Lean Product Playbook):
Opportunity Score = Importance × (1 − Satisfaction)
Survey customers: rate each need on Importance (0–1) and current Satisfaction (0–1).
For each top-priority opportunity, brainstorm ≥3 solutions from three angles:
Rules:
For the most promising solutions, design 1–2 fast experiments:
| Experiment | Assumption tested | Method | Success metric | Effort |
|---|---|---|---|---|
| <A/B test / fake door / prototype / interview> | <metric + threshold> | <1d / 3d / 1w> |
Assumption categories (prioritise in this order):
Cheap experiment types:
Write docs/discovery/OST-<outcome-slug>.md:
# Opportunity Solution Tree: <Outcome>
**Desired outcome**: <metric> from <current> to <target> by <date>
**Last updated**: <date>
## Opportunity map
| # | Opportunity | Importance | Satisfaction | Opportunity Score | Priority |
|---|------------|-----------|-------------|-------------------|---------|
| A | <customer need> | 0.8 | 0.3 | 0.56 | 1st |
| B | <customer need> | 0.7 | 0.6 | 0.28 | 3rd |
| C | <customer need> | 0.6 | 0.2 | 0.48 | 2nd |
## Solutions for top opportunities
### Opportunity A: <name>
| Solution | Description | Experiment |
|---------|-------------|-----------|
| Sol A1 | <description> | <experiment> |
| Sol A2 | <description> | <experiment> |
| Sol A3 | <description> | <experiment> |
## Active experiments
| Experiment | Assumption | Status | Result |
|-----------|-----------|--------|--------|
| <name> | <assumption> | Running / Done | <result or pending> |
## Learning log
- <date>: Discovered <insight> from <source>. Killed <solution> / promoted <opportunity>.
Once an opportunity is validated and a solution is chosen:
→ Run /prd with the validated opportunity as the problem statement
→ The OST's Opportunity Score data feeds directly into PRD §3 (Success Metrics) and §4 (Target Users)
❌ Opportunity = solution in disguise: "Users need a search bar" is a solution. "Users can't find past purchases" is an opportunity.
❌ Skipping divergence: Picking the first solution for each opportunity. Always generate ≥3 before choosing.
❌ Experiments that take >1 week: If it takes longer than a week to learn, it's not an experiment — it's a feature.
❌ Updating the tree once: OST is a continuous practice. Update weekly as you learn.
❌ Too many outcomes: One outcome per tree. If you have multiple outcomes, run multiple trees or pick the highest priority.