{
  "spec": "quick-html/v0",
  "id": "kpi-scorecard",
  "version": "0.1.0",
  "name": "KPI Scorecard",
  "description": "Executive one-page KPI scorecard for monthly business reviews: headline stat tiles with deltas, a KPI table with targets, progress bars and status chips, then highlights and attention lists. Pick it for MBRs, board packs and monthly metric roll-ups.",
  "useWhen": [
    "kpi scorecard",
    "monthly business review",
    "mbr one-pager",
    "metrics report",
    "kpi dashboard",
    "board pack metrics",
    "maandrapportage",
    "kpi-overzicht",
    "monatsbericht",
    "tableau de bord"
  ],
  "format": "printable",
  "theme": "data-reporting",
  "audience": [
    "exec",
    "finance",
    "pmo"
  ],
  "tags": [
    "kpi",
    "dashboard",
    "scorecard",
    "metrics",
    "monthly"
  ],
  "language": "en",
  "page": {
    "size": "A4",
    "orientation": "portrait"
  },
  "modules": [
    "edit-overlay",
    "print-helper"
  ],
  "slots": [
    {
      "name": "doc-title",
      "type": "text",
      "required": true,
      "example": "KPI Scorecard — Aurora Software B.V. — July 2026",
      "notes": "Browser tab title; used as the download filename."
    },
    {
      "name": "company-name",
      "type": "text",
      "required": true,
      "example": "Aurora Software B.V."
    },
    {
      "name": "period",
      "type": "text",
      "required": true,
      "example": "July 2026",
      "notes": "Reporting period shown in the masthead chip."
    },
    {
      "name": "prepared-line",
      "type": "text",
      "required": true,
      "example": "Prepared 14 Aug 2026 · FP&A — S. Jansen",
      "notes": "Preparation date + owning team/person; keep under ~60 chars."
    },
    {
      "name": "highlights-content",
      "type": "html",
      "required": true,
      "example": "<ul><li>NRR at 108,4% — seat expansion added € 11k MRR.</li><li>Gross churn fell to 1,9%, the lowest since January.</li></ul>",
      "notes": "<ul> with 2–4 one-line <li>; lead each bullet with the number."
    },
    {
      "name": "attention-content",
      "type": "html",
      "required": true,
      "example": "<ul><li>New logos at 23 vs 26 target — SDR hiring starts 1 Sep.</li><li>CAC payback at 21,4 months vs 18,0 ceiling.</li></ul>",
      "notes": "<ul> with 2–4 one-line <li>; name the issue AND the corrective action."
    },
    {
      "name": "footnote-text",
      "type": "text",
      "required": false,
      "example": "MRR and churn from the finance mart (dbt snapshot of 4 Aug 2026) · targets per the 2026 operating plan v2.1.",
      "notes": "Sources, definitions, sample sizes. Lives inside the footnote optional block."
    },
    {
      "name": "footer-note",
      "type": "text",
      "required": false,
      "example": "Confidential — Aurora Software B.V. · management reporting"
    }
  ],
  "repeats": [
    {
      "name": "tile",
      "description": "One headline stat tile in the top row.",
      "min": 3,
      "max": 4,
      "slots": [
        {
          "name": "tile-label",
          "type": "text",
          "required": true,
          "example": "MRR",
          "notes": "Short small-caps label; keep under ~24 chars."
        },
        {
          "name": "tile-value",
          "type": "text",
          "required": true,
          "example": "€ 412k",
          "notes": "Headline figure with its unit: '€ 412k', '108,4%', '23'."
        },
        {
          "name": "tile-delta",
          "type": "text",
          "required": true,
          "example": "+€ 9k",
          "notes": "Signed change vs prior month ('+€ 9k', '−0,3 pp'); the template prints 'vs prior month' after it."
        },
        {
          "name": "tile-delta-class",
          "type": "text",
          "required": true,
          "example": "delta delta-green",
          "notes": "EXACTLY one of: 'delta delta-green', 'delta delta-amber', 'delta delta-red'. Green = good — also when the value went down (e.g. churn)."
        }
      ]
    },
    {
      "name": "kpi",
      "description": "One row of the KPI table.",
      "min": 3,
      "max": 14,
      "slots": [
        {
          "name": "kpi-name",
          "type": "text",
          "required": true,
          "example": "Monthly recurring revenue",
          "notes": "Keep under ~28 chars; put thresholds in kpi-unit ('% within 4 h'), not in the name."
        },
        {
          "name": "kpi-unit",
          "type": "text",
          "required": true,
          "example": "€ thousand",
          "notes": "Tiny muted unit note under the name: '€ thousand', '%, trailing 12 m', '# customers'. Append '· ceiling' when lower is better."
        },
        {
          "name": "kpi-actual",
          "type": "text",
          "required": true,
          "example": "412",
          "notes": "Number only — the unit lives in kpi-unit. Same decimals as kpi-target."
        },
        {
          "name": "kpi-target",
          "type": "text",
          "required": true,
          "example": "405",
          "notes": "Number only, same decimals as kpi-actual."
        },
        {
          "name": "kpi-delta",
          "type": "text",
          "required": true,
          "example": "+9",
          "notes": "actual − prior month, signed with '+' or '−', same decimals as the row."
        },
        {
          "name": "kpi-bar-style",
          "type": "text",
          "required": true,
          "example": "width:84%",
          "notes": "Exactly 'width:NN%' — integer NN = actual ÷ target × 100, rounded, capped at 120. No spaces."
        },
        {
          "name": "kpi-status",
          "type": "text",
          "required": true,
          "example": "On track",
          "notes": "One of: 'On track', 'Watch', 'Off track' — must agree with kpi-chip-class."
        },
        {
          "name": "kpi-chip-class",
          "type": "text",
          "required": true,
          "example": "chip chip-green",
          "notes": "EXACTLY one of: 'chip chip-green', 'chip chip-amber', 'chip chip-red'."
        }
      ]
    }
  ],
  "optionals": [
    {
      "name": "footnote",
      "description": "Footnote strip for sources, definitions and sample sizes. Remove only when there is nothing to cite."
    }
  ],
  "changelog": [
    {
      "version": "0.1.0",
      "date": "2026-08-14",
      "notes": "Initial release: executive monthly KPI scorecard with stat tiles, target/progress table, status chips and highlights/attention panels."
    }
  ],
  "agentInstructions": "COMPUTE EVERY NUMBER YOURSELF, then re-check: kpi-delta = actual − prior month (signed: '+9', '−0,3'); tile deltas must equal their matching table rows. kpi-bar-style is exactly 'width:NN%' (integer NN, no spaces), NN = actual ÷ target × 100, rounded, capped at 120 — same formula for lower-is-better KPIs (churn, CAC payback): the bar shows how much of the ceiling is used; the chip carries the judgment. kpi-chip-class is EXACTLY one of 'chip chip-green' | 'chip chip-amber' | 'chip chip-red'; tile-delta-class EXACTLY one of 'delta delta-green' | 'delta delta-amber' | 'delta delta-red'. Colour marks performance, not direction: green = good vs target even when the value went DOWN (falling churn = green); amber = borderline (within ~5% of target); red = clearly off. kpi-status must match the chip: On track / Watch / Off track. Mirror the placeholder formats: decimal comma, '€ 412k', true minus '−', consistent decimals within a row, units only in kpi-unit. Keep ONE page: 3–14 KPI rows (drop the least material beyond 14), 2–4 crisp bullets per panel — shorten highlights before cutting KPIs. Delete all data-example tiles and rows. Unknown values: leave [PLACEHOLDER] and tell the user to fill them via the built-in Edit button; remove the footnote block only when there is nothing to cite.",
  "license": "MIT",
  "authors": [
    {
      "github": "bvrln"
    }
  ]
}
