Turn incident notes into a structured, blameless post-mortem in Markdown. Copy or download for your wiki or ticket.
After an outage, teams need a shared story: what happened, why, and what changes prevent a repeat. A blameless post-mortem focuses on systems and process — not on finding someone to punish. That honesty is what makes the document useful six months later when memory has faded.
The term comes from aviation and healthcare, where hiding mistakes costs lives. In software, the stakes are usually financial and reputational, but the learning mechanism is the same: if people fear blame, they omit details — and the same failure returns under a new name.
Incidents are expensive in minutes and dollars. A post-mortem converts that cost into institutional knowledge. Without one, you pay twice: once for the outage and again when the untested fix fails. Pair narrative with numbers from the Error Budget Calculator and Downtime Cost Calculator so leadership sees both SLO burn and revenue impact.
Build the timeline from logs, pager timestamps, and chat exports — not from memory alone. Include when customers first reported issues if that precedes internal detection (detection lag is its own action item). Note every status page update with UTC time; communication delays erode trust even when engineering recovery is fast.
Example timeline fragment
14:02 UTC — Synthetic monitor alert: /api/health 503
14:05 UTC — Incident declared SEV2, channel #inc-2026-0315 opened
14:08 UTC — First customer tweet about login failures
14:22 UTC — Root cause identified: bad config deploy
14:35 UTC — Rollback complete; error rate normalizes
14:49 UTC — Status page marked resolved
SEV2 checkout outage, 47 minutes
~18% of checkout attempts failed (EU region). Error budget burn ≈ 47/43.2 min → SLO missed for 30-day window at 99.9%.
Estimated revenue at risk: $6,200 (peak rate $8k/hr × 0.78 hr). Support: 340 tickets, 12 agents × 2 hr overtime ≈ $840.
Label estimates as estimates. Link spreadsheet or calculator assumptions.
Root cause: Connection pool maxConnections lowered in config deploy #8821 without load test.
Contributing: No staging canary; pool metric not on dashboard; on-call runbook outdated; deploy approved during change freeze exception.
Fixing only “bad deploy” without runbook and metrics leaves the system fragile.
Prefer fewer, concrete actions. Each needs an owner (@handle) and due date. “Improve monitoring” is weak; “Add p95 latency alert on checkout-api > 800ms, owner @sam, due 2026-04-15” is strong. Track items in your ticket system; reopen the post-mortem if items slip twice.
This tool formats fields into Markdown. It does not interview witnesses, pull logs, or enforce blameless review facilitation. Schedule a meeting for contested incidents; the document is the output, not the whole process.
Assign a neutral facilitator not involved in the deploy chain. Time-box root cause discussion to prevent infinite “five whys.” Read the timeline aloud once — participants often discover gaps when hearing UTC sequence spoken. End with explicit owners for each action item read back from the doc.
Public summaries should acknowledge impact, apologize without over-promising, state remediation themes, and omit employee names, security details, and vendor contract disputes. Internal docs can include graph screenshots, exact ticket counts, and candid process failures. Generate internal Markdown here; write customer copy separately with comms/legal review.
“Five whys” still works when each why points to a controllable system change. Stop when you reach human error without a process fix — then ask why the process allowed the error (missing review, bad default, alert fatigue). The generator’s root cause field should hold the technical trigger; contributing factors hold the organizational layers.
Store post-mortems in a searchable wiki tagged by service and failure mode. Before changing architecture, search “database failover” — you may find the same lesson paid for twice. Link post-mortems from error budget reviews when burn spikes so patterns surface quarterly, not only during SEV1 adrenaline.
New hires should read the last three post-mortems for their service in week one. That onboarding habit beats abstract reliability training slides.
Record decisions in the generated Markdown; assign scribe separate from facilitator.
| Level | Typical trigger | Post-mortem? |
|---|---|---|
| SEV1 | Core revenue path down for most users | Required within 5 business days |
| SEV2 | Major feature impaired, workaround exists | Required |
| SEV3 | Minor impact, fast fix | Optional brief note |
| Near-miss | Would have been SEV1 if timing differed | Recommended — cheap learning |
Duration alone does not set severity: 25 minutes of total checkout loss may be SEV1; 3 hours of delayed internal reports may be SEV3. Document the severity rationale in the generated doc header.
Incident: Search API 503 · Duration: 38 minutes · SEV2
13:04 UTC — first customer chat report (external signal)
13:19 UTC — monitor alert (MTTD from customer signal = 15 min — action item)
13:22 UTC — incident declared · 13:51 UTC — rollback complete (MTTR from declaration = 29 min)
Impact: 4.2% search error rate × 850k queries in window ≈ 35,700 failed searches; revenue proxy $2,100 using calculator assumptions.
Action items: (1) add canary on search deploy, owner @dev, due 2026-04-20; (2) alert on error rate >2% within 5 min, owner @sre.
Browser-only Markdown formatter — no log ingestion, no automatic timeline from PagerDuty, no blameless facilitation. The review meeting and evidence gathering are the work; this tool standardizes output structure so teams spend time on learning, not formatting.
Customer comms: Status Page Builder · Vendor credit: SLA Credit Claim Pack · Money math: Reliability Money Toolkit · Free Tools.
A structured review after an incident that focuses on systems, process, and learning — not punishing individuals. The goal is to prevent recurrence and improve response.
After customer-impacting outages, near-misses with high blast radius, or events that consumed significant error budget. Many teams require them for SEV1 and SEV2.
UTC removes timezone confusion when engineers, vendors, and customers are distributed. Always label timestamps as UTC or include offset.
Specific, owned, and dated. Weak: improve monitoring. Strong: add synthetic /checkout probe from 3 regions by a fixed date, with a named owner.
Yes when you have a defensible estimate. Link methodology from the Downtime Cost Calculator. Separate measured costs from reputation guesses.
Primary: engineering and ops who execute fixes. Secondary: leadership summary. Customer-facing versions should be shorter and omit sensitive internals.
No. Fields stay in your browser until you copy or download. There is no account and no server-side storage.
Status pages communicate during the incident; post-mortems explain after resolution. Link the final post-mortem when appropriate.