How to

How to build an incident and postmortem tracker

The incident is resolved, the doc gets written, and the action items are never seen again. Here is the model behind a tracker that closes that loop, the prompts to build it, and what it takes to run it.

The short answer

An incident and postmortem tracker is four parts: an incident record with a timeline captured during the event, a fixed postmortem template, action items that live outside the document, and a trend view across incidents. The action items are the part that decides whether any of this is worth doing. Items that live inside a postmortem document are never revisited, and the same incident recurs six months later with a new document.

incidents.helix-app.ai

Incidents

1

Open right now

9

Action items overdue

4 min

Median to detect

2

Repeats this quarter

Checkout timeouts, Sev 1

Resolved · 2 hours 14 minutes · 1,400 customers affected

Time to detect
4 minutes
Time to acknowledge
6 minutes
Time to mitigate
38 minutes
Trigger
Connection pool exhausted
Action items
2 of 5 open

Written during, not reconstructed after

  • Repeat Same service, same factor, 11 weeks ago and that action item is still open
  • +38 min Mitigated: pool size raised M. Sandoval
  • +22 min Contributing factor: no alert on pool usage observation
  • +6 min Acknowledged, incident commander assigned R. Iyer
  • +4 min Detected by error rate alert not by a customer, this time
A sketch of one incident. Detection and mitigation are timed separately because they point at different fixes, and the repeat is linked to the unfinished action item from last time.

What matters here

  • The tracker is four parts: incidents with a timeline, a fixed postmortem template, action items outside the document, and a trend view.
  • Action items must be first-class records with owners and due dates. Items inside a document are never revisited.
  • Capture the timeline during the incident, not afterwards. Reconstruction from memory produces a tidier and less true account.
  • Separate the trigger from the contributing factors. Most incidents have one trigger and several conditions that made it possible.
  • Track time to detect and time to mitigate separately from total duration. They point at different fixes.
  • Postmortems must stay blameless in structure, not just in tone. Fields that ask who made the change invite the wrong analysis.

Who this is for

You run engineering, operations or reliability. You already write postmortems. What you want is for the action items to get done, and to be able to see whether the same causes keep coming back.

How it works in practice

From the first alert to the moment the same thing stops happening.

  1. 1

    Severity comes from customer impact

    With the required response, who to notify, and whether a postmortem is mandatory, all attached to the level.

  2. 2

    The timeline is written during, not after

    One field, one click, because nobody writes carefully at 3am. Reconstruction from memory produces a tidier and less true account.

  3. 3

    Four timestamps get captured

    Started, detected, acknowledged, mitigated. The gaps between them are where every useful number comes from.

  4. 4

    The postmortem uses the same template every time

    Trigger separated from contributing factors, because most incidents have one trigger and several conditions, and only the conditions are actionable.

  5. 5

    Action items leave the document

    Their own records, with owners and due dates, chased weekly. Items inside a postmortem are never revisited.

  6. 6

    Repeats get linked to the item that was never finished

    Which is the most persuasive report an operations team can produce.

What the tracker is made of

This is not a folder of documents. It is four parts, and the third is the one that changes anything.

The incident record

Severity, services affected, detection method, and the key timestamps: started, detected, acknowledged, mitigated, resolved. The gaps between those are where the useful numbers come from.

A timeline

Entries added during the incident by whoever is working it, with timestamps, so the postmortem starts from a record rather than from memory.

A fixed postmortem template

The same sections every time: what happened, impact, trigger, contributing factors, what went well, what was difficult, and what we are changing.

Action items

Records in their own right, with an owner, a due date, a priority and a status, linked to the incident but not buried inside it.

These prompts start from a Helix project, which is what handles sign-in, credentials and hosting. Start with Helix

The prompts

Paste these into Claude Code, Codex or Cursor in order. Each one leaves you with something that runs, so you can stop after any step.

  1. Capture it while it is happening

    Severity, and a timeline nobody has to reconstruct.

    In this Helix project, build me an incident and postmortem tracker.
    
    Severity levels go in a config file: for each, the customer impact that
    qualifies, the required response time, who to notify, and whether a
    postmortem is mandatory.
    
    An incident records the title, severity, services affected, customer
    impact, how many customers, how it was detected, the incident commander,
    the communications lead, and four timestamps: started, detected,
    acknowledged, mitigated, plus resolved.
    
    Then a timeline that gets written during the incident, not afterwards.
    Adding an entry has to take one field and one click, because nobody writes
    carefully while an outage is running. Entry types: observation, action,
    decision, communication.
    
    Derive time to detect, time to acknowledge and time to mitigate, and show
    them separately. Total duration alone hides whether the problem is
    monitoring or runbooks, and those need completely different investment.
    
    I sign in through Helix, so do not build a login page. Read the signed-in
    user from the runtime. And do not put any key or connection string in the
    code: if this needs to reach another system, tell me and I will create the
    connection in my workspace.
  2. The postmortem, same shape every time

    So incidents are comparable, and blameless structurally rather than in tone.

    Postmortems use one fixed template: summary, customer impact, timeline
    pre-filled from the live entries, trigger, contributing factors, detection
    analysis, response analysis, what went well, what was difficult, lessons.
    
    Separate the trigger from the contributing factors and allow several
    factors. Most incidents have one trigger and a handful of conditions that
    made it possible or made it worse, and collapsing that into a single root
    cause throws away the actionable half.
    
    Keep the structure blameless. Do not add a field asking who made the
    change. Ask what made the change safe to make and hard to catch. A
    blameless tone attached to a blame-shaped template produces a blame
    analysis anyway, however politely it is worded.
    
    Give it a review state, let people comment on a draft without editing it,
    and publish to a searchable archive tagged by service and factor type.

    Worth knowing. Blamelessness is a property of the fields, not the wording. Remove the field and the analysis changes.

  3. Action items that survive the meeting

    The reason to build any of this.

    Make action items independent records, not bullet points inside a document.
    
    Each has a description, a type (prevent recurrence, improve detection,
    improve response, reduce impact), an owner, a due date, a priority, a
    status, and evidence of completion.
    
    They are created from a postmortem but they live on their own. Publishing
    the postmortem does not close them, because publishing is exactly the
    moment attention leaves the room.
    
    Do not allow an item without a named owner and a due date. An item owned
    by a team is owned by nobody.
    
    Give me an owner view across all incidents, a team view, weekly reminders
    for overdue items, and escalation to a manager past a threshold. Then
    report completion rate by type and team, and the age of the oldest open
    item, which is usually more informative than the average.

    Worth knowing. Items inside a postmortem are never revisited, and the same incident recurs six months later with a fresh document.

  4. Find out whether any of it is working

    Trends, and the repeat detection that makes the case for investment.

    Report incidents by severity, service and month. Tag contributing factors
    from a fixed editable list and report them by frequency. That list tells
    you where to invest.
    
    Then build repeat detection: incidents sharing a service and a contributing
    factor within a window I set. Surface those as repeats.
    
    And when a repeat has an incomplete action item from the earlier incident,
    highlight it loudly. That single connection is the most persuasive report
    an operations team can put in front of a leadership meeting.
    
    Trend time to detect and time to mitigate per service over time. And build
    a quarterly review view that assembles itself: every incident in the
    period, the factors behind them, action item completion, and the repeats.
  5. Connect it to real systems

    The step that turns a working prototype into something with your data in it.

    Now connect it to the systems we actually run, so it works on real data
    rather than the rows you seeded.
    
    Anything in angle brackets is a placeholder. Swap it for whatever we use
    instead, and have the app name the connection it wants rather than assume
    a vendor, so changing my mind later is a config change and not a rewrite.
    
    <Datadog>. Read the alert that fired and when, which is where time to
    detect comes from.
    
    <Jira>. Push action items to where the team actually works, so they are
    not orphaned in a document.
    
    <GitHub>. Read what shipped near the incident, which is the first question
    anybody asks.
    
    <Slack>. Capture the incident channel into the timeline, so it is not
    reconstructed from memory.
    
    <PagerDuty>. Read who was paged and when, which is where time to
    acknowledge actually comes from.
    
    <Statuspage>. Read what customers were told and when, so the timeline
    includes the communications.
    
    <Zendesk>. Link the tickets the incident generated, which is the honest
    measure of customer impact.
    
    <Notion>. Publish the postmortem where engineering already reads, with the
    action items linked back.
    
    Only write where I have said to write. Everything else is read only.
    
    Do not write a key, a token or a connection string anywhere in the code,
    and do not ask me to paste one. Tell me which connections you need and I
    will create each as an authentication in my Helix workspace. Reference
    them by alias.

    Worth knowing. Every name in angle brackets is a placeholder for whatever you run. Helix holds the credential as a workspace authentication, so the app references an alias and never the secret itself.

  6. Ship it

    The last step of every build: a URL, and the right people on it.

    Deploy my app.

    Worth knowing. Your assistant runs helix deploy underneath and the app comes back as a URL. Incident records hold customer impact and frank internal analysis, so set Access Control before sharing to keep the candid parts internal.

What it connects to

The timeline is written by people during the incident. Everything else can be pulled in.

  • Datadog

    Read the alert that fired and when, which is where time to detect comes from.

  • Jira

    Push action items to where the team actually works, so they are not orphaned in a document.

  • GitHub

    Read what shipped near the incident, which is the first question anybody asks.

  • Slack

    Capture the incident channel into the timeline, so it is not reconstructed from memory.

  • PagerDuty

    Read who was paged and when, which is where time to acknowledge actually comes from.

  • Statuspage

    Read what customers were told and when, so the timeline includes the communications.

  • Zendesk

    Link the tickets the incident generated, which is the honest measure of customer impact.

  • Notion

    Publish the postmortem where engineering already reads, with the action items linked back.

Each line says whether the app reads, writes or both. Anything not described as writing should be read only.

Named systems are the ones most teams actually run, not a list of the only ones that work. Swap in whatever you use.

Each connection is an authentication in your Helix workspace, referenced by alias. The app names the connection it wants and never holds the credential, so nothing here ends up in your code and any of it can be rotated or revoked without a redeploy.

Running it for real

The build gets you a working tracker. It holds a candid account of failures and customer impact, so access control and ownership are part of the design.

AI Deployment

Get it to a URL people can open

One command takes the app from your assistant to a live address, so the people who need it get a link rather than instructions for running it locally.

App Security

Put your identity provider in front of it

Incident detail includes customer impact and frank internal analysis. SSO means people sign in with their existing account, and access is scoped so the candid parts stay internal.

App Security

Connect the system of record with managed credentials

Pulling alerts, deploys and service metadata from monitoring and source systems needs real access. Granting it to the app rather than pasting keys into it means credentials can be rotated or revoked without a redeploy.

App Registry

Put a name on it

Every app carries a named owner and an entry IT can see, so the tool does not become nobody's problem when the person who built it changes role.

Cost Management

Know what it costs to run

Per-app spend visibility, with budgets and caps, so an internal tool cannot quietly become a line item nobody can explain.

Questions people ask

What is an incident and postmortem tracker?

It records incidents with a timeline captured during the event, runs postmortems to a fixed template, and tracks the resulting action items as independent records with owners and due dates.

Why should action items live outside the postmortem?

Because publishing the document is the moment attention moves on. Items inside it are never revisited, and the same incident recurs with a new document six months later. Independent records with owners, due dates and reminders are what close the loop.

What is the difference between a trigger and a contributing factor?

The trigger is the change or event that started the incident. Contributing factors are the conditions that made it possible or made it worse, such as a missing alert or a slow rollback. Most incidents have one trigger and several factors, and only the factors are actionable.

How do I keep postmortems blameless?

Structurally. Do not include a field asking who made the change. Ask what made the change safe to make and hard to catch. A blameless tone attached to a blame-shaped template produces a blame analysis anyway.

Which incident metrics are worth tracking?

Time to detect, time to acknowledge and time to mitigate, reported separately rather than as total duration. Slow detection points at monitoring and slow mitigation points at runbooks, and the combined number hides which one you have.

Can I build this without an engineering team?

Yes. The prompts here are written for Claude Code, Codex or Cursor and stage the build. The judgement calls are your severity definitions and your list of contributing factor types.

Last reviewed September 2026.

Build it, then run it properly

Helix is the governed runtime for AI-built apps. Deploy what you build, put SSO in front of it, connect it to your systems with managed credentials, and give it a named owner.