Anatomy of AI-Powered Postmortem
Blameless retros with AI: timelines, RCA, contributing factors.

Blameless retros with AI-augmented timelines, root-cause analysis, contributing-factor analysis, and learning loops โ turning every incident into a net improvement in reliability, safety, and team effectiveness.
TL;DRโ
- A modern postmortem turns an incident into an opportunity โ never a witch hunt.
- The flow: Detect โ Contain โ Investigate โ Analyze โ Decide โ Act โ Learn.
- Be blameless, curious, data-driven, clear, actionable, and timely.
- AI is your investigator, analyst, writer, and coach โ not the decision-maker.
- Distinguish a single Root Cause from the many Contributing Factors.
- Close the loop with evaluations that prove your fixes actually worked.
Why this mattersโ
Systems fail. People are human. The real question after an incident isn't "who screwed up?" โ it's "what about our system made this failure possible, and how do we make it impossible (or harmless) next time?" AI shortens the gap between "something broke" and "we've learned and improved" from days to hours โ without diluting the human judgment that matters most.
Bottom line: "We don't rise to the level of our goals. We fall to the level of our systems." โ James Clear
The Big Picture โ The Postmortem Lifecycleโ
Principlesโ
- ๐ค Blameless โ investigate the system, not the people.
- ๐ Curious โ assume there's always something deeper.
- ๐ Data-driven โ evidence beats opinion.
- ๐ช Clear โ anyone in the company can read it.
- โ Actionable โ every finding maps to an owner + due date.
- โฑ๏ธ Timely โ draft within 48 hours; publish within a week.
Bottom line: A postmortem that takes a month is a postmortem nobody reads.
AI Superpowers Throughoutโ
Use AI as a force multiplier at every stage of the lifecycle.
| Capability | What AI does | Where it helps |
|---|---|---|
| ๐งฉ Aggregate | Collect logs, metrics, traces, chats, changes automatically | Investigate |
| ๐ Correlate | Link signals across systems & time with trace_ids | Investigate / Analyze |
| โ๏ธ Summarize | Condense noise into readable narratives & key facts | Analyze / Draft |
| ๐ง Analyze | Find patterns, anomalies, likely causes | Analyze |
| ๐ก Recommend | Suggest actions, owners, prevention | Decide |
๐ก Tip: AI is your investigator, analyst, writer, and coach โ not the decision-maker. Humans own truth, accountability, and tone.
AI-Augmented Incident Timeline (example)โ
AI builds the timeline in seconds by stitching logs, metrics, deploys, and chat.
| Time (UTC) | Event | Source | Detail |
|---|---|---|---|
| ๐ด 14:02:18 | Error rate spike | Datadog | 5xx jumped from 0.2% โ 12% |
| ๐ก 14:02:21 | Latency increase | Datadog | P95 latency 120 ms โ 2.3 s |
| ๐ด 14:02:34 | DB connection errors | Postgres | "too many connections" |
| ๐ต 14:03:05 | Deploy started | GitHub Actions | Release 2025.05.20-1 |
| ๐ 14:03:47 | Feature flag enabled | LaunchDarkly | new_checkout_flow=true |
| ๐ฃ 14:04:02 | DB CPU > 95% | Datadog | db-primary-01 |
| ๐ข 14:05:10 | Rollback deploy | GitHub Actions | Reverted to 2025.05.19-4 |
| ๐ข 14:07:12 | Error rate normalizing | Datadog | 5xx < 1% |
| ๐ข 14:10:45 | Incident stabilized | Ops | Monitoring stable for 10 m |
๐ก Tip: A single shared
trace_idmakes this stitch-up trivial. Without it, expect hours of grep.
Postmortem Template (AI-Assisted)โ
AI can draft 80% of this in minutes. Humans decide the truth, actions, and tone.
| Section | What it captures |
|---|---|
| ๐ Executive Summary | What happened, impact, duration, status. |
| ๐ฅ Impact | Who was affected, what was impacted, severity. |
| โฑ๏ธ Timeline | Chronological sequence of key events. |
| ๐งช What Happened | Technical narrative of the incident. |
| ๐ฏ Root Cause | The one thing that, if fixed, prevents recurrence. |
| ๐งฉ Contributing Factors | The conditions that made it possible. |
| โ What Went Well | What worked. Be proud of it. |
| โ ๏ธ What Didn't Go Well | What didn't work. What we'll improve. |
| ๐ Action Items | Actions, owners, priority, due dates. |
| ๐ก๏ธ Preventive Actions | Systemic changes to prevent recurrence. |
| ๐ Follow-up & Success Criteria | How we'll verify the fix & measure success. |
| ๐ References | Links to dashboards, PRs, docs, tickets. |
AI-Assisted Postmortem Workflowโ
| Step | AI does | Outcome |
|---|---|---|
| ๐จ Trigger | Collects initial signals & context. | Incident channel + ledger started |
| ๐ Data Collection | Aggregates & normalizes all data. | Single artifact for the timeline |
| โฑ๏ธ Timeline | Builds chronological timeline with correlations. | Verified shared narrative |
| ๐ฌ Analysis | Proposes root cause + contributing factors with evidence. | Hypotheses to validate |
| ๐ Draft Postmortem | Generates first draft. Highlights gaps. | Working document for the team |
| ๐ฅ Review & Validate | Answers questions. Suggests clarifications. | Final, human-owned report |
| ๐ Publish & Track | Creates tasks. Tracks progress & impact. | Closed-loop learning |
๐ก Tip: AI accelerates the process. Humans ensure accuracy, empathy, and action.
Data Sources AI Pulls Fromโ
The more sources you correlate, the more accurate your analysis.
| Source | Examples |
|---|---|
| ๐๏ธ Observability | Metrics, logs, APM, traces |
| ๐จ Alerts | PagerDuty, Opsgenie, Datadog, Sentry |
| ๐ Deployments | GitHub Actions, ArgoCD, Terraform |
| ๐๏ธ Feature Flags | LaunchDarkly, Unleash |
| ๐ฌ Chat / Comms | Slack, Teams, incident channel |
| ๐ซ Tickets / Issues | Jira, Linear, GitHub Issues |
| ๐ Runbooks | Read or write actions taken |
| ๐ ๏ธ Infrastructure | CloudWatch, GCP, Azure logs |
๐ก Tip: More sources = better accuracy. Correlated signals beat single logs.
Root Cause & Contributing Factor Analysisโ
Two ideas, often confused:
Root Causeโ
The fundamental issue that, if fixed, would have prevented the incident.
Example: "A database connection leak in the new checkout service caused connection pool exhaustion, leading to cascading failures."
Contributing Factorsโ
The conditions and decisions that made the incident possible โ or made it worse.
- New feature flag enabled without load test
- Insufficient connection pool sizing
- Missing alert on connection utilization
- No auto-scaling on DB tier
- Incomplete runbook for rollback
Classic techniques (AI accelerates each one)โ
5 Whysโ
1. Why did checkout fail? โ DB couldn't accept new connections.
2. Why? โ Connection pool was exhausted.
3. Why? โ Connections weren't returned after use.
4. Why? โ Recent code missed a `client.release()` path.
5. Why? โ No integration test exercised the error branch.
โ Root cause: missing `release()` on error path.
โ Contributing: no test, no pool-utilization alert, no canary.
Fishbone (Ishikawa) โ categories of contributing factorsโ
- People โ On-call training, handoff quality.
- Process โ Change-management, runbooks.
- Technology โ Connection pool, autoscaler, monitoring.
- Environment โ Traffic surge, dependent service.
- Tools โ Feature-flag visibility, deploy speed.
- Measurement โ Missing alert, eval gaps.
๐ก Tip: Focus on the system. Improve the system. A culture of asking "why?" five times is worth more than any AI tool.
Evaluations for Incident Responseโ
Run evals on every P1/P2 incident. Learn and improve the process.
| Eval | Questions | Goal |
|---|---|---|
| โฑ๏ธ Timeliness | Were we alerted quickly? Time to acknowledge? Detection coverage? | Detect in < X minutes |
| ๐ก๏ธ Mitigation effectiveness | Time to mitigate? Blast radius contained? Customer impact reduced? | MTTR < X minutes |
| ๐ฌ Communication | Updates timely & clear? Right channels used? Stakeholders informed? | Clear & empathetic |
| ๐ Postmortem quality | Root cause accurate? Actions specific & measurable? Learning captured? | Actionable & specific |
๐ก Tip: Score yourselves honestly. Trends matter more than any single number.
Drift & Regression Detectionโ
Even after the fix, watch for regressions:
- ๐ Metric drift โ error rate (7-day avg)
- โ Quality drift โ eval score (7-day avg)
- ๐ค Behavior drift โ hallucination rate, response shape
๐ก Tip: Detect early. Alert fast. Prevent the next incident.
(See the Anatomy of AI Observability poster for the full drift-detection toolkit.)
Alerting & Auto-Responseโ
Pair each alert with a runbook and an auto-response where safe.
Alert examplesโ
- ๐ด Critical: Error rate > 3% for 5 m
- ๐ด Critical: Latency P95 > 3 s for 5 m
- ๐ก Warning: Eval score drop > 10%
- ๐ก Warning: Spike in hallucinations
- ๐ต Info: New model deployed
- ๐ต Info: Large config change
Auto-response playbookโ
- Page on-call (with runbook link).
- Triage with AI copilot (
/incident). - Mitigate (rollback, disable flag, scale).
- Communicate status.
- Create incident & timeline.
- Draft postmortem.
- Track actions to completion.
Step-by-Step Setupโ
1. Standardize the incident channelโ
Every incident gets a Slack/Teams channel named inc-YYYY-MM-DD-summary with a pinned ledger.
2. Wire the data sourcesโ
Connect Datadog/Sentry/PagerDuty/GitHub/LaunchDarkly to your AI postmortem agent via MCP or webhooks.
3. Drop in the templatesโ
docs/postmortems/_template.mdrunbooks/_template.md
4. Add a /postmortem slash commandโ
---
description: Generate the first draft of a postmortem
usage: /postmortem <incident_id>
permissions:
allow: ["Read", "WebSearch", "MCP:datadog", "MCP:github", "MCP:slack"]
deny: ["Write"]
---
You are an SRE writing a blameless postmortem.
1. Pull all signals for {{incident_id}} (alerts, logs, traces, deploys, chat).
2. Build an event timeline.
3. Propose Root Cause + Contributing Factors with evidence.
4. Draft the report using docs/postmortems/_template.md.
5. Highlight gaps where humans must verify.
Tone: respectful, curious, system-focused.
5. Ship a /timeline and /runbook commandโ
/timelineโ reconstruct the timeline only./runbook <symptom>โ suggest matching runbook.
6. Add a @postmortem-writer subagentโ
name: postmortem-writer
description: Drafts blameless postmortems with evidence.
model: claude-sonnet-4
tools: [Read, WebSearch, Bash, Grep]
system_prompt: |
You are an SRE. Be blameless, curious, data-driven, clear.
Never name people; refer to roles or teams.
Distinguish Root Cause from Contributing Factors.
Cite sources for every claim.
permissions:
allow: ["Read", "WebSearch"]
deny: ["Write", "Bash(rm -rf *)"]
triggers: ["postmortem", "incident", "RCA"]
7. Define the eval suite for postmortemsโ
postmortem_quality:
- clarity_score: weight: 0.25
- root_cause_accuracy: weight: 0.25
- action_specificity: weight: 0.25
- blameless_tone: weight: 0.15
- timeliness: weight: 0.10
Run it on every published postmortem; trend the scores.
8. Close the loopโ
A monthly review meeting reads the action-item completion rate + eval trend.
Variants for Different Team Settingsโ
๐ค Solo developerโ
- Use
/postmortemfor any outage > 30 min. - Single Markdown file + Git history is your "ledger."
- 1 action item per incident, completed within a week.
๐ฅ Small team (2โ10)โ
- Incident channel +
/postmortemdraft + 30-min review meeting. - Weekly action-item review.
- Shared
docs/postmortems/folder.
๐ข Enterprise / regulatedโ
- Incident commander role.
- Full audit trail (immutable, signed).
- Compliance & legal review gate for severity โฅ P1.
- Quarterly trend analysis across incidents.
- Tie postmortem quality to engineering performance review goals (not individual blame).
๐ Open-source / communityโ
- Public postmortems for outages affecting users.
- Anonymized contributor names.
- Crowdsourced action items via GitHub Issues.
Bottom line: Same lifecycle, escalating governance.
Anatomy of a Single Section โ Zoom In on "What Happened"โ
A great "What Happened" section answers three questions, with citations.
## What Happened
**Trigger.** At 14:02 UTC, link enabled the
`new_checkout_flow` flag for 100% of traffic. The new code path opens
a database connection per request but never releases it on the
404-handler branch.
**Propagation.** Within 90 seconds, the primary checkout DB's
connection pool was exhausted. New requests began failing with
HTTP 5xx (link). Dependent services
(cart, recommendations) backed up because they share the pool.
**Detection & response.** PagerDuty paged the on-call at 14:03:50.
The on-call disabled the feature flag at 14:04:42 and triggered a
rollback at 14:05:10. Error rate normalized by 14:07:12.
**Customer impact.** Approximately 41,000 checkout attempts failed
(8.2% of the window). Revenue impact estimated at ~$28k.
Notice: no names, every claim cited, specific numbers, plain language.
Common Patterns & Recipesโ
Pattern 1 โ /postmortem one-linerโ
/postmortem inc-2025-05-20-checkout-5xx
Pattern 2 โ Blameless rewriteโ
Rewrite the following section in a blameless tone.
Refer to roles, not names. Focus on systems.
<paste section>
Pattern 3 โ Contributing-factor brainstormโ
Given this timeline + root cause, list 5โ7 contributing factors
across people, process, technology, environment, tools, measurement.
For each: evidence, severity, and a candidate preventive action.
Pattern 4 โ Action-item SMART checkโ
Critique each action item: is it Specific, Measurable, Assigned,
Realistic, Time-bound? Suggest improvements.
Pattern 5 โ Eval-driven quality checkโ
Score this postmortem 0โ1 against:
clarity, root-cause accuracy, action specificity, blameless tone, timeliness.
Explain each score with 1 line of evidence.
Pattern 6 โ Pattern detection across incidentsโ
Across the last 10 postmortems in docs/postmortems/, list:
- recurring root-cause themes
- top 3 systemic gaps
- proposed program-level initiatives
Pattern 7 โ Postmortem-as-runbook seedโ
Generate a runbook seed from this postmortem:
- Symptom detection
- First 3 mitigation steps
- Verification checks
- Communication template
Best Practices โ โ
- ๐ค Be blameless and curious โ always.
- ๐ Write for learning, not for politics.
- ๐ฏ Make actions specific & measurable.
- ๐ Review postmortems for trends (quarterly).
- ๐ช Close the loop: measure action impact.
- ๐ Instrument everything with
trace_ids. - โ๏ธ Use consistent templates.
- ๐ค Let AI draft; let humans decide.
Anti-Patterns โโ
- ๐ซ Naming individuals as causes.
- ๐ซ Postmortems with no action items.
- ๐ซ Single root cause forced when many factors contributed.
- ๐ซ Publishing weeks late (insights are stale).
- ๐ซ Same incident, repeat causes (no learning loop).
- ๐ซ AI hallucinations taken as fact without verification.
- ๐ซ Closed-door process for non-sensitive incidents.
Key Metrics Dashboardโ
| Metric | Target |
|---|---|
| โฑ๏ธ MTTR (mean time to resolve) | 42 m or less |
| ๐ MTTD (mean time to detect) | < 6 m |
| ๐ Change failure rate | < 2.1% |
| โญ Eval score (avg postmortem quality) | > 0.92 |
| ๐ค Hallucination rate in drafts | < 1% |
| ๐ Weekly incidents | Trend โ |
| โ Action-item completion rate | > 87% |
| ๐ฐ Cost / incident (eng-hrs + $) | Trend โ |
๐ก Tip: Measure what matters. Improve what you measure.
Troubleshootingโ
| Symptom | Likely cause | Fix |
|---|---|---|
| Postmortems delayed | No template / no SLA | Adopt the template; commit to draft in 48 h |
| Same root causes repeat | Action items never shipped | Monthly action-review meeting |
| Tone slips into blame | No coach / no review | Add "blameless tone" eval; pre-review by an SRE lead |
| Timeline is messy | Sources not correlated | Standardize trace_id across systems |
| AI invents events | No grounding | Force "cite source" in subagent system prompt |
| Actions vague | No SMART check | Add the SMART critique pass |
| No learning | No trends review | Quarterly cross-incident retro |
Quick-Start Checklistโ
- โ Incident channel naming convention
- โ Standard postmortem template
- โ
/postmortemslash command - โ
@postmortem-writersubagent - โ Wired data sources (alerts, deploys, chat, traces)
- โ Eval suite for postmortem quality
- โ Monthly action-review meeting
- โ Quarterly cross-incident retro
๐ง Mantra: Blameless. Curious. Data-driven. Clear. Actionable. Timely.
Starter Configsโ
docs/postmortems/_template.mdโ
# Postmortem: <one-line summary>
**Incident ID:** inc-YYYY-MM-DD-slug
**Severity:** P{1|2|3}
**Status:** Draft | In Review | Published
**Duration:** HH:MM
**Author(s):** @role/@role
**Date Published:**
## Executive Summary
3โ5 sentences. What happened, impact, status.
## Impact
- Users:
- Revenue:
- SLO burn:
## Timeline
| Time (UTC) | Event | Source | Detail |
|---|---|---|---|
## What Happened
Trigger โ propagation โ detection โ response โ recovery.
## Root Cause
The one thing.
## Contributing Factors
- People:
- Process:
- Technology:
- Environment:
- Tools:
- Measurement:
## What Went Well
-
## What Didn't Go Well
-
## Action Items
| # | Action | Owner | Priority | Due |
|---|---|---|---|---|
## Preventive Actions
Systemic, not patch-level.
## Follow-up & Success Criteria
How will we verify the fix and measure success?
## References
- Dashboard: โฆ
- PR: โฆ
- Runbook: โฆ
- Slack thread: โฆ
Repo layoutโ
observability/
โโโ otel-config.yaml
dashboards/
โโโ ai-overview.json
โโโ incidents.json
alerts/
โโโ alerts.yaml
evaluations/
โโโ cases/
โโโ rubrics/
โโโ run-evals.sh
docs/
โโโ runbooks/
โโโ postmortems/
Glossaryโ
- Postmortem โ A structured, blameless write-up of an incident.
- Blameless โ Focus on systems and learning, not individuals.
- Root Cause โ The fundamental issue that, fixed, prevents recurrence.
- Contributing Factors โ Conditions that enabled or worsened the incident.
- MTTD / MTTR โ Mean Time to Detect / Resolve.
- Action Item โ Specific, owned, time-bound corrective work.
- Runbook โ Step-by-step response for a known symptom.
- Eval โ Scored test of a process or output.
- Drift โ Slow regression of metrics, quality, or behavior.
Further Readingโ
- Search: "Google SRE blameless postmortem culture"
- Search: "Etsy 'Debriefing Facilitation Guide'"
- Search: "learning from incidents in software"
- Search: "AI for incident response 2026"
๐ช The Goal & Principlesโ
- ๐ฏ Goal: Turn every incident into a net improvement in reliability, safety, and team effectiveness.
- ๐ Not about blame. We fix systems. People are human.
- ๐งฑ Focus on systems. Systems fail; systems can be improved.
- โป๏ธ Learn continuously. Every incident is data. Every fix is a step forward.
"We don't rise to the level of our goals. We fall to the level of our systems." โ James Clear