# How to Measure the Success of Product Discovery Using PM Skills: A Quantitative Framework

> Measure product discovery success using PM skills and a quantitative framework. Track interview coverage, assumption validation, and metric growth with structured markdown artifacts.

- Repository: [Pawel Huryn/pm-skills](https://github.com/phuryn/pm-skills)
- Tags: how-to-guide
- Published: 2026-06-14

---

**You can measure product discovery success by tracking quantitative signals emitted from each phase of the PM Skills framework—including interview coverage rates, assumption validation percentages, and North Star metric growth—using the structured markdown artefacts generated by skills like `summarize-interview` and `metrics-dashboard`.**

Product discovery is a **continuous loop** of learning, yet without concrete metrics, teams cannot validate whether their research is actually reducing risk. The **phuryn/pm-skills** repository provides a standardized set of prompt-driven skills that not only guide discovery through structured interviews and assumption mapping, but also generate predictable markdown artefacts that serve as data sources. By parsing these outputs from skills such as `summarize-interview` and `opportunity-solution-tree`, you can instrument a lightweight analytics layer to objectively measure the success of product discovery across every phase.

## The Discovery Loop Architecture

The PM Skills framework structures discovery as a pipeline: **Customer Research → Assumption Mapping → Prioritization → Opportunity-Solution Trees → Experiment Design**. Each phase uses specific skills defined in `pm-product-discovery/skills/` that emit standardized markdown tables, enabling you to extract quantitative success signals automatically.

### Customer Research Metrics

The `summarize-interview` skill processes raw interview transcripts and produces structured summaries including JTBD (Jobs-to-be-Done) analysis and satisfaction signals. According to [`pm-product-discovery/skills/summarize-interview/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-discovery/skills/summarize-interview/SKILL.md), this skill outputs explicit "Action Items" rows that you can count programmatically.

**Key success signals:**
- **Interview coverage**: Total number of interviews completed per sprint
- **Actionability rate**: Percentage of interviews generating at least one action item
- **Satisfaction extraction**: Average satisfaction rating parsed from transcript summaries

### Assumption Risk and Impact Scoring

After research, the `identify-assumptions-existing` and `identify-assumptions-new` skills surface risky assumptions across value, usability, viability, and feasibility dimensions. The `prioritize-assumptions` skill—defined in [`pm-product-discovery/skills/prioritize-assumptions/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-discovery/skills/prioritize-assumptions/SKILL.md)—then generates an **Impact × Risk matrix** that ranks assumptions by effort and strategic fit.

**Key success signals:**
- **Assumption inventory**: Total assumptions identified per discovery cycle
- **High-risk concentration**: Percentage of assumptions classified as high-impact
- **Prioritization efficiency**: Effort-to-impact ratio of selected top-N assumptions (typically top 5)

### Opportunity-to-Solution Conversion

The `opportunity-solution-tree` skill creates hierarchical maps connecting desired outcomes to opportunities, solutions, and experiments. As implemented in [`pm-product-discovery/skills/opportunity-solution-tree/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-discovery/skills/opportunity-solution-tree/SKILL.md), this skill produces tree structures where you can count nodes at each layer.

**Key success signals:**
- **Opportunity breadth**: Number of opportunities surfaced per desired outcome
- **Solution diversity**: Number of solutions per opportunity (target ≥ 3)
- **Experiment conversion rate**: Percentage of opportunities that progress to the experiment layer

## Tracking Experiment and North Star Metrics

### Experiment Success Rates

The `brainstorm-experiments-existing` and `brainstorm-experiments-new` skills generate concrete experiment briefs containing hypotheses, methods, and success thresholds. By comparing the number of experiments launched versus designed, you calculate the **discovery velocity**.

**Key success signals:**
- **Design-to-launch ratio**: Experiments launched versus experiments designed
- **Validation rate**: Percentage of experiments that validate versus invalidate assumptions
- **Learning velocity**: Assumptions tested per week

### North Star Health Monitoring

The `metrics-dashboard` skill, defined in [`pm-product-discovery/skills/metrics-dashboard/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-discovery/skills/metrics-dashboard/SKILL.md), produces a full product-metrics specification including North Star, input metrics, health metrics, and business metrics. This output follows a predictable schema with columns for "Metric | Definition | Data Source" that you can parse automatically.

**Key success signals:**
- **North Star growth**: Delta percentage per period against baseline
- **Input metric target attainment**: Percentage of input metrics hitting predetermined targets
- **System health**: Volume of critical-metric alerts per week

## Automating Metrics Collection from Skill Artefacts

All PM Skills emit **markdown artefacts** with predictable table structures. You can pipe these into a data collection script to compute success metrics without manual transcription.

### Example: Parsing Interview Outputs

When you invoke the interview skill:

```markdown
/interview summarize —  
We interviewed 5 enterprise buyers about our AI-meeting-notes product.  
(Attach transcript.txt)

```

Claude returns a markdown table. Extract actionable insights by counting rows starting with `- ` in the "Action Items" section:

```python
import re

def extract_action_items(summary_md):
    # Match the Action Items section in SKILL.md output

    pattern = r'## Action Items\n((?:- .*\n)+)'

    match = re.search(pattern, summary_md)
    if match:
        return len(match.group(1).strip().split('\n'))
    return 0

```

### Example: Calculating Assumption Risk

For the prioritization skill:

```markdown
/prioritize-assumptions —  
Assumptions:  
1. Users will adopt a new note-taking UI.  
2. AI will correctly extract action items.  
3. Pricing model will be subscription-based.  

```

The output includes an Impact × Risk matrix. Parse this to tally high-impact, low-risk assumptions:

```python
import pandas as pd

def count_high_impact_assumptions(matrix_md):
    # Parse the markdown table into a DataFrame

    df = pd.read_csv(pd.io.common.StringIO(matrix_md), sep='|', skipinitialspace=True)
    df.columns = [c.strip() for c in df.columns]
    
    # Filter for high impact, low risk

    critical = df[(df['Impact'] == 'High') & (df['Risk'] == 'High')]
    return len(critical)

```

## Orchestrating End-to-End Discovery with the /discover Command

The `/discover` command chains multiple skills into a complete discovery workflow, making it the ideal instrumentation point for **cycle time metrics**. When you run `/discover <product-idea>`, Claude automatically invokes:

1. `brainstorm-ideas-new` → generates ideas
2. `identify-assumptions-new` → lists assumptions  
3. `prioritize-assumptions` → ranks top 5
4. `opportunity-solution-tree` → maps outcomes to experiments
5. `metrics-dashboard` → defines North Star and supporting metrics

By timestamping the start (first interview) and end (experiment launch), you derive the **discovery cycle time**. You can also calculate **learning retention** by tracking how many assumptions survive from initial identification through to experiment validation.

### Example Automation Script

The following Python script demonstrates how to automate metric collection across the full discovery loop:

```python
import pathlib, json, subprocess, time
from datetime import datetime

def run_skill(command):
    """Simulate calling the Claude CLI for a skill."""
    result = subprocess.check_output(["claude", "run", command])
    return result.decode()

# Track cycle time

start_time = datetime.now()

# 1. Interview summary

summary_md = run_skill("/interview summarize — attach transcript.txt")
actions = [line for line in summary_md.splitlines() if line.startswith("- ")]
action_count = len(actions)

# 2. Prioritize assumptions  

assumptions_md = run_skill("/prioritize-assumptions — ...")

# Parse matrix to count high-impact assumptions...

# 3. Build OST

ost_md = run_skill("/opportunity-solution-tree — ...")
opportunity_count = ost_md.count("Opportunity:")

# 4. Metrics dashboard

metrics_md = run_skill("/metrics-dashboard — ...")

# Calculate cycle time

cycle_time = (datetime.now() - start_time).days

print(f"Discovery cycle completed: {cycle_time} days")
print(f"Action items generated: {action_count}")
print(f"Opportunities identified: {opportunity_count}")

```

## Summary

- **Measure interview success** by tracking action item generation rates and satisfaction scores from the `summarize-interview` skill outputs in [`pm-product-discovery/skills/summarize-interview/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-discovery/skills/summarize-interview/SKILL.md).
- **Quantify assumption risk** using the Impact × Risk matrix from `prioritize-assumptions` to calculate high-impact assumption percentages and effort-to-impact ratios.
- **Validate opportunity generation** by counting solutions per opportunity (target ≥ 3) and tracking experiment conversion rates from the `opportunity-solution-tree` skill.
- **Monitor strategic health** by parsing the North Star and input metric specifications from [`pm-product-discovery/skills/metrics-dashboard/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-discovery/skills/metrics-dashboard/SKILL.md) to track growth percentages and alert volumes.
- **Optimize discovery velocity** by instrumenting the `/discover` command to measure cycle time from first interview to experiment launch and calculate learning retention across the loop.

## Frequently Asked Questions

### What makes the PM Skills framework measurable compared to standard discovery methods?

Standard discovery often produces unstructured notes that resist quantitative analysis. The **phuryn/pm-skills** framework enforces standardized markdown outputs—such as the Impact × Risk matrices in `prioritize-assumptions` and the hierarchical trees in `opportunity-solution-tree`—that follow predictable schemas. Because every skill produces tables with consistent headings like "Metric | Definition | Data Source," you can parse them programmatically to calculate concrete KPIs like assumption validation rates and experiment success ratios.

### How do I automate the collection of discovery metrics from Claude's outputs?

You can automate collection by writing lightweight scripts that parse the markdown artefacts. For example, use regular expressions to count action items in `summarize-interview` outputs, or use Pandas `read_csv` with `sep='|'` to parse the tables from `metrics-dashboard` and `prioritize-assumptions`. Store these parsed values in your analytics warehouse (e.g., Metabase) to visualize trends like "Assumptions → Experiments → Validated" conversion funnels.

### Which metric best indicates healthy product discovery?

While no single metric captures discovery health, the **experiment validation rate** combined with **cycle time** provides the strongest signal. According to the framework's implementation, healthy discovery shows a high percentage of assumptions progressing to experiments (via `brainstorm-experiments`) and validating within short cycle times (measured via the `/discover` command). Additionally, consistent growth in the **North Star metric**—as defined in [`pm-product-discovery/skills/metrics-dashboard/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-discovery/skills/metrics-dashboard/SKILL.md)—indicates that discovery efforts are translating into product outcomes.

### How does the /discover command track end-to-end discovery performance?

The `/discover` command chains five core skills—`brainstorm-ideas-new`, `identify-assumptions-new`, `prioritize-assumptions`, `opportunity-solution-tree`, and `metrics-dashboard`—into a single workflow. By instrumenting this command with timestamps, you can measure **cycle time** (days from interview to experiment launch) and **learning retention** (percentage of assumptions that survive from identification through to experiment). The command's implicit definition in the PM Skills repository serves as the single integration point for measuring the entire discovery loop's efficiency.