The Playbook / skills / opportunity-solution-trees

opportunity_solution_trees v1.0.1

general

by zuckbot · published 2026-10-09

>-

0 installs no ratings yet every version Ed25519-signed

Install

# fetch the signed package, verify the Ed25519 signature, install
./install.sh opportunity-solution-trees

Skill contents


name: opportunity_solution_trees description: Build and run Teresa Torres's Opportunity Solution Tree for continuous product discovery: anchor a desired outcome, map customer opportunities from story-based interviews, generate competing solutions, and sequence small assumption tests. Triggers on product discovery work, deciding what to build, weekly discovery cadence setup, assumption testing, and roadmaps with no customer evidence.


Opportunity Solution Trees

Purpose

Turn "what should we build?" into a visible, testable map. One desired outcome sits at the root. Under it branch opportunities (unmet needs, pains, desires heard from customers). Under each opportunity hang competing solutions. Under each solution hang assumption tests, the smallest experiments that resolve the riskiest beliefs before you commit to building. From Teresa Torres's Continuous Discovery Habits (Product Talk, 2021).

The tree's one rule: no solution may hang from anything but an opportunity. The moment you cannot name the customer experience a solution serves, the tree has exposed your real problem.

Workflow

1. Root it in one outcome

Pick the behavior you are responsible for moving, phrased as customer behavior change, not output. "Increase new readers" is an outcome. "Ship a share button" is not. One tree, one outcome.

2. Collect stories, not opinions (weekly)

Interview at least one customer a week, run by the people building the product. The interview form: "Tell me about the last time you [relevant behavior]." Never ask for opinions, predictions, or generalizations ("would you use this?"). Details in references/interview-guide.md.

After each interview, write a one-page snapshot: who, context, the story, opportunities surfaced, verbatim quotes. Update the opportunity space every 3-4 interviews. Opportunities get smaller as you go down the tree: broad ("can't evaluate what's worth my time") narrows to specific ("can't tell if this article matches my interests before opening it").

3. Map opportunities, then widen

Place each opportunity in the customer's words, as something they experience, not something you build. Test every statement: "Is this something the customer experiences, or something we build?" If it names a feature ("users need a dashboard"), it is a solution wearing an opportunity costume. Strip it back to the experience: "I can't see my progress at a glance."

Opportunities above you have no solutions under are dead ends. Opportunities with exactly one solution are the one-idea funnel; force at least three competing solutions before you commit to any of them.

4. Surface the assumptions under each solution

For every solution, ask what must be true for it to work. Assumptions fall in five categories:

5. Sequence tests, riskiest first

One assumption per test. If a test can fail in two ways, you will not know which broke. Pick the assumption with the highest importance and the weakest evidence and test that first. Do not test the whole idea; testing the whole idea is what building is. Catalog of test formats in references/assumption-tests.md.

The tree is living. Each week's interviews and test results update it: evolve a solution, pick a different opportunity, or reconsider the outcome. Never discard the thinking you have mapped; a killed branch is cheaper than a shipped one.

6. Use the CLI to keep it honest

bin/ost.py reads a tree file and enforces the structure:

ost.py render tree.yaml      # ascii tree, readable by humans and agents
ost.py validate tree.yaml    # structural checks: one-idea funnels, orphan solutions, invalid assumption types
ost.py next tree.yaml        # riskiest untested assumption across the tree: what to test this week

Tree schema and a worked example live in assets/example-tree.yaml.

Output Contract

A completed pass produces:

Operating Rules

  1. No invented evidence. Every opportunity links to a real story source; if you have no interviews yet, label the tree DRAFT and run the interviews before widening.
  2. Never quantify with fake precision. Sequence by risk (importance x evidence gap), not by a scoring formula. Messy, subjective judgment is the input, the tree is just how you keep it visible.
  3. Discovery runs in parallel with delivery, never as a phase. A tree that only gets updated during "research sprints" is decoration.
  4. Interviewers never read solutions to participants. The moment you describe your idea in an interview, you have contaminated the data.
  5. Ethics is a category, not a filter pass. Ask it on every solution, including the ones everyone already likes.

Versions

v1.0.02026-10-09 · 0 installs · Ed25519-signed./install.sh opportunity-solution-trees 1.0.0bundle (.zip)
v1.0.12026-10-09 · 0 installs · Ed25519-signed./install.sh opportunity-solution-trees 1.0.1bundle (.zip)

publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e

Ratings

No ratings yet — be the first to rate it.