PostMortem AI
Docs

How PostMortem AI works

Written for humans and AI agents alike -- every claim here matches /llms.txt and the actual running code, not a roadmap.

The core loop

Record incident evidence (alerts, logs, deploys, metrics, human notes, customer reports), generate an AI-drafted postmortem, publish it once a named human approves. Every account is a single user's own incidents -- no shared organizations yet.

Grounded drafting -- the actual guarantee

The drafting model is given numbered evidence entries and told to cite the entry number behind every claim. Independently of what the model says about its own citations, code re-verifies every citation against the real evidence list before anything is stored. A claim with no valid citation is replaced with a fixed "Not established by the recorded evidence." marker, or dropped. This verification step can only remove or replace the model's text -- it never adds anything.

Publishing always records a named human approver; the database itself refuses to mark a postmortem published without one.

Longer writeup with the exact verification steps: How postmortem drafting is grounded, mechanically. Real, unedited output on a public incident: what our tool drafted from GitHub's August 2026 outage.

RAG -- similar past incidents

When drafting, the system retrieves your own previously published postmortems that are semantically similar to the current incident (via embeddings, cosine similarity) and shows them to the model as reference context. This context is clearly labeled and is never citable -- the grounding check above only ever validates citations against the current incident's own numbered evidence, so a retrieved past incident can never become the source for a claim.

MCP -- backend, database, and frontend

The backend exposes an MCP server (/mcp) with tools for both founders (platform summary, payment-claim review, a defense-in-depth read-only SQL tool) and clients (incidents, evidence, drafting, publishing, similar-incident search) -- the same business logic and the same authorization rules as the REST API, not a second implementation. The frontend federates to it at /api/mcp, under the caller's own session.

Automatic evidence via webhook

Every account has its own real, rotatable webhook URL -- posting JSON to it from any monitoring tool, alert, script, or CI job creates a new incident or appends evidence to an existing open one, the same write path and paywall as the authenticated app itself. The generic shape works with whatever your stack already sends, not just a pre-approved integration list.

PagerDuty has a dedicated adapter (account settings has the exact URL) that parses PagerDuty's own v3 webhook payload directly -- point a PagerDuty webhook subscription at it and triggered/acknowledged/ resolved events create, and later resolve, the matching incident automatically. Datadog's webhook payload is entirely user-templated on Datadog's side (it has no fixed schema to adapt to), so its integration is a documented JSON template for Datadog's own payload field, pointed at the generic webhook above -- also in account settings.

Reliability

A real circuit breaker (closed/open/half-open) wraps the drafting model -- after repeated failures, further calls fail fast instead of repeatedly hitting an unhealthy provider, and an alert can fire to a configured webhook. Every draft attempt is logged in a queryable table (provider, latency, success or failure), not just described.

Anti-abuse

Login attempts are rate-limited per account and per IP. Creating incidents and drafting postmortems (the AI-cost-incurring action) are separately rate-limited per account. Registration and login can require a CAPTCHA (Cloudflare Turnstile) when configured.

Payments

Every account gets one incident fully free -- record evidence, run AI extraction, and draft a real grounded postmortem with no card required, so you can see the actual output before deciding anything. Publishing it, or creating a second incident, requires an active subscription. For clients anywhere in the world, an international SWIFT wire (USD/GBP/EUR) or UPI (India) works today -- submit the transaction reference and the founder reviews and approves it personally, usually quickly. Self-serve card checkout via Stripe is built but not switched on for real payments yet; when it is, it'll appear as an option automatically, without anything else here needing to change. Not happy after subscribing? Email the founder within 14 days of your first charge and it's refunded -- the same personal review as approving a payment, on any rail.

What this isn't

  • Doesn't auto-publish anything -- publishing is always a deliberate human action.
  • Doesn't estimate cost, revenue, or customer-impact figures the evidence didn't state.
  • Has real, documented setup paths for PagerDuty and Datadog (above) but not for other monitoring vendors -- any other tool can still be pointed at the generic webhook, un-adapted.
  • Doesn't support teams or organizations yet -- each account is a single person's own incidents.

Back to PostMortem AI