Opportunity Solution Tree logo

Opportunity Solution Tree

Community
Productfculty-aipm
opportunity-solution-tree

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.

Overview

PublisherProductfculty-aipm
RepositoryPM-Copilot-by-Product-Faculty
Skill nameopportunity-solution-tree
Stars
80
Forks
34
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by Productfculty-aipm on GitHub. Read the source before you install it.

Installation

Install the Opportunity Solution Tree AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/Productfculty-aipm/PM-Copilot-by-Product-Faculty/tree/main/skills/opportunity-solution-tree
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Productfculty-aipm/PM-Copilot-by-Product-Faculty.git /tmp/PM-Copilot-by-Product-Faculty
mkdir -p .claude/skills
cp -r /tmp/PM-Copilot-by-Product-Faculty/skills/opportunity-solution-tree .claude/skills/opportunity-solution-tree
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Opportunity Solution Tree in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Opportunity Solution Tree on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Opportunity Solution Tree is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Opportunity Solution Tree (OST)

You are applying Teresa Torres' Opportunity Solution Tree framework. The OST is a visual that keeps discovery connected to desired outcomes — preventing the #1 PM failure mode: building solutions disconnected from user or business outcomes.

Key principle from Torres: "The OST is a simple visual but complex in practice. The complexity is in learning to separate opportunities from solutions, and sub-opportunities from solutions." — Teresa Torres, Lenny's Podcast (2022)

Step 1 — Load Context

Read memory/user-profile.md for current bets and North Star context. Read context/product/roadmap.md for current OKRs. Understanding the desired outcomes is essential before building the OST.

Step 2 — Establish the Desired Outcome

The OST starts with one desired outcome — not a metric, not a feature, but an outcome that matters to users or the business.

Ask: "What outcome are you trying to drive? This should be something users genuinely care about, not a proxy metric."

Help frame it correctly:

  • Too vague: "Make users happy" → Probe: what does a happy user do differently?
  • Output disguised as outcome: "Ship the onboarding redesign" → Probe: what user behavior changes if we succeed?
  • Metric without context: "Increase retention to 45%" → Ask: what user experience would cause that?

Good desired outcome: "Users successfully set up their workspace and see value within their first session"

Step 3 — Identify Opportunities (Not Solutions)

Opportunities are user struggles, unmet needs, or desired outcomes. They live between the desired outcome and potential solutions.

Work through each major user journey related to the desired outcome. For each step:

  • Where do users get stuck?
  • What are they trying to do that they can't do easily?
  • What workarounds are they using?
  • What would they say they wish they could do?

Critical distinction: An opportunity is always framed as a user struggle or need, never as a solution.

  • ❌ "Users need a dashboard" → This is a solution
  • ✓ "Users can't see the impact of their actions across the workspace" → This is an opportunity

For each opportunity, identify sub-opportunities: more specific struggles nested under the broader one.

Step 4 — Build the OST Hierarchy

Structure the tree:

Desired outcome: [User outcome]
│
├── Opportunity 1: [User struggle statement]
│   ├── Sub-opportunity 1a: [More specific struggle]
│   │   ├── Solution idea A
│   │   └── Solution idea B
│   └── Sub-opportunity 1b: [More specific struggle]
│       └── Solution idea C
│
├── Opportunity 2: [User struggle statement]
│   └── Solution idea D
│
└── Opportunity 3: [User struggle statement]
    ├── Solution idea E
    └── Solution idea F

Step 5 — Solution Generation (Per Opportunity)

For each opportunity, generate 3 solution ideas. These should be genuinely different from each other — not variations on the same theme.

Evaluate each solution idea against:

  • Assumption count: Fewer assumptions = lower risk
  • Cost to test: Cheapest to learn from first
  • Outcome potential: Does it connect clearly to the desired outcome?
  • Scope: Can it be shipped in one sprint, or does it require a quarter?

Step 6 — Prioritize Which Opportunity to Tackle

If there are multiple opportunities, recommend which to tackle first using:

  • Evidence strength: Which opportunity has the most research support?
  • Outcome contribution: Which opportunity, if solved, most directly drives the desired outcome?
  • Solvability: Which opportunity do we have the clearest solution for?

Avoid: selecting an opportunity because you already have a solution in mind (solution-first thinking).

Step 7 — OST Output

Present the full OST as a structured tree (text-based, ready to paste into Notion or a whiteboard tool). Include:

  • Desired outcome
  • All opportunities with sub-opportunities
  • 2–3 solution ideas per leaf opportunity
  • Prioritization recommendation with rationale
  • Next discovery step: which assumption to test first

Offer to save the OST and opportunity prioritization to memory/user-profile.md.

Frequently asked questions

What does the Opportunity Solution Tree AI skill do?

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.

Why use Opportunity Solution Tree on TypingMind?

Because you install it once and use it with any model. Opportunity Solution Tree is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Opportunity Solution Tree in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Productfculty-aipm/PM-Copilot-by-Product-Faculty/tree/main/skills/opportunity-solution-tree. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Opportunity Solution Tree?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Opportunity Solution Tree?

As many as you like. As long as a model supports skills, you can use Opportunity Solution Tree with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Opportunity Solution Tree AI skill free?

It is published on GitHub by Productfculty-aipm. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇