--- name: identify-assumptions description: > Assumption mapping expert that identifies, categorizes, and prioritizes product assumptions across 4-8 risk categories using devil's advocate analysis. license: MIT + Commons Clause metadata: version: 1.0.0 author: borghei category: project-management domain: product-discovery updated: 2026-03-04 python-tools: assumption_tracker.py tech-stack: assumption-mapping, risk-matrix, teresa-torres, continuous-discovery --- # Assumption Mapping Expert ## Overview Systematically identify, categorize, and prioritize the assumptions underlying your product decisions. This skill extends Teresa Torres' four risk categories with four additional categories for new products, and uses a devil's advocate approach from PM, Designer, and Engineer perspectives to surface hidden assumptions. ### When to Use - After ideation, before committing to build. - When a product decision "feels right" but has not been validated. - When the team disagrees on risk or priority -- assumptions make disagreements explicit. - Before designing experiments -- test the riskiest assumptions first. ## Risk Categories ### Core 4 Categories (Existing Products) These four categories come from Teresa Torres' *Continuous Discovery Habits* and cover the primary risks for features within an established product: | Category | Question It Answers | Example Assumption | |----------|--------------------|--------------------| | **Value** | Will customers want this? | "Users will prefer AI-generated summaries over manual note-taking." | | **Usability** | Can customers figure out how to use it? | "Users will understand the drag-and-drop interface without a tutorial." | | **Viability** | Can the business sustain this? | "The feature will generate enough upgrades to justify the engineering cost." | | **Feasibility** | Can we build this? | "Our current infrastructure can handle real-time processing at scale." | ### Extended 8 Categories (New Products) For new products, four additional risk categories become critical: | Category | Question It Answers | Example Assumption | |----------|--------------------|--------------------| | **Ethics** | Should we build this? Are there unintended harms? | "Collecting location data will not create privacy concerns for our target segment." | | **Go-to-Market** | Can we reach and acquire customers? | "Our target segment actively searches for solutions on Google, making SEO viable." | | **Strategy & Objectives** | Does this align with where we want to go? | "Entering the SMB market will not dilute our enterprise positioning." | | **Team** | Do we have the right people and skills? | "Our team can learn the required ML skills within the project timeline." | ## Methodology ### Phase 1: Devil's Advocate Assumption Surfacing For each product idea or decision, adopt three adversarial perspectives: **PM Devil's Advocate** "I challenge whether this is worth building." - Is there real demand, or are we projecting our own preferences? - Will this move the metric we care about? - Can we sustain this economically? - Does this align with strategy, or is it a distraction? **Designer Devil's Advocate** "I challenge whether users will actually use this." - Will users discover this feature? - Can they complete the task without help? - Does this add complexity that hurts the overall experience? - Are we designing for edge cases and assuming they are common? **Engineer Devil's Advocate** "I challenge whether we can build and maintain this." - Do we have the technical skills and infrastructure? - What are the hidden dependencies and integration risks? - Can this scale if it succeeds? - What is the ongoing maintenance burden? ### Phase 2: Categorize Each Assumption For each assumption surfaced, assign: | Field | Options | |-------|---------| | **Description** | Clear, specific statement of what must be true | | **Risk Category** | Value / Usability / Viability / Feasibility / Ethics / Go-to-Market / Strategy / Team | | **Confidence** | High (we have strong evidence) / Medium (some evidence, not conclusive) / Low (gut feeling or no evidence) | | **Impact** | 1-10 scale (if this assumption is wrong, how bad is it?) | ### Phase 3: Prioritize Using Impact x Risk Matrix Calculate a risk score for each assumption: ``` Risk Score = Impact x (1 - Confidence) ``` Where confidence maps to: High = 0.8, Medium = 0.5, Low = 0.2 | Impact | Confidence | Risk Score | Meaning | |--------|-----------|------------|---------| | 9 | Low (0.2) | 7.2 | Critical -- test immediately | | 9 | High (0.8) | 1.8 | Important but well-understood | | 3 | Low (0.2) | 2.4 | Low priority | | 3 | High (0.8) | 0.6 | Ignore | ### Phase 4: Classify into Quadrants Place each assumption on a 2x2 matrix: ``` HIGH IMPACT | Proceed with | Test Now Confidence | (highest priority) | ──────────────────────┼────────────────────── | Defer | Investigate (low priority) | (may be important) | LOW IMPACT LOW RISK ◄─────┼─────► HIGH RISK ``` | Quadrant | Impact | Risk | Action | |----------|--------|------|--------| | **Test Now** | High | High | Design an experiment immediately | | **Proceed** | High | Low | Move forward with monitoring | | **Investigate** | Low | High | Gather more data, may upgrade to Test Now | | **Defer** | Low | Low | Accept the risk, revisit if context changes | ### Phase 5: Suggest Tests For each "Test Now" assumption, recommend a validation approach: | Assumption Type | Suggested Test Methods | |----------------|----------------------| | Value assumptions | Customer interviews, fake door test, landing page test | | Usability assumptions | Usability test (5 users), prototype walkthrough | | Viability assumptions | Financial modeling, pricing experiment, unit economics analysis | | Feasibility assumptions | Technical spike, proof of concept, architecture review | | Ethics assumptions | Ethics review board, user consent study, regulatory consultation | | Go-to-Market assumptions | Channel experiment, SEO keyword test, paid ad test | | Strategy assumptions | Strategy review with leadership, competitive analysis | | Team assumptions | Skills assessment, hiring timeline analysis, training feasibility | ## Python Tool: assumption_tracker.py Track and prioritize assumptions using the CLI tool: ```bash # Run with demo data python3 scripts/assumption_tracker.py --demo # Run with custom input python3 scripts/assumption_tracker.py input.json # Output as JSON python3 scripts/assumption_tracker.py input.json --format json ``` ### Input Format ```json { "assumptions": [ { "description": "Users will prefer AI summaries over manual notes", "category": "value", "confidence": "low", "impact": 9 } ] } ``` ### Output Sorted by risk priority with quadrant classification and suggested actions. See `scripts/assumption_tracker.py` for full documentation. ## Output Format ### Assumption Registry | # | Assumption | Category | Confidence | Impact | Risk Score | Quadrant | |---|-----------|----------|-----------|--------|-----------|----------| | 1 | ... | Value | Low | 9 | 7.2 | Test Now | | 2 | ... | Feasibility | Medium | 8 | 4.0 | Test Now | | 3 | ... | Usability | High | 7 | 1.4 | Proceed | | 4 | ... | GTM | Low | 3 | 2.4 | Investigate | ### Action Plan for "Test Now" Assumptions For each assumption in the Test Now quadrant, document: - Assumption description - Why it is high risk - Suggested validation method - Owner and timeline Use `assets/assumption_map_template.md` for the full template. ## Integration with Other Discovery Skills - Use `brainstorm-ideas/` to generate ideas whose assumptions you will map. - Feed "Test Now" assumptions into `brainstorm-experiments/` for experiment design. - Run `pre-mortem/` to catch risks that assumption mapping might miss (especially elephants). ## Troubleshooting | Symptom | Likely Cause | Resolution | |---------|-------------|------------| | All assumptions classified as "Test Now" | Impact scores inflated or confidence levels consistently set to "low" | Calibrate impact scoring with team; use relative ranking (force distribution across quadrants) | | Validation fails with category error | Category string does not match valid set exactly | Use lowercase: `value`, `usability`, `viability`, `feasibility`, `ethics`, `gtm`, `strategy`, `team` | | Risk scores cluster around the same value | Impact and confidence values lack variance across assumptions | Use the full 1-10 impact scale; challenge the team to differentiate high vs. medium vs. low confidence with evidence | | Team generates fewer than 10 assumptions | Devil's Advocate perspectives not applied systematically | Run all three perspectives (PM, Designer, Engineer) independently before combining; use the prompts in Phase 1 | | "Defer" quadrant is empty | All assumptions scored as high impact, or low-impact assumptions not captured | Include operational and edge-case assumptions; not every assumption is existential | | Suggested tests are too generic | Tool uses category-level test suggestions, not assumption-specific ones | Use the category suggestion as a starting point; tailor the test method using `brainstorm-experiments/` skill | | Assumptions not updated after experiments | No feedback loop from experiment results back to assumption tracker | Re-run `assumption_tracker.py` with updated confidence levels after each experiment completes | ## Success Criteria - All product decisions have at least 8-15 explicit assumptions documented before build commitment - Every "Test Now" assumption has an assigned owner, validation method, and timeline - Risk scores are calculated consistently using the Impact x (1 - Confidence) formula - Assumptions are re-scored after each validation experiment (confidence levels update) - At least 80% of "Test Now" assumptions are validated or invalidated before major build decisions - Assumption map is reviewed and updated at every product discovery cycle (weekly or bi-weekly) - The team can articulate the top 3 riskiest assumptions for any active initiative ## Scope & Limitations **In Scope:** - Systematic assumption identification using PM/Designer/Engineer devil's advocate perspectives - 8-category risk classification (Value, Usability, Viability, Feasibility, Ethics, Go-to-Market, Strategy, Team) - Quantitative risk scoring using Impact x (1 - Confidence) formula - Quadrant classification (Test Now, Proceed, Investigate, Defer) with suggested validation methods - Assumption registry with priority sorting and action plan generation **Out of Scope:** - Running validation experiments (see `brainstorm-experiments/` skill) - Product strategy or roadmap decisions (see `execution/outcome-roadmap/`) - Technical feasibility deep-dives or architecture reviews (see `engineering/` skills) - Financial modeling for viability assumptions (see `finance/` domain skills) **Important Caveats:** - Confidence levels (high/medium/low) map to fixed numeric values (0.8/0.5/0.2). This is a simplification; real confidence is continuous. - The quadrant threshold for "high impact" is set at 7/10. Adjust this threshold for your risk tolerance. - Assumption mapping is most effective when done collaboratively (Product Trio), not by a single person. ## Integration Points | Integration | Direction | Description | |------------|-----------|-------------| | `brainstorm-ideas/` | Receives from | Ideas generated become the subjects whose assumptions are mapped | | `brainstorm-experiments/` | Feeds into | "Test Now" assumptions become hypotheses for experiment design | | `pre-mortem/` | Complements | Pre-mortem catches risks that assumption mapping may miss (especially elephants) | | `execution/create-prd/` | Feeds into | Validated assumptions populate the PRD Assumptions section (Section 7) | | `execution/brainstorm-okrs/` | Feeds into | Viability assumptions inform OKR key result selection and confidence levels | | `senior-pm/` | Feeds into | High-impact assumptions feed into portfolio risk registers | ## Tool Reference ### assumption_tracker.py Tracks, scores, and prioritizes product assumptions using an Impact x Risk matrix with quadrant classification. | Flag | Type | Default | Description | |------|------|---------|-------------| | `input_file` | positional | (optional) | Path to JSON file with assumptions array | | `--demo` | flag | off | Run with built-in sample data (8 assumptions across all categories) | | `--format` | choice | `text` | Output format: `text` or `json` | **Input fields per assumption:** - `description` (required): Clear statement of what must be true - `category` (required): One of `value`, `usability`, `viability`, `feasibility`, `ethics`, `gtm`, `strategy`, `team` - `confidence` (required): One of `high`, `medium`, `low` - `impact` (required): Integer 1-10 ## References - Teresa Torres, *Continuous Discovery Habits* (2021) - David J. Bland & Alexander Osterwalder, *Testing Business Ideas* (2019) - Ash Maurya, *Running Lean* (2012) - Marty Cagan, *Inspired* (2018)