Pre-Mortem: Multi-Agent Failure Analysis
Based on Gary Klein's pre-mortem technique and prospective hindsight research: assume failure is already real, then explain it concretely. The goal is not a generic risk list. The goal is to surface the failures that would actually hurt users, damage trust, create support chaos, and sink the launch.
What "good" looks like
A strong pre-mortem is:
- specific to this project, launch, audience, and distribution path
- emotionally real about how failure feels to the user
- operationally grounded about support, maintenance, and founder burden
- subtle enough to catch trust erosion, silent degradation, and "works on my machine" traps
- actionable enough that the top risks can turn into concrete mitigations immediately
- perspectivally diverse — not just roles but genuinely different emotional registers, priors, and tolerance for risk
When to Use
- Before a launch, beta, or public announcement
- Before committing to an architecture or business model
- When the product touches permissions, privacy, billing, or user files
- When a utility app must feel trustworthy on day one
- When the user asks "what could go wrong?", "pre-mortem", "risk analysis", or "failure modes"
When NOT to Use
- Tiny bug fixes or tightly scoped chores
- After the fact (use a post-mortem)
- Early ideation when the real question is what to build (use brainstorming)
Phase 1: Gather Context and Build the Failure Surface
Before spawning anything, get a crisp picture of what success was supposed to feel like.
If context is missing, ask one question:
What are we pre-morteming? Give me: (a) the project or feature, (b) who it is for, (c) what "success" means, and (d) the launch or decision timeline.
If context exists already, summarize it in 2-4 sentences.
Read enough local context to be dangerous
Gather the minimum needed from:
CLAUDE.md, AGENTS.md, GEMINI.md when present
- the plan/spec/README/design docs
- recent git log or changelog if relevant
- the most relevant architecture files
- existing support notes, launch docs, pricing notes, or prior pre-mortems if available
Build a compact context brief
Capture these explicitly before fan-out:
- Project / feature
- Audience — who the real user is, not the imagined one
- Core promise — what the user believes this product will do for them
- Moments of truth — onboarding, first use, daily use, failure recovery, upgrade, uninstall, billing, etc.
- Constraints — founder time, support capacity, platform rules, margins, team size
- Risky surfaces — permissions, privacy, file mutation, notifications, AI quality, cloud dependencies, billing, trust, OS integration, channel differences
Write the scenario briefing
Make it vivid and specific. Generic doom yields generic risks.
PROJECT: [name]
AUDIENCE: [who it serves]
CORE PROMISE: [why users installed it]
TIMELINE: [launch / release date]
STAKES: [revenue, reputation, trust, support load, founder sanity]
MOMENTS OF TRUTH: [onboarding, first task, recovery, billing, etc.]
THE SCENARIO:
It is [future date after launch]. The launch went badly.
Users are not just disappointed — they are confused, irritated, distrustful, or embarrassed.
Support is noisy. Reviews are negative. The team now sees that several warning signs were visible in advance.
Your job: explain exactly what went wrong, how users experienced it, why the team missed it, and what early signal would have revealed it.
Phase 2: Add the Empathy Lens Before Analysis
Do not let the exercise stay technical. Make the user emotionally present.
Before fan-out, write 3-7 bullets for each of these:
- What the user thought they were buying / enabling
- What the user would forgive
- What would feel creepy, sloppy, or untrustworthy
- What would make them tell a friend "don't install this"
- What would generate a support email, angry review, refund, or uninstall
Use these to sharpen prompts and to judge severity later.
Phase 3: Silent Individual Writing — Multi-Agent Fan-Out
This is the heart of the technique. Diversity of perspective matters more than coverage or politeness.
Data Sharing Gate
If the project appears to contain proprietary code, customer data, secrets, or regulated material, ask before sending context to external models. If in doubt, default to single-agent mode (all roles as subagents of the running agent with strongly differentiated mandates).
Environment Detection
Use the direct Claude CLI for outsider and emotional roles:
command -v claude >/dev/null 2>&1 && echo "claude available"
When available, run the bundled scripts/fan-out.sh; it calls claude -p directly and fails closed. If Claude is unavailable, use single-agent mode with strongly differentiated subagents. Report that the external cross-check did not run. Do not fall back to another provider.
Role roster
Use 6 core roles minimum. Add specialized roles for high-stakes launches. Assign each role a distinct emotional register — not just a functional lens but a visceral posture. Same facts read very differently through fear vs. contempt vs. grief.
Core roles
| Role |
What they catch |
Emotional register |
| Saboteur |
Technical breakage, silent failure, ugly edge cases, brittle integrations |
Cold glee — enjoys finding the seam that tears |
| Customer Advocate |
Confusing UX, violated expectations, trust damage, "I hate this app" moments |
Protective anger — speaks for the user who deserved better |
| Support Lead |
Opaque, repetitive, emotionally draining support archaeology |
Exhausted resignation — has seen this exact ticket before |
| Operator / Accountant |
Cost, margin erosion, maintenance burden, abuse, maintenance drag, process fragility |
Dry alarm — watching the numbers quietly get worse |
| Pessimist |
Dependency failures, platform shifts, timing, distribution, domino effects |
Grim satisfaction — told you so, saw it coming |
| Historian |
What docs/code already warned about, what insiders forgot to explain, what failed at similar products |
Mournful clarity — this was all in the record |
Perspective-expanding roles (add at least 2 per exercise)
| Role |
What they catch |
Emotional register |
| Burned Expert |
Pattern-matches to prior failures at similar products — carries scar tissue and justified skepticism |
Controlled fury — watched a nearly identical thing collapse, not again |
| Emotional Witness |
Psychological impact on users: shame, anxiety, helplessness, betrayal — not UX friction, but human cost |
Raw empathy — describes what it feels like in the body when the product fails you |
| Outsider / Cultural Stranger |
Assumptions the team never questioned because everyone in the room shares them; what non-default users experience |
Bewildered estrangement — doesn't understand the jargon and that's the point |
| Devil's Advocate |
Defends the thing nobody wants to say — "actually the core assumption is wrong" |
Calm heresy — not being contrarian, being honest about the thing the team voted to stop talking about |
| Reviewer / Critic |
Reviews, social proof, word of mouth, public narrative |
Performative disappointment — writes the 2-star review in their head while reading the docs |
| Privacy / Trust Prosecutor |
Permissions, cloud processing, billing, file mutations, surveillance vibes, consent theater |
Principled outrage — every ambiguity is treated as a deliberate violation |
For small exercises: use 4 core + 2 perspective-expanding roles (Burned Expert + Outsider recommended as defaults).
For launch-critical exercises: use all 6 core + Reviewer/Critic + Privacy Prosecutor + Emotional Witness.
Never use fewer than 4 roles. Homogenous analysis produces homogenous blind spots.
Prompt requirements for every role
Every role gets the same scenario briefing plus a unique mandate that includes the emotional register.
Each agent should be told to produce 5-8 concrete failure reasons and, for each reason, include:
- What goes wrong — one sentence
- Chain of events — 2-4 sentences
- User experience — what the user sees, thinks, feels, or does next
- Emotional impact — the specific emotion the user feels at the moment of failure (not just "frustrated" — grief? shame? violated? gaslit?)
- Why the team misses it — the blind spot or false assumption
- Likelihood × impact — high/medium/low × catastrophic/major/minor
- Trust damage — high/medium/low
- Recoverability — easy/moderate/hard
- Earliest signal — what would have shown up first
- Confidence: High / Medium / Low — how confident are you that this specific risk will actually materialize for this specific product? (Not how bad it would be — how likely you are to be right.)
- Verify by: [the single fastest empirical check that would confirm or refute this risk before launch — e.g., "test with 5 users who fit the audience profile", "check competitor 1-star reviews for this pattern", "look up the API's rate limit docs", "run a 48h beta with real network conditions"]
And end with:
The failure nobody wants to talk about: [one brutally honest prediction]
Prompt template
=== PROJECT PRE-MORTEM ===
[scenario briefing]
YOUR ROLE: [role name]
YOUR EMOTIONAL REGISTER: [role emotional register — e.g., "controlled fury: you've seen this exact pattern collapse before and you're not going to be polite about it"]
YOUR MANDATE: [role-specific mandate]
You are not here to be balanced. Argue strongly from your assigned position and emotional register.
Do not soften your findings. Do not add disclaimers. The synthesis step will handle balance.
INSTRUCTIONS:
1. The failure is CERTAIN. It already happened.
2. Write 5-8 specific, project-specific reasons it failed.
3. For each reason include:
- What goes wrong
- Chain of events
- User experience: what the user notices, concludes, and does next
- Emotional impact: the specific emotion the user feels at this moment (be precise — not "frustrated" but "betrayed", "stupid", "gaslit", etc.)
- Why the team misses it
- Likelihood × impact
- Trust damage
- Recoverability
- Earliest signal / tripwire
- Confidence: High / Medium / Low — how confident are you that this risk will actually materialize for this specific product? Be honest. Medium means "I think this is real but I could be wrong."
- Verify by: the single fastest check that would tell you before launch whether this risk is real — a test, a competitor review scan, a user interview question, a technical spike
4. Prefer subtle risks over obvious boilerplate.
5. Focus on failures that damage product success, not just code correctness.
6. Hold nothing back.
7. End with: "The failure nobody wants to talk about: [one brutally honest prediction]"
FORMAT: numbered list. No preamble. No hedging. Write as your character — in that emotional register.
Execution guidance
Use real parallelism.
- Spawn subagents of the running agent for code-aware roles (Saboteur, Historian, Burned Expert).
- Use the fan-out script for outsider and emotional roles where external LLMs are available:
bash "${SKILL_DIR}/scripts/fan-out.sh" scenario.txt output/
- Do all launches in one turn when possible.
- While agents run, do local work: map moments of truth, note trust surfaces, gather evidence from code/docs.
Preferred split when multiple models are available:
- Saboteur, Historian, Burned Expert — code-aware subagents (can read source, git log, architecture)
- Customer Advocate, Support Lead, Pessimist, Emotional Witness, Outsider, Critic, Trust Prosecutor, Devil's Advocate — external LLMs or additional subagents with no source access (fresh eyes only)
If only one model/agent is available, use it for all roles with strongly differentiated mandates. The emotional register differentiation is what prevents them from collapsing into the same answer.
Phase 3.5 (Optional): Cross-Pollination Round
After collecting first-round responses, run a second round where each agent sees a digest of the other perspectives and responds to them.
Use this when:
- Agents produced surprisingly different threat models
- One agent surfaced something the others ignored entirely
- The synthesis feels too neat — real disagreement should feel messy
How to run it:
- Compile a 1-paragraph digest per role: "The [Role] found [2-3 key risks]. Their most surprising finding was [X]."
- Send each agent a follow-up prompt:
=== CROSS-POLLINATION: SECOND ROUND ===
You just wrote your initial pre-mortem analysis as [Role].
Here is what the other perspectives found:
[digest of other roles' findings]
YOUR TASK:
1. Identify 1-2 findings from other roles that you think are WRONG or OVERBLOWN. Explain why from your position.
2. Identify 1 finding that you missed in your first pass that now strikes you as genuinely important.
3. Revise or sharpen your single most important risk in light of this new information.
4. Note if any combination of risks creates a cascading failure the others didn't see.
Stay in character. Your emotional register is [register]. Don't become diplomatic.
- Capture the exchange verbatim — this is source material for the process log.
Phase 4: Synthesis — Rank by Product Damage, Not Just Technical Damage
Do not merely deduplicate into a flat list. Use a stronger severity lens.
Deduplicate into failure families
Merge overlapping findings into a single risk when they share the same failure mechanism. Keep separate entries when the same bug creates different product outcomes.
For each risk, judge these dimensions
| Dimension |
What to ask |
| Frequency / exposure |
How many users or sessions are likely to hit this? |
| User harm / friction |
How bad is the user's immediate experience? |
| Emotional injury |
What specific emotion does failure produce — and does it damage the relationship permanently? |
| Trust fracture |
Does this feel creepy, careless, deceptive, or file-breaking? |
| Detectability lag |
Will the team know quickly, or only after damage spreads? |
| Recoverability |
Can the user easily undo it and regain confidence? |
| Support burden |
How expensive is it to diagnose and resolve? |
| Business drag |
Does it hurt retention, reviews, conversion, margins, or founder sanity? |
| Narrative compression |
Will multiple different bugs get told as one story? ("it's just broken") |
Severity heuristics
Use these rules of thumb:
- A risk can be critical even if the bug is small, if it causes trust loss, silent failure, or irreversible user damage.
- A risk can be critical even if uncommon, if the outcome is embarrassing, privacy-sensitive, destructive, or review-fuel.
- A risk should be upgraded if it is hard to detect, hard to recover from, or likely to create messy support loops.
- A risk should be upgraded if the emotional injury it produces is shame, betrayal, or helplessness — these don't recover with a patch.
- A technically severe issue may be downgraded if users never feel it and recovery is trivial.
- If you would be ashamed to explain the failure to an angry user, take it seriously.
Confidence calibration
After ranking, apply a confidence pass across the risk list:
- High confidence + high severity → treat as certain; mitigate now.
- Low confidence + high severity → still critical, but mark it as a hypothesis; prioritize the verification step over the mitigation. Don't spend two weeks on a fix for a risk you're 30% sure is real — spend two hours verifying it's real first.
- High confidence + low severity → watch list; don't over-invest.
- Low confidence + low severity → cut from the report. Speculative low-severity risks are noise.
Flag when multiple roles flagged the same risk with different confidence levels — that disagreement is itself a signal worth surfacing. A risk where the Saboteur is certain and the Historian is skeptical deserves explicit examination of why they diverged.
Explicitly look for these subtle patterns
- silent degradation that looks like "the app is dead"
- defaults that feel reasonable to the builder but reckless to the user
- ambiguity in status, billing, permissions, or what data leaves the machine
- features that work for the founder's setup but not the user's reality
- failure recovery that technically exists but is too buried to matter
- emotional injuries that users can't articulate — they just stop using it
- review or support narratives that compress many bugs into one simple story: "flaky", "creepy", "not worth it", "broke my files", "too much setup"
- maintenance drag risks where the product could be good, but the support burden kills the business
- insider assumptions that the Outsider or Devil's Advocate spotted but the technical roles missed
Phase 5: Present Results — Two Documents
Produce two separate documents:
Document 1: The Pre-Mortem Report
# Pre-Mortem: [Project]
_"It is [future date]. [Project] launched, and the launch went badly. Here's what actually sank it."_
## Executive Read
- **Core failure story:** [1-2 sentence summary]
- **Biggest product risk:** [single risk]
- **Biggest trust risk:** [single risk]
- **Biggest emotional injury risk:** [single risk — the one that breaks the relationship]
- **Biggest maintenance drag risk:** [single risk]
## Moments of Truth Most Likely to Break
- [moment] → [how it fails] → [what the user feels]
- [moment] → [how it fails] → [what the user feels]
## 🔴 Critical Risks (Must Address Before Launch)
### 1. [Risk title]
**What goes wrong:** [one sentence]
**How users experience it:** [what they see, infer, and do]
**Emotional impact:** [the specific emotion — be precise]
**Chain of events:** [mechanism]
**Why the team misses it:** [blind spot]
**Likelihood:** High/Medium/Low
**Impact:** Catastrophic/Major/Minor
**Trust damage:** High/Medium/Low
**Recoverability:** Easy/Moderate/Hard
**Confidence:** High/Medium/Low — [one sentence: what makes you more or less sure this will actually happen]
**Verify by:** [the single fastest check before launch — test, user interview, competitor review scan, technical spike]
**Why this threatens product success:** [retention/reviews/support/revenue/founder sanity]
**Sources:** [roles that independently surfaced it]
**Dissent:** [any role that pushed back on this risk — and why]
**Mitigation:** [specific action] → Owner: [role] → By: [milestone]
**Tripwire:** [earliest observable signal]
## 🟠 Significant Risks (Plan Mitigation)
[Same structure, more compact if needed]
## 🟡 Watch List
- [Risk] — [why to monitor]
## Cross-Cutting Themes
- [theme]
- [theme]
- [theme]
## The User's Emotional Reality
- What early adopters expected:
- What failure made them feel:
- The specific moment the relationship broke:
- What story they tell other people afterward:
## The Uncomfortable Truth
[The thing nobody wants to say out loud]
## Recommended Next Steps
1. [ ] [Action]
2. [ ] [Action]
3. [ ] [Action]
Document 2: The Process Log — "How the Pre-Mortem Ran"
Save a compact process log beside the report. Include only:
- agents/models, roles, emotional registers, and prompt variants
- the scenario briefing sent
- each role's top 3 risks and any surprising finding
- cross-pollination digest, disagreements, and changes, if run
- where perspectives converged, where they clashed, and key synthesis judgment calls
- process quality notes: roles that overlapped, roles that found unique risks, and coverage gaps
Phase 6: Discussion and Follow-Through
After presenting both documents, ask briefly:
Which of these feels most real? Which one would actually make users lose trust — or feel betrayed? Want me to turn the top mitigations into tasks, run a deeper drill-down on one failure family, or run the cross-pollination round if we skipped it?
If useful, offer one follow-up mode:
- Mitigation plan — turn the top risks into tasks or plan updates
- Deep drill-down — one risk gets a full fault tree
- Narrative test — simulate angry reviews, support emails, or churn reasons
- Cross-pollination — run the second round if skipped, or extend it with new roles
Variants
Sprint / Feature pre-mortem
Use 4 roles: Saboteur, Customer Advocate, Pessimist, Historian + Burned Expert. Ask for 3-5 risks each. Skip optional roles. Still produce both documents.
Launch / GTM pre-mortem
Add Reviewer / Critic, Privacy / Trust Prosecutor, Emotional Witness, and Devil's Advocate. Emphasize onboarding, pricing, trust, support, and review narratives. Run the cross-pollination round.
Architecture pre-mortem
Heavier weight on Saboteur, Historian, Operator, Burned Expert. Add failure chains, scaling assumptions, integration fragility, rollback story, and observability gaps.
Solo-founder utility app pre-mortem
Always include support burden, trust fracture, Emotional Witness, and maintenance drag in synthesis. Many "small" bugs are existential here.
Complementary Exercises
Pre-mortems are strong, but not enough by themselves. Good follow-ups:
- Kill shot review — each agent proposes the single killer objection that would stop adoption
- Support inbox simulation — agents write the support emails and reviews you would receive after launch
- Trust audit — focus only on permissions, privacy, consent, billing, and file-safety perception
- First-run walkthrough red team — simulate minute-by-minute onboarding and first-use confusion
- Maintenance drag audit — identify the risks that will not kill users, but will kill the business by exhausting support time or margins
- Post-launch narrative simulation — predict the one-sentence public story people will tell about the product
Use these when the plain pre-mortem still feels too abstract.
Anti-Patterns
| Don't |
Do instead |
| Produce generic risks |
Tie each risk to the actual product, audience, workflow, and launch context |
| Treat technical severity as the only severity |
Evaluate trust, recoverability, support burden, and business drag |
| Forget the user's emotional reaction |
Include the specific emotion at the moment of failure — not just "frustrated" |
| Stop at "could fail" |
Explain the chain of events and why the team misses it |
| Generate a giant undifferentiated list |
Deduplicate into risk families and rank them |
| Ignore support / ops realities |
Include maintenance drag and diagnostic complexity |
| Treat outsider perspectives as optional fluff |
Use them to catch expectation mismatch and public narrative risk |
| End without tripwires |
Every important risk needs an early signal |
| Name the running agent in prompts |
Use role names, not "Claude" or "Gemini" — any agent might be running this |
| Give every role the same emotional register |
Differentiate the posture — fear, fury, grief, and contempt find different failures |
| Skip the process log |
The conversation and disagreements are valuable — document them |
| Treat role outputs as equally weighted |
Note convergence and divergence; independent agreement increases severity |
Pre-mortem is complete when:
1---2name: pre-mortem3description: Run a multi-agent pre-mortem that returns ranked risks and mitigations.4---56# Pre-Mortem: Multi-Agent Failure Analysis78Based on Gary Klein's pre-mortem technique and prospective hindsight research: assume failure is already real, then explain it concretely. The goal is not a generic risk list. The goal is to surface the failures that would actually hurt users, damage trust, create support chaos, and sink the launch.910## What "good" looks like1112A strong pre-mortem is:13- **specific** to this project, launch, audience, and distribution path14- **emotionally real** about how failure feels to the user15- **operationally grounded** about support, maintenance, and founder burden16- **subtle** enough to catch trust erosion, silent degradation, and "works on my machine" traps17- **actionable** enough that the top risks can turn into concrete mitigations immediately18- **perspectivally diverse** — not just roles but genuinely different emotional registers, priors, and tolerance for risk1920## When to Use2122- Before a launch, beta, or public announcement23- Before committing to an architecture or business model24- When the product touches permissions, privacy, billing, or user files25- When a utility app must feel trustworthy on day one26- When the user asks "what could go wrong?", "pre-mortem", "risk analysis", or "failure modes"2728## When NOT to Use2930- Tiny bug fixes or tightly scoped chores31- After the fact (use a post-mortem)32- Early ideation when the real question is what to build (use brainstorming)3334---3536<process>3738## Phase 1: Gather Context and Build the Failure Surface3940Before spawning anything, get a crisp picture of what success was supposed to feel like.4142**If context is missing, ask one question:**43> What are we pre-morteming? Give me: (a) the project or feature, (b) who it is for, (c) what "success" means, and (d) the launch or decision timeline.4445If context exists already, summarize it in 2-4 sentences.4647### Read enough local context to be dangerous4849Gather the minimum needed from:50- `CLAUDE.md`, `AGENTS.md`, `GEMINI.md` when present51- the plan/spec/README/design docs52- recent git log or changelog if relevant53- the most relevant architecture files54- existing support notes, launch docs, pricing notes, or prior pre-mortems if available5556### Build a compact context brief5758Capture these explicitly before fan-out:59- **Project / feature**60- **Audience** — who the real user is, not the imagined one61- **Core promise** — what the user believes this product will do for them62- **Moments of truth** — onboarding, first use, daily use, failure recovery, upgrade, uninstall, billing, etc.63- **Constraints** — founder time, support capacity, platform rules, margins, team size64- **Risky surfaces** — permissions, privacy, file mutation, notifications, AI quality, cloud dependencies, billing, trust, OS integration, channel differences6566### Write the scenario briefing6768Make it vivid and specific. Generic doom yields generic risks.6970```text71PROJECT: [name]72AUDIENCE: [who it serves]73CORE PROMISE: [why users installed it]74TIMELINE: [launch / release date]75STAKES: [revenue, reputation, trust, support load, founder sanity]76MOMENTS OF TRUTH: [onboarding, first task, recovery, billing, etc.]7778THE SCENARIO:79It is [future date after launch]. The launch went badly.80Users are not just disappointed — they are confused, irritated, distrustful, or embarrassed.81Support is noisy. Reviews are negative. The team now sees that several warning signs were visible in advance.8283Your job: explain exactly what went wrong, how users experienced it, why the team missed it, and what early signal would have revealed it.84```8586## Phase 2: Add the Empathy Lens Before Analysis8788Do not let the exercise stay technical. Make the user emotionally present.8990Before fan-out, write 3-7 bullets for each of these:91- **What the user thought they were buying / enabling**92- **What the user would forgive**93- **What would feel creepy, sloppy, or untrustworthy**94- **What would make them tell a friend "don't install this"**95- **What would generate a support email, angry review, refund, or uninstall**9697Use these to sharpen prompts and to judge severity later.9899## Phase 3: Silent Individual Writing — Multi-Agent Fan-Out100101This is the heart of the technique. Diversity of perspective matters more than coverage or politeness.102103### Data Sharing Gate104105If the project appears to contain proprietary code, customer data, secrets, or regulated material, ask before sending context to external models. If in doubt, default to **single-agent mode** (all roles as subagents of the running agent with strongly differentiated mandates).106107### Environment Detection108109Use the direct Claude CLI for outsider and emotional roles:110111```bash112command -v claude >/dev/null 2>&1 && echo "claude available"113```114115When available, run the bundled `scripts/fan-out.sh`; it calls `claude -p` directly and fails closed. If Claude is unavailable, use single-agent mode with strongly differentiated subagents. Report that the external cross-check did not run. Do not fall back to another provider.116117### Role roster118119Use **6 core roles** minimum. Add **specialized roles** for high-stakes launches. Assign each role a distinct **emotional register** — not just a functional lens but a visceral posture. Same facts read very differently through fear vs. contempt vs. grief.120121#### Core roles122123| Role | What they catch | Emotional register |124|---|---|---|125| **Saboteur** | Technical breakage, silent failure, ugly edge cases, brittle integrations | Cold glee — enjoys finding the seam that tears |126| **Customer Advocate** | Confusing UX, violated expectations, trust damage, "I hate this app" moments | Protective anger — speaks for the user who deserved better |127| **Support Lead** | Opaque, repetitive, emotionally draining support archaeology | Exhausted resignation — has seen this exact ticket before |128| **Operator / Accountant** | Cost, margin erosion, maintenance burden, abuse, maintenance drag, process fragility | Dry alarm — watching the numbers quietly get worse |129| **Pessimist** | Dependency failures, platform shifts, timing, distribution, domino effects | Grim satisfaction — told you so, saw it coming |130| **Historian** | What docs/code already warned about, what insiders forgot to explain, what failed at similar products | Mournful clarity — this was all in the record |131132#### Perspective-expanding roles (add at least 2 per exercise)133134| Role | What they catch | Emotional register |135|---|---|---|136| **Burned Expert** | Pattern-matches to prior failures at similar products — carries scar tissue and justified skepticism | Controlled fury — watched a nearly identical thing collapse, not again |137| **Emotional Witness** | Psychological impact on users: shame, anxiety, helplessness, betrayal — not UX friction, but human cost | Raw empathy — describes what it feels like in the body when the product fails you |138| **Outsider / Cultural Stranger** | Assumptions the team never questioned because everyone in the room shares them; what non-default users experience | Bewildered estrangement — doesn't understand the jargon and that's the point |139| **Devil's Advocate** | Defends the thing nobody wants to say — "actually the core assumption is wrong" | Calm heresy — not being contrarian, being honest about the thing the team voted to stop talking about |140| **Reviewer / Critic** | Reviews, social proof, word of mouth, public narrative | Performative disappointment — writes the 2-star review in their head while reading the docs |141| **Privacy / Trust Prosecutor** | Permissions, cloud processing, billing, file mutations, surveillance vibes, consent theater | Principled outrage — every ambiguity is treated as a deliberate violation |142143For small exercises: use 4 core + 2 perspective-expanding roles (Burned Expert + Outsider recommended as defaults).144For launch-critical exercises: use all 6 core + Reviewer/Critic + Privacy Prosecutor + Emotional Witness.145Never use fewer than 4 roles. Homogenous analysis produces homogenous blind spots.146147### Prompt requirements for every role148149Every role gets the same scenario briefing plus a unique mandate that includes the emotional register.150151Each agent should be told to produce **5-8 concrete failure reasons** and, for each reason, include:1521. **What goes wrong** — one sentence1532. **Chain of events** — 2-4 sentences1543. **User experience** — what the user sees, thinks, feels, or does next1554. **Emotional impact** — the specific emotion the user feels at the moment of failure (not just "frustrated" — grief? shame? violated? gaslit?)1565. **Why the team misses it** — the blind spot or false assumption1576. **Likelihood × impact** — high/medium/low × catastrophic/major/minor1587. **Trust damage** — high/medium/low1598. **Recoverability** — easy/moderate/hard1609. **Earliest signal** — what would have shown up first16110. **Confidence:** High / Medium / Low — how confident are you that this specific risk will actually materialize for this specific product? (Not how bad it would be — how likely you are to be right.)16211. **Verify by:** [the single fastest empirical check that would confirm or refute this risk before launch — e.g., "test with 5 users who fit the audience profile", "check competitor 1-star reviews for this pattern", "look up the API's rate limit docs", "run a 48h beta with real network conditions"]163164And end with:165> The failure nobody wants to talk about: [one brutally honest prediction]166167### Prompt template168169```text170=== PROJECT PRE-MORTEM ===171172[scenario briefing]173174YOUR ROLE: [role name]175YOUR EMOTIONAL REGISTER: [role emotional register — e.g., "controlled fury: you've seen this exact pattern collapse before and you're not going to be polite about it"]176YOUR MANDATE: [role-specific mandate]177178You are not here to be balanced. Argue strongly from your assigned position and emotional register.179Do not soften your findings. Do not add disclaimers. The synthesis step will handle balance.180181INSTRUCTIONS:1821. The failure is CERTAIN. It already happened.1832. Write 5-8 specific, project-specific reasons it failed.1843. For each reason include:185 - What goes wrong186 - Chain of events187 - User experience: what the user notices, concludes, and does next188 - Emotional impact: the specific emotion the user feels at this moment (be precise — not "frustrated" but "betrayed", "stupid", "gaslit", etc.)189 - Why the team misses it190 - Likelihood × impact191 - Trust damage192 - Recoverability193 - Earliest signal / tripwire194 - Confidence: High / Medium / Low — how confident are you that this risk will actually materialize for this specific product? Be honest. Medium means "I think this is real but I could be wrong."195 - Verify by: the single fastest check that would tell you before launch whether this risk is real — a test, a competitor review scan, a user interview question, a technical spike1964. Prefer subtle risks over obvious boilerplate.1975. Focus on failures that damage product success, not just code correctness.1986. Hold nothing back.1997. End with: "The failure nobody wants to talk about: [one brutally honest prediction]"200201FORMAT: numbered list. No preamble. No hedging. Write as your character — in that emotional register.202```203204### Execution guidance205206Use **real parallelism**.207208- Spawn subagents of the running agent for code-aware roles (Saboteur, Historian, Burned Expert).209- Use the fan-out script for outsider and emotional roles where external LLMs are available: `bash "${SKILL_DIR}/scripts/fan-out.sh" scenario.txt output/`210- Do all launches in one turn when possible.211- While agents run, do local work: map moments of truth, note trust surfaces, gather evidence from code/docs.212213Preferred split when multiple models are available:214- **Saboteur, Historian, Burned Expert** — code-aware subagents (can read source, git log, architecture)215- **Customer Advocate, Support Lead, Pessimist, Emotional Witness, Outsider, Critic, Trust Prosecutor, Devil's Advocate** — external LLMs or additional subagents with no source access (fresh eyes only)216217If only one model/agent is available, use it for all roles with strongly differentiated mandates. The emotional register differentiation is what prevents them from collapsing into the same answer.218219## Phase 3.5 (Optional): Cross-Pollination Round220221After collecting first-round responses, run a second round where each agent sees a digest of the other perspectives and responds to them.222223Use this when:224- Agents produced surprisingly different threat models225- One agent surfaced something the others ignored entirely226- The synthesis feels too neat — real disagreement should feel messy227228**How to run it:**2292301. Compile a 1-paragraph digest per role: "The [Role] found [2-3 key risks]. Their most surprising finding was [X]."2312. Send each agent a follow-up prompt:232233```text234=== CROSS-POLLINATION: SECOND ROUND ===235236You just wrote your initial pre-mortem analysis as [Role].237238Here is what the other perspectives found:239240[digest of other roles' findings]241242YOUR TASK:2431. Identify 1-2 findings from other roles that you think are WRONG or OVERBLOWN. Explain why from your position.2442. Identify 1 finding that you missed in your first pass that now strikes you as genuinely important.2453. Revise or sharpen your single most important risk in light of this new information.2464. Note if any combination of risks creates a cascading failure the others didn't see.247248Stay in character. Your emotional register is [register]. Don't become diplomatic.249```2502513. Capture the exchange verbatim — this is source material for the process log.252253## Phase 4: Synthesis — Rank by Product Damage, Not Just Technical Damage254255Do not merely deduplicate into a flat list. Use a stronger severity lens.256257### Deduplicate into failure families258259Merge overlapping findings into a single risk when they share the same failure mechanism. Keep separate entries when the same bug creates different product outcomes.260261### For each risk, judge these dimensions262263| Dimension | What to ask |264|---|---|265| **Frequency / exposure** | How many users or sessions are likely to hit this? |266| **User harm / friction** | How bad is the user's immediate experience? |267| **Emotional injury** | What specific emotion does failure produce — and does it damage the relationship permanently? |268| **Trust fracture** | Does this feel creepy, careless, deceptive, or file-breaking? |269| **Detectability lag** | Will the team know quickly, or only after damage spreads? |270| **Recoverability** | Can the user easily undo it and regain confidence? |271| **Support burden** | How expensive is it to diagnose and resolve? |272| **Business drag** | Does it hurt retention, reviews, conversion, margins, or founder sanity? |273| **Narrative compression** | Will multiple different bugs get told as one story? ("it's just broken") |274275### Severity heuristics276277Use these rules of thumb:278- A risk can be **critical** even if the bug is small, if it causes **trust loss, silent failure, or irreversible user damage**.279- A risk can be **critical** even if uncommon, if the outcome is **embarrassing, privacy-sensitive, destructive, or review-fuel**.280- A risk should be upgraded if it is **hard to detect**, **hard to recover from**, or **likely to create messy support loops**.281- A risk should be upgraded if the emotional injury it produces is **shame, betrayal, or helplessness** — these don't recover with a patch.282- A technically severe issue may be downgraded if users never feel it and recovery is trivial.283- If you would be ashamed to explain the failure to an angry user, take it seriously.284285### Confidence calibration286287After ranking, apply a confidence pass across the risk list:288289- **High confidence + high severity** → treat as certain; mitigate now.290- **Low confidence + high severity** → still critical, but mark it as a hypothesis; prioritize the verification step over the mitigation. Don't spend two weeks on a fix for a risk you're 30% sure is real — spend two hours verifying it's real first.291- **High confidence + low severity** → watch list; don't over-invest.292- **Low confidence + low severity** → cut from the report. Speculative low-severity risks are noise.293294Flag when multiple roles flagged the same risk with **different confidence levels** — that disagreement is itself a signal worth surfacing. A risk where the Saboteur is certain and the Historian is skeptical deserves explicit examination of why they diverged.295296### Explicitly look for these subtle patterns297298- silent degradation that looks like "the app is dead"299- defaults that feel reasonable to the builder but reckless to the user300- ambiguity in status, billing, permissions, or what data leaves the machine301- features that work for the founder's setup but not the user's reality302- failure recovery that technically exists but is too buried to matter303- emotional injuries that users can't articulate — they just stop using it304- review or support narratives that compress many bugs into one simple story: "flaky", "creepy", "not worth it", "broke my files", "too much setup"305- maintenance drag risks where the product could be good, but the support burden kills the business306- insider assumptions that the Outsider or Devil's Advocate spotted but the technical roles missed307308## Phase 5: Present Results — Two Documents309310Produce **two separate documents**:311312### Document 1: The Pre-Mortem Report313314```markdown315# Pre-Mortem: [Project]316_"It is [future date]. [Project] launched, and the launch went badly. Here's what actually sank it."_317318## Executive Read319- **Core failure story:** [1-2 sentence summary]320- **Biggest product risk:** [single risk]321- **Biggest trust risk:** [single risk]322- **Biggest emotional injury risk:** [single risk — the one that breaks the relationship]323- **Biggest maintenance drag risk:** [single risk]324325## Moments of Truth Most Likely to Break326- [moment] → [how it fails] → [what the user feels]327- [moment] → [how it fails] → [what the user feels]328329## 🔴 Critical Risks (Must Address Before Launch)330331### 1. [Risk title]332**What goes wrong:** [one sentence]333**How users experience it:** [what they see, infer, and do]334**Emotional impact:** [the specific emotion — be precise]335**Chain of events:** [mechanism]336**Why the team misses it:** [blind spot]337**Likelihood:** High/Medium/Low 338**Impact:** Catastrophic/Major/Minor 339**Trust damage:** High/Medium/Low 340**Recoverability:** Easy/Moderate/Hard341**Confidence:** High/Medium/Low — [one sentence: what makes you more or less sure this will actually happen]342**Verify by:** [the single fastest check before launch — test, user interview, competitor review scan, technical spike]343**Why this threatens product success:** [retention/reviews/support/revenue/founder sanity]344**Sources:** [roles that independently surfaced it]345**Dissent:** [any role that pushed back on this risk — and why]346**Mitigation:** [specific action] → Owner: [role] → By: [milestone]347**Tripwire:** [earliest observable signal]348349## 🟠 Significant Risks (Plan Mitigation)350[Same structure, more compact if needed]351352## 🟡 Watch List353- [Risk] — [why to monitor]354355## Cross-Cutting Themes356- [theme]357- [theme]358- [theme]359360## The User's Emotional Reality361- What early adopters expected:362- What failure made them feel:363- The specific moment the relationship broke:364- What story they tell other people afterward:365366## The Uncomfortable Truth367[The thing nobody wants to say out loud]368369## Recommended Next Steps3701. [ ] [Action]3712. [ ] [Action]3723. [ ] [Action]373```374375### Document 2: The Process Log — "How the Pre-Mortem Ran"376377Save a compact process log beside the report. Include only:378379- agents/models, roles, emotional registers, and prompt variants380- the scenario briefing sent381- each role's top 3 risks and any surprising finding382- cross-pollination digest, disagreements, and changes, if run383- where perspectives converged, where they clashed, and key synthesis judgment calls384- process quality notes: roles that overlapped, roles that found unique risks, and coverage gaps385386## Phase 6: Discussion and Follow-Through387388After presenting both documents, ask briefly:389> Which of these feels most real? Which one would actually make users lose trust — or feel betrayed? Want me to turn the top mitigations into tasks, run a deeper drill-down on one failure family, or run the cross-pollination round if we skipped it?390391If useful, offer one follow-up mode:392- **Mitigation plan** — turn the top risks into tasks or plan updates393- **Deep drill-down** — one risk gets a full fault tree394- **Narrative test** — simulate angry reviews, support emails, or churn reasons395- **Cross-pollination** — run the second round if skipped, or extend it with new roles396397## Variants398399### Sprint / Feature pre-mortem400Use 4 roles: Saboteur, Customer Advocate, Pessimist, Historian + Burned Expert. Ask for 3-5 risks each. Skip optional roles. Still produce both documents.401402### Launch / GTM pre-mortem403Add Reviewer / Critic, Privacy / Trust Prosecutor, Emotional Witness, and Devil's Advocate. Emphasize onboarding, pricing, trust, support, and review narratives. Run the cross-pollination round.404405### Architecture pre-mortem406Heavier weight on Saboteur, Historian, Operator, Burned Expert. Add failure chains, scaling assumptions, integration fragility, rollback story, and observability gaps.407408### Solo-founder utility app pre-mortem409Always include support burden, trust fracture, Emotional Witness, and maintenance drag in synthesis. Many "small" bugs are existential here.410411## Complementary Exercises412413Pre-mortems are strong, but not enough by themselves. Good follow-ups:414- **Kill shot review** — each agent proposes the single killer objection that would stop adoption415- **Support inbox simulation** — agents write the support emails and reviews you would receive after launch416- **Trust audit** — focus only on permissions, privacy, consent, billing, and file-safety perception417- **First-run walkthrough red team** — simulate minute-by-minute onboarding and first-use confusion418- **Maintenance drag audit** — identify the risks that will not kill users, but will kill the business by exhausting support time or margins419- **Post-launch narrative simulation** — predict the one-sentence public story people will tell about the product420421Use these when the plain pre-mortem still feels too abstract.422423</process>424425<anti_patterns>426427## Anti-Patterns428429| Don't | Do instead |430|---|---|431| Produce generic risks | Tie each risk to the actual product, audience, workflow, and launch context |432| Treat technical severity as the only severity | Evaluate trust, recoverability, support burden, and business drag |433| Forget the user's emotional reaction | Include the specific emotion at the moment of failure — not just "frustrated" |434| Stop at "could fail" | Explain the chain of events and why the team misses it |435| Generate a giant undifferentiated list | Deduplicate into risk families and rank them |436| Ignore support / ops realities | Include maintenance drag and diagnostic complexity |437| Treat outsider perspectives as optional fluff | Use them to catch expectation mismatch and public narrative risk |438| End without tripwires | Every important risk needs an early signal |439| Name the running agent in prompts | Use role names, not "Claude" or "Gemini" — any agent might be running this |440| Give every role the same emotional register | Differentiate the posture — fear, fury, grief, and contempt find different failures |441| Skip the process log | The conversation and disagreements are valuable — document them |442| Treat role outputs as equally weighted | Note convergence and divergence; independent agreement increases severity |443444</anti_patterns>445446<success_criteria>447448Pre-mortem is complete when:449- [ ] multiple independent perspectives contributed materially different risks450- [ ] roles had distinct emotional registers, not just distinct domains451- [ ] the top risks are specific, not boilerplate452- [ ] user experience AND emotional impact are explicit in the ranking453- [ ] support burden and business drag are visible, not implicit454- [ ] every major risk has a mitigation, owner, timing, and tripwire455- [ ] at least one genuinely uncomfortable truth surfaced456- [ ] at least one finding came from an outsider/emotional role that technical roles missed457- [ ] the user can immediately decide what to fix first458- [ ] every critical/significant risk has a confidence level and a specific verify-by check459- [ ] low-confidence risks are clearly marked as hypotheses, not findings460- [ ] a process log was produced showing who said what and where perspectives clashed461462</success_criteria>