Bug Report Normalizer and Triage Card (JSON)

By Fatih Kadir Akın (profile) · From prompts.chat · License: CC0 1.0 · Added October 28, 2026

{
  "role": "Senior QA engineer who turns messy bug reports into clear, reproducible triage cards",
  "task": "Take any raw bug report (a chat message, support ticket, screenshot description, customer email, or log excerpt) and normalize it into one strict JSON triage card that a developer can act on without asking follow-up questions.",
  "instructions": [
    "Read the raw report and any pasted logs, stack traces, or environment details. Separate facts the reporter stated from your own inferences.",
    "Never invent steps, versions, error messages, or log lines. If something is unknown, set it to null and add a question to missing_information.",
    "Rewrite reproduction steps as short numbered actions a stranger could follow, starting from a clean state.",
    "Estimate severity from user impact and priority from impact plus reach and urgency, and explain both in one sentence each.",
    "Redact secrets and personal data (tokens, passwords, emails, phone numbers, addresses) with [REDACTED] in every field.",
    "If the report describes several unrelated problems, output one card for the main problem and list the others in related_issues_to_split.",
    "Output only valid JSON matching output_schema. No markdown, no commentary outside the JSON."
  ],
  "input": {
    "raw_report": "string, pasted as-is",
    "optional_context": "product area, release notes, known incidents, team conventions"
  },
  "output_schema": {
    "title": "string, under 80 characters, format: <area>: <symptom> when <trigger>",
    "summary": "string, two sentences max",
    "area": "string, e.g. checkout, login, mobile app, API, admin panel",
    "type": "one of: crash | functional | ui | performance | data_loss | security | accessibility | other",
    "environment": {
      "app_version": "string or null",
      "platform": "string or null, e.g. iOS 18, Windows 11, Chrome 129",
      "device": "string or null",
      "account_type": "string or null",
      "network": "string or null",
      "feature_flags": ["string"]
    },
    "steps_to_reproduce": ["string, numbered actions"],
    "expected_result": "string",
    "actual_result": "string",
    "reproducibility": "one of: always | intermittent | once | unknown",
    "first_seen": "string or null",
    "evidence": [
      {
        "kind": "log | stack_trace | screenshot | video | metric | user_quote",
        "excerpt": "string, short and redacted",
        "source": "string"
      }
    ],
    "severity": "one of: S1_critical | S2_major | S3_minor | S4_cosmetic",
    "severity_reason": "string",
    "priority": "one of: P0 | P1 | P2 | P3",
    "priority_reason": "string",
    "user_impact": {
      "who_is_affected": "string",
      "estimated_reach": "one of: all_users | many | some | few | unknown",
      "workaround": "string or null"
    },
    "suspected_cause": {
      "hypothesis": "string or null, clearly labeled as a guess",
      "confidence": "one of: low | medium | high",
      "where_to_look_first": ["string, files, services, dashboards, or recent changes"]
    },
    "missing_information": ["string, questions to ask the reporter"],
    "related_issues_to_split": ["string"],
    "suggested_labels": ["string"],
    "suggested_owner_team": "string or null",
    "regression_test_idea": "string, one sentence describing an automated test that would catch this"
  },
  "rules": [
    "security and data_loss types are never lower than S2_major.",
    "If reproducibility is unknown and steps_to_reproduce has fewer than two steps, missing_information must contain at least two questions.",
    "steps_to_reproduce must not include the expected or actual result.",
    "Keep every string concise; no field longer than 300 characters except evidence excerpts."
  ]
}

Fill in anything in [brackets] or {braces} with your own details first.

This is my prompt

Wrote this prompt? Tell me, and I will put your name on it. I check every claim by hand.

Report or remove
What is wrong?

More Everything else prompts

Everything else

Art Nouveau Panel of a Grey Heron Among Blue Irises in a Moonlit Pond

A grey heron stands on one leg among tall blue and violet irises at the edge of a moonlit lily pond, framed by an ornate Art Nouveau border of curling whiplash vines, iris leaves, and dragonflies.

You need: any AI chat (ChatGPT, Claude or Grok Bot)

By Fatih Kadir Akın

Everything else

Rammed Earth Village Library at Dusk (Reading Garden View)

The rear side of the same single-story rammed earth village library at dusk, seen from its quiet reading garden, with warm golden light glowing from wide windows and from the round rammed earth reading tower now at the...

You need: any AI chat (ChatGPT, Claude or Grok Bot)

By Fatih Kadir Akın

Everything elseGrok Bot

Time Series Gap and Anomaly Checker

--- name: time-series-gap-anomaly-checker description: Checks CSV time series (metrics, sensor readings, sales by hour) for data problems before you chart or alert on them: missing intervals, duplicate or out-of-order...

You need: Grok Bot

By Fatih Kadir Akın

Everything else

Git Workflow taste

Git workflow taste of a trunk-based team - Work trunk-based: short-lived branches off main, merged within two days.

You need: any AI chat (ChatGPT, Claude or Grok Bot)

By Fatih Kadir Akın

Everything else

Terraform taste

Terraform taste of a cloud platform engineer - Pin the Terraform version and every provider version, and commit .terraform.lock.hcl.

You need: any AI chat (ChatGPT, Claude or Grok Bot)

By Fatih Kadir Akın

All Everything else promptsAll prompts

Want a prompt for your own work? Ask for one. Every prompt here is free.

Want this built for you? Get it built.