Skip to main content
Product Management/opportunity-solution-tree

Opportunity Solution Tree

You need to connect a desired outcome to opportunities, solutions, and assumption tests using the Teresa Torres OST framework.

Use this when you need to connect a desired product outcome to the opportunities (user needs), solution ideas, and assumption tests that will get you there. Based on Teresa Torres' Continuous Discovery Habits framework. The tree gives the team a shared map of the problem space and helps make informed bets on what to build next.

Before you start: If you have raw research data (interview notes, survey results, support tickets), run /research-synthesize first. Its output -- themes with supporting evidence -- feeds directly into this skill as opportunities. Use /assumption-map to identify and prioritize assumptions behind your solutions before committing to experiments.

Framework attribution: The Opportunity Solution Tree is from Teresa Torres, Continuous Discovery Habits.

Process

Step 1: Gather inputs

Ask the user:

  1. Desired outcome — What measurable business or product outcome are you working toward? (e.g., "Reduce onboarding drop-off from 60% to 30%" or "Increase weekly active usage by 20%.")
  2. Available research — What do you know about users in this space? Provide any of:
    • /research-synthesize output (themes become opportunities directly)
    • Interview notes, survey results, or support ticket patterns
    • Existing personas or JTBD analyses
    • Assumptions the team currently holds
  3. Current solutions — What has the team already tried or considered? (Prevents re-inventing and grounds the tree in reality.)
  4. Constraints — Any known limitations? (Technical, budget, timeline, regulatory.)

Step 2: Identify which personas this outcome serves

Before building the tree, prompt the user:

Persona check: Which user personas are affected by this outcome? The tree will be stronger if each opportunity is tagged to a specific persona. If you have defined personas (from /persona-create or /persona-draft), name them. If not, briefly describe the key user types involved.

Different personas experience the same outcome differently. A "reduce onboarding drop-off" outcome might create different opportunities for a "New PM" persona vs. an "Engineering Lead" persona.

Step 3: Map opportunities from research

Extract opportunities (user needs, pain points, unmet desires) from the provided research. If /research-synthesize output was provided, map themes directly to opportunities.

## Opportunity Solution Tree — (Outcome)

**Desired Outcome:** (Measurable outcome statement)
**Date:** (Date)
**Owner:** (User's name/role)

---

### 🎯 Outcome
(Restate the outcome with measurable target and timeframe)

---

### Opportunities

Opportunities are user needs, pain points, or desires discovered through research. Each one is a potential path to the outcome.

#### Opportunity 1: (Opportunity name — concise description of the user need)

- **Persona(s) affected:** (Which personas experience this need)
- **Evidence:** (Where this came from — research theme, quote, data point)
  - "(Direct quote or data point)" — Source
  - "(Supporting evidence)" — Source
- **Strength of evidence:** Strong / Moderate / Weak
- **Connection to outcome:** (How addressing this need moves the outcome metric)

#### Opportunity 2: (Opportunity name)

- **Persona(s) affected:** (Personas)
- **Evidence:**
  - "(Evidence)" — Source
  - "(Evidence)" — Source
- **Strength of evidence:** Strong / Moderate / Weak
- **Connection to outcome:** (How this connects)

#### Opportunity 3: (Opportunity name)

(Same format — aim for 3-6 opportunities)

Step 4: Generate solutions per opportunity

For each opportunity, brainstorm solution ideas. Solutions must be tied to specific opportunities, no floating ideas.

Hard rule: Generate a minimum of 3 solutions per opportunity before evaluating any of them. The first idea is never the best idea. When the team says "we can't think of more solutions," use constraints as creative prompts: "What would you build if you had half the budget? Double the timeline? No engineers? Only one day?" Creativity loves constraints.

### Solutions

#### Opportunity 1: (Name)

| Solution | Description | Effort Estimate | Risk Level | Assumption to Test |
|---|---|---|---|---|
| **S1.1:** (Solution name) | (What the team would build or change) | Low/Medium/High | Low/Medium/High | (The riskiest assumption — what must be true for this to work) |
| **S1.2:** (Solution name) | (Description) | Low/Medium/High | Low/Medium/High | (Riskiest assumption) |
| **S1.3:** (Solution name) | (Description) | Low/Medium/High | Low/Medium/High | (Riskiest assumption) |

#### Opportunity 2: (Name)

| Solution | Description | Effort Estimate | Risk Level | Assumption to Test |
|---|---|---|---|---|
| **S2.1:** (Solution name) | (Description) | Low/Medium/High | Low/Medium/High | (Riskiest assumption) |
| **S2.2:** (Solution name) | (Description) | Low/Medium/High | Low/Medium/High | (Riskiest assumption) |

(Continue for each opportunity)

Step 5: Design assumption tests per solution

For each solution's riskiest assumption, propose a lightweight test. Favor speed over precision — the goal is to learn quickly, not to prove definitively.

### Assumption Tests

#### S1.1: (Solution name) → Assumption: "(Riskiest assumption)"

- **Test type:** (Prototype test / Fake door / Interview question / Data analysis / Concierge / A/B test)
- **What to do:** (Specific steps to run this test)
- **Success signal:** (What result would increase confidence in this assumption?)
- **Failure signal:** (What result would decrease confidence?)
- **Effort to run:** (Hours/days — not weeks)
- **Data needed:** (What you need before you can run this test)

#### S2.1: (Solution name) → Assumption: "(Riskiest assumption)"

- **Test type:** (Test type)
- **What to do:** (Steps)
- **Success signal:** (Expected positive result)
- **Failure signal:** (Expected negative result)
- **Effort to run:** (Time)
- **Data needed:** (Prerequisites)

(Continue for each solution's primary assumption)

Step 6: Recommend next experiment

Based on the full tree, recommend which experiment to run first:

### Recommended Next Step

**Run this experiment first:** (Test name — e.g., "S1.1 prototype test")

**Why this one:**
- **Opportunity strength:** (Is the underlying opportunity well-evidenced?)
- **Assumption risk:** (How likely is this assumption to be wrong? Higher risk = more value in testing early.)
- **Speed to learn:** (Can you get a signal in days, not weeks?)
- **Impact if true:** (If the assumption holds, how much does it move the outcome?)

**What you'll learn:** (Regardless of the result — what does this experiment teach you about the tree?)

**If the test succeeds:** (What to do next — build an MVP? Test the next riskiest assumption?)
**If the test fails:** (What to do — pivot to a different solution? Reframe the opportunity? Dig deeper with research?)

Step 7: Present the tree structure

Provide a text-based tree view showing the hierarchy:

### Tree Overview

🎯 (Outcome)
├── 💡 Opportunity 1: (Name) [Persona: X, Y]
│   ├── 🔧 S1.1: (Solution) → Test: (Test type)  ⭐ RECOMMENDED FIRST
│   ├── 🔧 S1.2: (Solution) → Test: (Test type)
│   └── 🔧 S1.3: (Solution) → Test: (Test type)
├── 💡 Opportunity 2: (Name) [Persona: Z]
│   ├── 🔧 S2.1: (Solution) → Test: (Test type)
│   └── 🔧 S2.2: (Solution) → Test: (Test type)
├── 💡 Opportunity 3: (Name) [Persona: X]
│   ├── 🔧 S3.1: (Solution) → Test: (Test type)
│   └── 🔧 S3.2: (Solution) → Test: (Test type)

Step 8: Review and validate

Ask the user:

  • Outcome check: Is the outcome truly measurable? Could the team agree on whether it's been achieved?
  • Opportunity coverage: Are the opportunities comprehensive? Are there user needs you've observed that aren't captured?
  • Evidence quality: Are the opportunities grounded in real research, or are some based on assumptions? (Flag assumption-based opportunities — they need research before you invest in solutions.)
  • Solution creativity: Did the tree generate solutions you hadn't considered? Or are they all things you already planned?
  • Assumption risk: Are you testing the riskiest assumption first? (Teams often test the easiest assumption, not the most important one.)
  • Persona coverage: Does every opportunity have at least one persona tag? If an opportunity doesn't clearly serve a persona, it might be a team assumption, not a user need.

Adjust as needed. The tree is a living artifact — update it as you learn from experiments.

Related skills

  • /research-synthesize — run this first to turn raw research into themes. Themes map directly to opportunities in the tree.
  • /interview-plan — if you need more research before building the tree, plan interviews to fill evidence gaps.
  • /experiment-design — for assumption tests that need more rigor (especially A/B tests), hand off to /experiment-design for full experiment planning.
  • /persona-draft — if you don't have defined personas, draft them before building the tree. Persona tags on opportunities are far more useful with real personas.
  • /jtbd-analysis — if you're framing opportunities as jobs-to-be-done, a JTBD analysis provides the language and structure.

Output location

Present the full tree (opportunities, solutions, assumption tests, recommendation, and tree overview) as formatted text in the conversation. The user copies the tree into their project wiki, Notion, or engagement documentation. The tree should be updated as experiments are run and learning accrues.

Example Output

Input

  • Company & context: Meridian Health, a mid-sized regional health system offering a patient portal (web + mobile) for scheduling, lab results, and care messaging
  • Desired outcome: Increase the percentage of patients who complete a follow-up appointment booking within 7 days of receiving lab results, from 22% to 45%, over the next two quarters
  • Available research: Exit survey data showing 61% of patients who didn't book cited "didn't know what to do next"; 8 patient interviews revealing anxiety around interpreting results and fear of "bothering" their doctor; support ticket analysis showing 340 tickets/month tagged "confused by results"
  • Current solutions considered: A generic "Book a follow-up" banner already exists on the results page but has a 3.1% click-through rate; the care team proposed a templated results-explanation PDF
  • Constraints: No changes to the EHR (Epic) backend; engineering team of 4 with a 10-week runway; HIPAA compliance required for any messaging feature

Output (abbreviated)

Opportunity Solution Tree — Follow-Up Booking After Lab Results

Desired Outcome: Increase follow-up appointment completion within 7 days of lab results delivery from 22% → 45% Date: 2024-11-04 Owner: Sr. Product Manager, Patient Experience


🎯 Outcome

Increase the percentage of patients who book a follow-up appointment within 7 days of receiving lab results from 22% to 45% by Q2 2025, measured via portal booking event tied to a results-delivery timestamp.


Opportunities

Opportunity 1: Patients don't know whether their results require action

  • Persona(s) affected: First-Time Patient (post-diagnosis), Chronic Condition Manager
  • Evidence:
    • "I saw my numbers were off but I had no idea if that was serious or just like… a little off." — Interview P3
    • 61% of non-bookers in exit survey cited "didn't know what to do next" — Exit Survey, Oct 2024
  • Strength of evidence: Strong
  • Connection to outcome: Patients who can't self-triage won't self-initiate booking; removing this ambiguity is the most direct lever on the funnel

Opportunity 2: Patients feel social friction around contacting their care team

  • Persona(s) affected: First-Time Patient, Aging/Low-Digital-Literacy Patient
  • Evidence:
    • "I didn't want to waste her time if it turned out to be nothing." — Interview P6
    • "I kept waiting for them to call me." — Interview P1
  • Strength of evidence: Moderate
  • Connection to outcome: Reduces patient-initiated booking even when they suspect they should follow up; addressing perceived permission barriers could recover a portion of hesitant non-bookers

Opportunity 3: The booking action is not surfaced at the moment of peak motivation

  • Persona(s) affected: All portal users
  • Evidence:
    • Existing "Book Follow-Up" banner CTR = 3.1% (portal analytics, Sep 2024)
    • 340 support tickets/month tagged "confused by results" suggest patients are re-engaging the portal seeking guidance they didn't get at first view — Support Ticket Analysis, Q3 2024
  • Strength of evidence: Strong
  • Connection to outcome: A low-friction, contextually placed booking prompt tied to results interpretation could directly lift the 7-day booking rate

Solutions

Opportunity 1: Patients don't know whether their results require action

SolutionDescriptionEffort EstimateRisk LevelAssumption to Test
S1.1: Plain-language result summaryAuto-generate a 2–3 sentence lay-language interpretation alongside each result, written by care content team and mapped to common result rangesMediumMediumPatients will trust and act on a system-generated plain-language summary rather than waiting for provider confirmation
S1.2: Triage indicator badgeAdd a color-coded "Action Recommended / No Action Needed / Provider Will Reach Out" badge to each result, set by care team protocol rulesLowMediumA simple categorical signal is sufficient to drive booking behavior without causing anxiety or over-triggering calls
S1.3: Inline care team video explainerShort (60–90 sec) pre-recorded video from the ordering provider explaining what the result category means and what to do nextHighHighPatients will watch a video before deciding whether to book, and video will outperform text in driving action

Opportunity 2: Patients feel social friction around contacting their care team

SolutionDescriptionEffort EstimateRisk LevelAssumption to Test
S2.1: Explicit permission promptAdd copy beneath results stating "Your care team expects to hear from you — booking a follow-up is always appropriate after receiving results" with a direct booking CTALowLowNormalizing language meaningfully reduces hesitation vs. a generic button
S2.2: Asynchronous results Q&A via secure messageAllow patients to submit one free-text question about their results before committing to an appointment; surfaced as a lower-stakes alternative to bookingMediumMediumOffering a lower-commitment action increases overall engagement and funnels into booking rather than replacing it
S2.3: "Your doctor flagged this for follow-up" personalized triggerWhen a provider marks a result as requiring follow-up in Epic, push a personalized portal notification: "Dr. Chen has noted this result warrants a conversation."MediumHighPersonalized provider attribution is technically feasible via existing Epic webhook and meaningfully outperforms generic prompts

Opportunity 3: The booking action is not surfaced at the moment of peak motivation

SolutionDescriptionEffort EstimateRisk LevelAssumption to Test
S3.1: Contextual inline booking moduleReplace static banner with an inline scheduling widget embedded directly in the results detail view, pre-filtered to the ordering provider's availabilityMediumMediumPatients who intend to book abandon due to navigation friction, not lack of intent — removing navigation steps will lift conversion
S3.2: Push notification at results deliverySend a HIPAA-compliant push notification ("Your results are ready — see what to do next") that deep-links to results + bookingLowLowOpt-in rates for portal push notifications are high enough to make this channel impactful at scale
S3.3: 72-hour re-engagement nudgeIf patient viewed results but did not book, send a single follow-up message at 72 hours: "Still have questions? Your care team has availability this week."LowMediumA single timed nudge increases booking without generating patient complaints about feeling pressured

Assumption Tests (Selected)

S1.1 → Assumption: "Patients will trust and act on system-generated plain-language summaries"

  • Test type: Prototype test (moderated usability)
  • What to do: Build a static mockup of 3 results screens with plain-language summaries. Recruit 6 patients via the existing portal research panel. Ask: "After reading this, what would you do next?" Observe whether booking is the first-mentioned action.
  • Success signal: 4 of 6 participants say they would book or contact care team unprompted
  • Failure signal: Participants express distrust ("I'd want my doctor to explain this") or confusion about the source of the summary
  • Effort to run: 3 days (recruiting 2 days, sessions 1 day)
  • Data needed: 3 representative results scenarios (normal, borderline, abnormal) from clinical content team

S3.2 → Assumption: "Opt-in rates are high enough to make push notifications impactful at scale"

  • Test type: Data analysis + fake door
  • What to do: Audit current push notification opt-in rate from portal analytics. If <30%, run a fake door: add "Enable result alerts" prompt post-login for one week, measure click-through without building the full feature.
  • Success signal: Opt-in rate ≥40% of active portal users, or fake door CTR ≥25%
  • Failure signal: Opt-in rate <20% — channel reach too small to move the outcome metric meaningfully
  • Effort to run: 2 days (1 day analytics pull, 1 day fake door implementation)
  • Data needed: Current portal push notification opt-in rate from mobile analytics dashboard

S2.1 → Assumption: "