{
 "note": "Apex Instruments is fictional. Every name, figure, and contact is demo data.",
 "generated": "2026-09-08T19:16:39",
 "converter": {
  "order": [
   "LibreOffice headless",
   "Microsoft PowerPoint through AppleScript"
  ],
  "used": [
   "powerpoint-applescript"
  ],
  "log": [
   {
    "path": "libreoffice",
    "ok": false,
    "note": "soffice not installed"
   },
   {
    "path": "powerpoint-applescript",
    "ok": true,
    "note": "apex-meridian-review.pptx"
   },
   {
    "path": "libreoffice",
    "ok": false,
    "note": "soffice not installed"
   },
   {
    "path": "powerpoint-applescript",
    "ok": true,
    "note": "apex-review-analyst.pptx"
   },
   {
    "path": "libreoffice",
    "ok": false,
    "note": "soffice not installed"
   },
   {
    "path": "powerpoint-applescript",
    "ok": true,
    "note": "apex-review-narrative.pptx"
   },
   {
    "path": "libreoffice",
    "ok": false,
    "note": "soffice not installed"
   },
   {
    "path": "powerpoint-applescript",
    "ok": true,
    "note": "apex-review-board.pptx"
   }
  ],
  "note": "LibreOffice is not installed on this machine, so every deck was exported by Microsoft PowerPoint through AppleScript, which opens the file, saves it as PDF and closes it again. The PowerPoint MCP export tool is deliberately not in the path: it is known on this machine to report success without writing a file.",
  "renderer": "PyMuPDF 1.26.5"
 },
 "thresholds": {
  "overflow_tolerance_pt": 3.0,
  "overlap_min_sq_pt": 6.0,
  "text_box_overlap_depth_pt": 2.0,
  "offslide_tolerance_pt": 0.5,
  "contrast_small_text": 4.5,
  "contrast_large_text": 3.0
 },
 "checks": [
  {
   "id": "overflow",
   "name": "Text inside its box",
   "what": "Every glyph run in the exported PDF is matched to the box the generator drew for it. A run reaching more than 3 points past that box, or landing outside every box, is an overflow."
  },
  {
   "id": "overlap",
   "name": "Nothing sitting on anything",
   "what": "Three passes: text against every filled shape drawn after it, text against text owned by another box, and every pair of text boxes against each other. More than 6 square points of overlap counts. The third pass exists because two boxes that overlap can swallow each other's runs and hide the collision from the first two."
  },
  {
   "id": "offslide",
   "name": "Everything on the page",
   "what": "Every recorded shape rectangle is tested against the 960 by 540 point page."
  },
  {
   "id": "contrast",
   "name": "Dark slides stay readable",
   "what": "On every dark slide the rendered pixels under each run of text are sampled and a WCAG contrast ratio is computed. The floor is 4.5 to 1, or 3 to 1 for large text."
  }
 ],
 "fonts": {
  "display": {
   "wanted": "Archivo",
   "using": "Arial",
   "measured": true,
   "substituted": true
  },
  "sans": {
   "wanted": "IBM Plex Sans",
   "using": "Arial",
   "measured": true,
   "substituted": true
  },
  "mono": {
   "wanted": "IBM Plex Mono",
   "using": "Consolas",
   "measured": true,
   "substituted": true
  }
 },
 "dark_variant_layouts": [
  "section-divider",
  "statement",
  "big-number",
  "kpi-row",
  "quote",
  "matrix-2x2",
  "callout-sidebar",
  "full-bleed-statement",
  "closing",
  "appendix-divider",
  "contact"
 ],
 "totals": {
  "overflow": 0,
  "overlap": 0,
  "offslide": 0,
  "contrast": 0
 },
 "clean": true,
 "decks": [
  {
   "key": "base",
   "label": "House build, every layout",
   "pptx": "apex-meridian-review.pptx",
   "pdf": "apex-meridian-review.pdf",
   "pages": 33,
   "slides": 33,
   "type_scale": 1.0,
   "density": "standard",
   "found": {
    "overflow": 0,
    "overlap": 0,
    "offslide": 0,
    "contrast": 0
   },
   "issues": [],
   "pages_detail": [
    {
     "index": 1,
     "id": "title",
     "layout": "title",
     "dark": false,
     "spans": 7,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 2,
     "id": "agenda",
     "layout": "agenda",
     "dark": false,
     "spans": 17,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 3,
     "id": "divider-01",
     "layout": "section-divider",
     "dark": true,
     "spans": 5,
     "min_contrast": 7.19,
     "issues": 0
    },
    {
     "index": 4,
     "id": "units",
     "layout": "big-number",
     "dark": true,
     "spans": 10,
     "min_contrast": 5.53,
     "issues": 0
    },
    {
     "index": 5,
     "id": "kpis",
     "layout": "kpi-row",
     "dark": false,
     "spans": 17,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 6,
     "id": "units-by-product",
     "layout": "bar-chart",
     "dark": false,
     "spans": 24,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 7,
     "id": "what-moved",
     "layout": "two-column",
     "dark": false,
     "spans": 15,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 8,
     "id": "statement-mix",
     "layout": "statement",
     "dark": true,
     "spans": 8,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 9,
     "id": "revenue-trend",
     "layout": "line-chart",
     "dark": false,
     "spans": 28,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 10,
     "id": "divider-02",
     "layout": "section-divider",
     "dark": false,
     "spans": 5,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 11,
     "id": "buying-patterns",
     "layout": "three-column",
     "dark": false,
     "spans": 22,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 12,
     "id": "adoption-signals",
     "layout": "four-up-grid",
     "dark": false,
     "spans": 16,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 13,
     "id": "quote-ops",
     "layout": "quote",
     "dark": true,
     "spans": 9,
     "min_contrast": 5.53,
     "issues": 0
    },
    {
     "index": 14,
     "id": "revenue-mix",
     "layout": "stacked-chart",
     "dark": false,
     "spans": 27,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 15,
     "id": "product-compare",
     "layout": "comparison-table",
     "dark": false,
     "spans": 31,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 16,
     "id": "effort-impact",
     "layout": "matrix-2x2",
     "dark": true,
     "spans": 16,
     "min_contrast": 5.37,
     "issues": 0
    },
    {
     "index": 17,
     "id": "divider-03",
     "layout": "section-divider",
     "dark": true,
     "spans": 5,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 18,
     "id": "service-flow",
     "layout": "process-chain",
     "dark": false,
     "spans": 31,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 19,
     "id": "q3-timeline",
     "layout": "timeline",
     "dark": false,
     "spans": 29,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 20,
     "id": "readiness",
     "layout": "checklist",
     "dark": false,
     "spans": 20,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 21,
     "id": "support-before-after",
     "layout": "before-after",
     "dark": false,
     "spans": 15,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 22,
     "id": "team",
     "layout": "team-grid",
     "dark": false,
     "spans": 37,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 23,
     "id": "service-org",
     "layout": "org-chart",
     "dark": false,
     "spans": 19,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 24,
     "id": "risk-callout",
     "layout": "callout-sidebar",
     "dark": true,
     "spans": 20,
     "min_contrast": 5.37,
     "issues": 0
    },
    {
     "index": 25,
     "id": "divider-04",
     "layout": "section-divider",
     "dark": false,
     "spans": 5,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 26,
     "id": "price-sheet",
     "layout": "pricing-table",
     "dark": false,
     "spans": 33,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 27,
     "id": "roadmap",
     "layout": "roadmap",
     "dark": false,
     "spans": 22,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 28,
     "id": "coverage-map",
     "layout": "map-placeholder",
     "dark": false,
     "spans": 18,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 29,
     "id": "bench-photo",
     "layout": "image-placeholder",
     "dark": false,
     "spans": 11,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 30,
     "id": "the-ask",
     "layout": "full-bleed-statement",
     "dark": true,
     "spans": 4,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 31,
     "id": "closing",
     "layout": "closing",
     "dark": true,
     "spans": 16,
     "min_contrast": 5.53,
     "issues": 0
    },
    {
     "index": 32,
     "id": "appendix-divider",
     "layout": "appendix-divider",
     "dark": true,
     "spans": 6,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 33,
     "id": "contact",
     "layout": "contact",
     "dark": true,
     "spans": 18,
     "min_contrast": 5.7,
     "issues": 0
    }
   ],
   "layouts": 30,
   "layout_names": [
    "agenda",
    "appendix-divider",
    "bar-chart",
    "before-after",
    "big-number",
    "callout-sidebar",
    "checklist",
    "closing",
    "comparison-table",
    "contact",
    "four-up-grid",
    "full-bleed-statement",
    "image-placeholder",
    "kpi-row",
    "line-chart",
    "map-placeholder",
    "matrix-2x2",
    "org-chart",
    "pricing-table",
    "process-chain",
    "quote",
    "roadmap",
    "section-divider",
    "stacked-chart",
    "statement",
    "team-grid",
    "three-column",
    "timeline",
    "title",
    "two-column"
   ],
   "dark_slides": 11
  },
  {
   "key": "analyst",
   "label": "Analyst overlay",
   "pptx": "apex-review-analyst.pptx",
   "pdf": "apex-review-analyst.pdf",
   "pages": 32,
   "slides": 32,
   "type_scale": 0.84,
   "density": "dense",
   "found": {
    "overflow": 0,
    "overlap": 0,
    "offslide": 0,
    "contrast": 0
   },
   "issues": [],
   "pages_detail": [
    {
     "index": 1,
     "id": "title",
     "layout": "title",
     "dark": false,
     "spans": 6,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 2,
     "id": "agenda",
     "layout": "agenda",
     "dark": false,
     "spans": 17,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 3,
     "id": "units",
     "layout": "big-number",
     "dark": true,
     "spans": 10,
     "min_contrast": 5.53,
     "issues": 0
    },
    {
     "index": 4,
     "id": "kpis",
     "layout": "kpi-row",
     "dark": false,
     "spans": 20,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 5,
     "id": "units-by-product",
     "layout": "bar-chart",
     "dark": false,
     "spans": 23,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 6,
     "id": "revenue-trend",
     "layout": "line-chart",
     "dark": false,
     "spans": 28,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 7,
     "id": "revenue-mix",
     "layout": "stacked-chart",
     "dark": false,
     "spans": 26,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 8,
     "id": "price-sheet",
     "layout": "pricing-table",
     "dark": false,
     "spans": 33,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 9,
     "id": "divider-01",
     "layout": "section-divider",
     "dark": true,
     "spans": 5,
     "min_contrast": 6.52,
     "issues": 0
    },
    {
     "index": 10,
     "id": "what-moved",
     "layout": "two-column",
     "dark": false,
     "spans": 12,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 11,
     "id": "divider-02",
     "layout": "section-divider",
     "dark": false,
     "spans": 5,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 12,
     "id": "buying-patterns",
     "layout": "three-column",
     "dark": false,
     "spans": 20,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 13,
     "id": "adoption-signals",
     "layout": "four-up-grid",
     "dark": false,
     "spans": 16,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 14,
     "id": "product-compare",
     "layout": "comparison-table",
     "dark": false,
     "spans": 31,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 15,
     "id": "effort-impact",
     "layout": "matrix-2x2",
     "dark": true,
     "spans": 16,
     "min_contrast": 5.24,
     "issues": 0
    },
    {
     "index": 16,
     "id": "divider-03",
     "layout": "section-divider",
     "dark": true,
     "spans": 5,
     "min_contrast": 7.03,
     "issues": 0
    },
    {
     "index": 17,
     "id": "service-flow",
     "layout": "process-chain",
     "dark": false,
     "spans": 27,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 18,
     "id": "q3-timeline",
     "layout": "timeline",
     "dark": false,
     "spans": 24,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 19,
     "id": "readiness",
     "layout": "checklist",
     "dark": false,
     "spans": 16,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 20,
     "id": "support-before-after",
     "layout": "before-after",
     "dark": false,
     "spans": 13,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 21,
     "id": "team",
     "layout": "team-grid",
     "dark": false,
     "spans": 31,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 22,
     "id": "service-org",
     "layout": "org-chart",
     "dark": false,
     "spans": 19,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 23,
     "id": "risk-callout",
     "layout": "callout-sidebar",
     "dark": true,
     "spans": 19,
     "min_contrast": 5.25,
     "issues": 0
    },
    {
     "index": 24,
     "id": "divider-04",
     "layout": "section-divider",
     "dark": false,
     "spans": 5,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 25,
     "id": "roadmap",
     "layout": "roadmap",
     "dark": false,
     "spans": 19,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 26,
     "id": "coverage-map",
     "layout": "map-placeholder",
     "dark": false,
     "spans": 18,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 27,
     "id": "bench-photo",
     "layout": "image-placeholder",
     "dark": false,
     "spans": 9,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 28,
     "id": "closing",
     "layout": "closing",
     "dark": true,
     "spans": 16,
     "min_contrast": 5.53,
     "issues": 0
    },
    {
     "index": 29,
     "id": "variance-table",
     "layout": "comparison-table",
     "dark": false,
     "spans": 36,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 30,
     "id": "assumptions",
     "layout": "checklist",
     "dark": false,
     "spans": 16,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 31,
     "id": "appendix-divider",
     "layout": "appendix-divider",
     "dark": true,
     "spans": 6,
     "min_contrast": 7.03,
     "issues": 0
    },
    {
     "index": 32,
     "id": "contact",
     "layout": "contact",
     "dark": true,
     "spans": 18,
     "min_contrast": 5.63,
     "issues": 0
    }
   ],
   "layouts": 27,
   "layout_names": [
    "agenda",
    "appendix-divider",
    "bar-chart",
    "before-after",
    "big-number",
    "callout-sidebar",
    "checklist",
    "closing",
    "comparison-table",
    "contact",
    "four-up-grid",
    "image-placeholder",
    "kpi-row",
    "line-chart",
    "map-placeholder",
    "matrix-2x2",
    "org-chart",
    "pricing-table",
    "process-chain",
    "roadmap",
    "section-divider",
    "stacked-chart",
    "team-grid",
    "three-column",
    "timeline",
    "title",
    "two-column"
   ],
   "dark_slides": 8
  },
  {
   "key": "narrative",
   "label": "Narrative overlay",
   "pptx": "apex-review-narrative.pptx",
   "pdf": "apex-review-narrative.pdf",
   "pages": 30,
   "slides": 30,
   "type_scale": 1.18,
   "density": "airy",
   "found": {
    "overflow": 0,
    "overlap": 0,
    "offslide": 0,
    "contrast": 0
   },
   "issues": [],
   "pages_detail": [
    {
     "index": 1,
     "id": "title",
     "layout": "title",
     "dark": false,
     "spans": 7,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 2,
     "id": "agenda",
     "layout": "agenda",
     "dark": false,
     "spans": 17,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 3,
     "id": "divider-01",
     "layout": "section-divider",
     "dark": true,
     "spans": 5,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 4,
     "id": "opener-01",
     "layout": "statement",
     "dark": false,
     "spans": 5,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 5,
     "id": "units",
     "layout": "big-number",
     "dark": true,
     "spans": 10,
     "min_contrast": 5.53,
     "issues": 0
    },
    {
     "index": 6,
     "id": "kpis",
     "layout": "kpi-row",
     "dark": false,
     "spans": 19,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 7,
     "id": "units-by-product",
     "layout": "bar-chart",
     "dark": false,
     "spans": 24,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 8,
     "id": "what-moved",
     "layout": "two-column",
     "dark": false,
     "spans": 18,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 9,
     "id": "statement-mix",
     "layout": "statement",
     "dark": true,
     "spans": 8,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 10,
     "id": "revenue-trend",
     "layout": "line-chart",
     "dark": false,
     "spans": 28,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 11,
     "id": "divider-02",
     "layout": "section-divider",
     "dark": false,
     "spans": 6,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 12,
     "id": "opener-02",
     "layout": "statement",
     "dark": true,
     "spans": 5,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 13,
     "id": "buying-patterns-pattern-one",
     "layout": "statement",
     "dark": false,
     "spans": 6,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 14,
     "id": "buying-patterns-pattern-two",
     "layout": "statement",
     "dark": false,
     "spans": 6,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 15,
     "id": "buying-patterns-pattern-three",
     "layout": "statement",
     "dark": false,
     "spans": 7,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 16,
     "id": "quote-ops",
     "layout": "quote",
     "dark": true,
     "spans": 8,
     "min_contrast": 5.53,
     "issues": 0
    },
    {
     "index": 17,
     "id": "revenue-mix",
     "layout": "stacked-chart",
     "dark": false,
     "spans": 27,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 18,
     "id": "divider-03",
     "layout": "section-divider",
     "dark": true,
     "spans": 5,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 19,
     "id": "opener-03",
     "layout": "statement",
     "dark": false,
     "spans": 6,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 20,
     "id": "service-flow",
     "layout": "process-chain",
     "dark": false,
     "spans": 34,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 21,
     "id": "support-before-after",
     "layout": "before-after",
     "dark": false,
     "spans": 15,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 22,
     "id": "risk-callout",
     "layout": "callout-sidebar",
     "dark": true,
     "spans": 20,
     "min_contrast": 5.37,
     "issues": 0
    },
    {
     "index": 23,
     "id": "divider-04",
     "layout": "section-divider",
     "dark": false,
     "spans": 5,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 24,
     "id": "opener-04",
     "layout": "statement",
     "dark": true,
     "spans": 6,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 25,
     "id": "price-sheet",
     "layout": "pricing-table",
     "dark": false,
     "spans": 33,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 26,
     "id": "roadmap",
     "layout": "roadmap",
     "dark": false,
     "spans": 19,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 27,
     "id": "the-ask",
     "layout": "full-bleed-statement",
     "dark": true,
     "spans": 5,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 28,
     "id": "closing",
     "layout": "closing",
     "dark": true,
     "spans": 16,
     "min_contrast": 5.53,
     "issues": 0
    },
    {
     "index": 29,
     "id": "appendix-divider",
     "layout": "appendix-divider",
     "dark": true,
     "spans": 7,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 30,
     "id": "contact",
     "layout": "contact",
     "dark": true,
     "spans": 21,
     "min_contrast": 5.7,
     "issues": 0
    }
   ],
   "layouts": 20,
   "layout_names": [
    "agenda",
    "appendix-divider",
    "bar-chart",
    "before-after",
    "big-number",
    "callout-sidebar",
    "closing",
    "contact",
    "full-bleed-statement",
    "kpi-row",
    "line-chart",
    "pricing-table",
    "process-chain",
    "quote",
    "roadmap",
    "section-divider",
    "stacked-chart",
    "statement",
    "title",
    "two-column"
   ],
   "dark_slides": 12
  },
  {
   "key": "board",
   "label": "Board overlay",
   "pptx": "apex-review-board.pptx",
   "pdf": "apex-review-board.pdf",
   "pages": 34,
   "slides": 34,
   "type_scale": 1.06,
   "density": "standard",
   "found": {
    "overflow": 0,
    "overlap": 0,
    "offslide": 0,
    "contrast": 0
   },
   "issues": [],
   "pages_detail": [
    {
     "index": 1,
     "id": "title",
     "layout": "title",
     "dark": false,
     "spans": 7,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 2,
     "id": "agenda",
     "layout": "agenda",
     "dark": false,
     "spans": 17,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 3,
     "id": "board-summary",
     "layout": "kpi-row",
     "dark": true,
     "spans": 18,
     "min_contrast": 4.33,
     "issues": 0
    },
    {
     "index": 4,
     "id": "divider-01",
     "layout": "section-divider",
     "dark": true,
     "spans": 5,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 5,
     "id": "units",
     "layout": "big-number",
     "dark": true,
     "spans": 11,
     "min_contrast": 5.53,
     "issues": 0
    },
    {
     "index": 6,
     "id": "kpis",
     "layout": "kpi-row",
     "dark": false,
     "spans": 17,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 7,
     "id": "units-by-product",
     "layout": "bar-chart",
     "dark": false,
     "spans": 24,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 8,
     "id": "what-moved",
     "layout": "two-column",
     "dark": false,
     "spans": 18,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 9,
     "id": "statement-mix",
     "layout": "statement",
     "dark": true,
     "spans": 8,
     "min_contrast": 7.56,
     "issues": 0
    },
    {
     "index": 10,
     "id": "revenue-trend",
     "layout": "line-chart",
     "dark": false,
     "spans": 28,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 11,
     "id": "divider-02",
     "layout": "section-divider",
     "dark": true,
     "spans": 6,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 12,
     "id": "buying-patterns",
     "layout": "three-column",
     "dark": false,
     "spans": 25,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 13,
     "id": "quote-ops",
     "layout": "quote",
     "dark": true,
     "spans": 9,
     "min_contrast": 5.53,
     "issues": 0
    },
    {
     "index": 14,
     "id": "revenue-mix",
     "layout": "stacked-chart",
     "dark": false,
     "spans": 27,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 15,
     "id": "divider-03",
     "layout": "section-divider",
     "dark": true,
     "spans": 5,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 16,
     "id": "service-flow",
     "layout": "process-chain",
     "dark": false,
     "spans": 31,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 17,
     "id": "support-before-after",
     "layout": "before-after",
     "dark": false,
     "spans": 15,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 18,
     "id": "risk-callout",
     "layout": "callout-sidebar",
     "dark": true,
     "spans": 20,
     "min_contrast": 5.57,
     "issues": 0
    },
    {
     "index": 19,
     "id": "divider-04",
     "layout": "section-divider",
     "dark": true,
     "spans": 5,
     "min_contrast": 7.29,
     "issues": 0
    },
    {
     "index": 20,
     "id": "roadmap",
     "layout": "roadmap",
     "dark": false,
     "spans": 23,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 21,
     "id": "the-ask",
     "layout": "full-bleed-statement",
     "dark": true,
     "spans": 4,
     "min_contrast": 7.56,
     "issues": 0
    },
    {
     "index": 22,
     "id": "closing",
     "layout": "closing",
     "dark": true,
     "spans": 16,
     "min_contrast": 5.53,
     "issues": 0
    },
    {
     "index": 23,
     "id": "appendix-divider",
     "layout": "appendix-divider",
     "dark": true,
     "spans": 6,
     "min_contrast": 7.56,
     "issues": 0
    },
    {
     "index": 24,
     "id": "adoption-signals",
     "layout": "four-up-grid",
     "dark": false,
     "spans": 16,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 25,
     "id": "product-compare",
     "layout": "comparison-table",
     "dark": false,
     "spans": 31,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 26,
     "id": "effort-impact",
     "layout": "matrix-2x2",
     "dark": true,
     "spans": 17,
     "min_contrast": 5.57,
     "issues": 0
    },
    {
     "index": 27,
     "id": "q3-timeline",
     "layout": "timeline",
     "dark": false,
     "spans": 29,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 28,
     "id": "readiness",
     "layout": "checklist",
     "dark": false,
     "spans": 20,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 29,
     "id": "team",
     "layout": "team-grid",
     "dark": false,
     "spans": 38,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 30,
     "id": "service-org",
     "layout": "org-chart",
     "dark": false,
     "spans": 19,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 31,
     "id": "price-sheet",
     "layout": "pricing-table",
     "dark": false,
     "spans": 33,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 32,
     "id": "coverage-map",
     "layout": "map-placeholder",
     "dark": false,
     "spans": 18,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 33,
     "id": "bench-photo",
     "layout": "image-placeholder",
     "dark": false,
     "spans": 11,
     "min_contrast": null,
     "issues": 0
    },
    {
     "index": 34,
     "id": "contact",
     "layout": "contact",
     "dark": true,
     "spans": 18,
     "min_contrast": 7.56,
     "issues": 0
    }
   ],
   "layouts": 30,
   "layout_names": [
    "agenda",
    "appendix-divider",
    "bar-chart",
    "before-after",
    "big-number",
    "callout-sidebar",
    "checklist",
    "closing",
    "comparison-table",
    "contact",
    "four-up-grid",
    "full-bleed-statement",
    "image-placeholder",
    "kpi-row",
    "line-chart",
    "map-placeholder",
    "matrix-2x2",
    "org-chart",
    "pricing-table",
    "process-chain",
    "quote",
    "roadmap",
    "section-divider",
    "stacked-chart",
    "statement",
    "team-grid",
    "three-column",
    "timeline",
    "title",
    "two-column"
   ],
   "dark_slides": 14
  }
 ],
 "main_deck_slides": [
  {
   "index": 1,
   "id": "title",
   "layout": "title",
   "dark": false,
   "title": "Meridian Line Review",
   "tags": [
    "core",
    "structural"
   ],
   "png": "out/slides/slide-01-title.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 2,
   "id": "agenda",
   "layout": "agenda",
   "dark": false,
   "title": "Four sections, thirty minutes",
   "tags": [
    "core",
    "structural"
   ],
   "png": "out/slides/slide-02-agenda.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 3,
   "id": "divider-01",
   "layout": "section-divider",
   "dark": true,
   "title": "",
   "tags": [
    "core",
    "structural"
   ],
   "png": "out/slides/slide-03-section-divider.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 4,
   "id": "units",
   "layout": "big-number",
   "dark": true,
   "title": "",
   "tags": [
    "core",
    "numbers"
   ],
   "png": "out/slides/slide-04-big-number.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 5,
   "id": "kpis",
   "layout": "kpi-row",
   "dark": false,
   "title": "Four numbers that set up the rest of this deck",
   "tags": [
    "core",
    "numbers"
   ],
   "png": "out/slides/slide-05-kpi-row.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 6,
   "id": "units-by-product",
   "layout": "bar-chart",
   "dark": false,
   "title": "Field Kit volume is now larger than Bench and Pro combined",
   "tags": [
    "core",
    "numbers"
   ],
   "png": "out/slides/slide-06-bar-chart.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 7,
   "id": "what-moved",
   "layout": "two-column",
   "dark": false,
   "title": "What moved, and what it cost us",
   "tags": [
    "core"
   ],
   "png": "out/slides/slide-07-two-column.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 8,
   "id": "statement-mix",
   "layout": "statement",
   "dark": true,
   "title": "The Field Kit carried the quarter, and it changed the shape of the business while it did.",
   "tags": [
    "breather"
   ],
   "png": "out/slides/slide-08-statement.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 9,
   "id": "revenue-trend",
   "layout": "line-chart",
   "dark": false,
   "title": "Nine straight months above $2.7M, with a July dip after the price change",
   "tags": [
    "core",
    "numbers"
   ],
   "png": "out/slides/slide-09-line-chart.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 10,
   "id": "divider-02",
   "layout": "section-divider",
   "dark": false,
   "title": "",
   "tags": [
    "core",
    "structural"
   ],
   "png": "out/slides/slide-10-section-divider.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 11,
   "id": "buying-patterns",
   "layout": "three-column",
   "dark": false,
   "title": "Customers are buying in three shapes this year",
   "tags": [
    "core",
    "splittable"
   ],
   "png": "out/slides/slide-11-three-column.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 12,
   "id": "adoption-signals",
   "layout": "four-up-grid",
   "dark": false,
   "title": "Four signals we track weekly",
   "tags": [
    "detail"
   ],
   "png": "out/slides/slide-12-four-up-grid.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 13,
   "id": "quote-ops",
   "layout": "quote",
   "dark": true,
   "title": "",
   "tags": [
    "breather"
   ],
   "png": "out/slides/slide-13-quote.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 14,
   "id": "revenue-mix",
   "layout": "stacked-chart",
   "dark": false,
   "title": "Service revenue grew while hardware revenue flattened",
   "tags": [
    "core",
    "numbers"
   ],
   "png": "out/slides/slide-14-stacked-chart.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 15,
   "id": "product-compare",
   "layout": "comparison-table",
   "dark": false,
   "title": "How the three Meridian units compare",
   "tags": [
    "table",
    "detail"
   ],
   "png": "out/slides/slide-15-comparison-table.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 16,
   "id": "effort-impact",
   "layout": "matrix-2x2",
   "dark": true,
   "title": "Effort against impact for the four open programs",
   "tags": [
    "detail"
   ],
   "png": "out/slides/slide-16-matrix-2x2.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 17,
   "id": "divider-03",
   "layout": "section-divider",
   "dark": true,
   "title": "",
   "tags": [
    "core",
    "structural"
   ],
   "png": "out/slides/slide-17-section-divider.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 18,
   "id": "service-flow",
   "layout": "process-chain",
   "dark": false,
   "title": "Five steps from a request to a closed ticket",
   "tags": [
    "core"
   ],
   "png": "out/slides/slide-18-process-chain.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 19,
   "id": "q3-timeline",
   "layout": "timeline",
   "dark": false,
   "title": "What shipped and when",
   "tags": [
    "detail"
   ],
   "png": "out/slides/slide-19-timeline.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 20,
   "id": "readiness",
   "layout": "checklist",
   "dark": false,
   "title": "What is done and what is not, before the October decisions",
   "tags": [
    "detail"
   ],
   "png": "out/slides/slide-20-checklist.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 21,
   "id": "support-before-after",
   "layout": "before-after",
   "dark": false,
   "title": "What changed after the queue was split in July",
   "tags": [
    "core"
   ],
   "png": "out/slides/slide-21-before-after.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 22,
   "id": "team",
   "layout": "team-grid",
   "dark": false,
   "title": "Five people own this account end to end",
   "tags": [
    "detail"
   ],
   "png": "out/slides/slide-22-team-grid.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 23,
   "id": "service-org",
   "layout": "org-chart",
   "dark": false,
   "title": "How escalation runs",
   "tags": [
    "detail"
   ],
   "png": "out/slides/slide-23-org-chart.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 24,
   "id": "risk-callout",
   "layout": "callout-sidebar",
   "dark": true,
   "title": "Bench backlog is the one number moving the wrong way",
   "tags": [
    "core"
   ],
   "png": "out/slides/slide-24-callout-sidebar.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 25,
   "id": "divider-04",
   "layout": "section-divider",
   "dark": false,
   "title": "",
   "tags": [
    "core",
    "structural"
   ],
   "png": "out/slides/slide-25-section-divider.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 26,
   "id": "price-sheet",
   "layout": "pricing-table",
   "dark": false,
   "title": "The price sheet behind the asks",
   "tags": [
    "core",
    "table",
    "numbers"
   ],
   "png": "out/slides/slide-26-pricing-table.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 27,
   "id": "roadmap",
   "layout": "roadmap",
   "dark": false,
   "title": "What we are committing to, and when",
   "tags": [
    "core"
   ],
   "png": "out/slides/slide-27-roadmap.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 28,
   "id": "coverage-map",
   "layout": "map-placeholder",
   "dark": false,
   "title": "Six service regions, two of them behind",
   "tags": [
    "detail"
   ],
   "png": "out/slides/slide-28-map-placeholder.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 29,
   "id": "bench-photo",
   "layout": "image-placeholder",
   "dark": false,
   "title": "Meridian Field Kit, revision B",
   "tags": [
    "detail"
   ],
   "png": "out/slides/slide-29-image-placeholder.png",
   "w": 1280,
   "h": 720
  },
  {
   "index": 30,
   "id": "the-ask",
   "layout": "full-bleed-statement",
   "dark": true,
   "title": "Approve the Field Kit allocation rule before October 1.",
   "tags": [
    "breather"
   ],
   "png": "out/slides/slide-30-full-bleed-statement.png",
   "w": 1280,
   "h": 720
  }
 ],
 "overlay_comparisons": [
  {
   "source": "kpis",
   "views": [
    {
     "overlay": "analyst",
     "png": "out/overlays/kpis-analyst.png",
     "slide": 4,
     "dark": false,
     "layout": "kpi-row",
     "variant": "table form",
     "type_scale": 0.84,
     "density": "dense",
     "w": 1024,
     "h": 576
    },
    {
     "overlay": "narrative",
     "png": "out/overlays/kpis-narrative.png",
     "slide": 6,
     "dark": false,
     "layout": "kpi-row",
     "variant": null,
     "type_scale": 1.18,
     "density": "airy",
     "w": 1024,
     "h": 576
    },
    {
     "overlay": "board",
     "png": "out/overlays/kpis-board.png",
     "slide": 6,
     "dark": false,
     "layout": "kpi-row",
     "variant": null,
     "type_scale": 1.06,
     "density": "standard",
     "w": 1024,
     "h": 576
    }
   ],
   "layout": "kpi-row",
   "title": "Four numbers that set up the rest of this deck"
  },
  {
   "source": "support-before-after",
   "views": [
    {
     "overlay": "analyst",
     "png": "out/overlays/support-before-after-analyst.png",
     "slide": 20,
     "dark": false,
     "layout": "before-after",
     "variant": "table form",
     "type_scale": 0.84,
     "density": "dense",
     "w": 1024,
     "h": 576
    },
    {
     "overlay": "narrative",
     "png": "out/overlays/support-before-after-narrative.png",
     "slide": 21,
     "dark": false,
     "layout": "before-after",
     "variant": null,
     "type_scale": 1.18,
     "density": "airy",
     "w": 1024,
     "h": 576
    },
    {
     "overlay": "board",
     "png": "out/overlays/support-before-after-board.png",
     "slide": 17,
     "dark": false,
     "layout": "before-after",
     "variant": null,
     "type_scale": 1.06,
     "density": "standard",
     "w": 1024,
     "h": 576
    }
   ],
   "layout": "before-after",
   "title": "What changed after the queue was split in July"
  },
  {
   "source": "risk-callout",
   "views": [
    {
     "overlay": "analyst",
     "png": "out/overlays/risk-callout-analyst.png",
     "slide": 23,
     "dark": true,
     "layout": "callout-sidebar",
     "variant": null,
     "type_scale": 0.84,
     "density": "dense",
     "w": 1024,
     "h": 576
    },
    {
     "overlay": "narrative",
     "png": "out/overlays/risk-callout-narrative.png",
     "slide": 22,
     "dark": true,
     "layout": "callout-sidebar",
     "variant": null,
     "type_scale": 1.18,
     "density": "airy",
     "w": 1024,
     "h": 576
    },
    {
     "overlay": "board",
     "png": "out/overlays/risk-callout-board.png",
     "slide": 18,
     "dark": true,
     "layout": "callout-sidebar",
     "variant": null,
     "type_scale": 1.06,
     "density": "standard",
     "w": 1024,
     "h": 576
    }
   ],
   "layout": "callout-sidebar",
   "title": "Bench backlog is the one number moving the wrong way"
  },
  {
   "source": "price-sheet",
   "views": [
    {
     "overlay": "analyst",
     "png": "out/overlays/price-sheet-analyst.png",
     "slide": 8,
     "dark": false,
     "layout": "pricing-table",
     "variant": null,
     "type_scale": 0.84,
     "density": "dense",
     "w": 1024,
     "h": 576
    },
    {
     "overlay": "narrative",
     "png": "out/overlays/price-sheet-narrative.png",
     "slide": 25,
     "dark": false,
     "layout": "pricing-table",
     "variant": null,
     "type_scale": 1.18,
     "density": "airy",
     "w": 1024,
     "h": 576
    },
    {
     "overlay": "board",
     "png": "out/overlays/price-sheet-board.png",
     "slide": 31,
     "dark": false,
     "layout": "pricing-table",
     "variant": null,
     "type_scale": 1.06,
     "density": "standard",
     "w": 1024,
     "h": 576
    }
   ],
   "layout": "pricing-table",
   "title": "The price sheet behind the asks"
  }
 ],
 "fixed": [
  {
   "check": "overflow",
   "found": 34,
   "where": "Title, section number, big number and quote mark, across all four builds",
   "symptom": "The first line of large type sat above the top of the box the generator drew for it, by 3 to 19 points.",
   "cause": "Line spacing was being set tighter than the font's own line box, so the ascender of the first line climbed out of the top of the frame. The analyst overlay made it worse because its leading multiplier of 0.92 was applied after the minimum, not before.",
   "fix": "The generator now refuses any line spacing under 1.16 times the type size, and applies that floor after the overlay leading multiplier."
  },
  {
   "check": "overflow",
   "found": 3,
   "where": "Contact email addresses, the Commercial lane label on the roadmap",
   "symptom": "Text ran outside every recorded box, or landed on the block below it.",
   "cause": "The measurement pass only broke lines at spaces, so a single word wider than its column was counted as one line while PowerPoint broke it into two. The auto shrink never fired.",
   "fix": "The measurement breaks an over-wide word character by character, the way PowerPoint does, so the shrink sees the real line count."
  },
  {
   "check": "overflow",
   "found": 4,
   "where": "Slide titles and body copy at the larger type scales",
   "symptom": "Lines that were measured to fit wrapped to an extra line in the export.",
   "cause": "PIL measures Arial about one percent narrower than PowerPoint sets it, so lines that just fit in the measurement just failed in the render.",
   "fix": "Wrapping happens at 98 percent of the box width."
  },
  {
   "check": "overlap",
   "found": 1,
   "where": "Line chart slide under the narrative overlay",
   "symptom": "The second line of the slide title ran under the takeaway panel.",
   "cause": "The title used the full content width while the chart layouts reserve the right third for the takeaway.",
   "fix": "The three chart layouts cap the title column at the chart column width."
  },
  {
   "check": "overlap",
   "found": 6,
   "where": "KPI cards, title slide, callout sidebar, org chart, map rows",
   "symptom": "At the narrative type scale a wrapped label sat on top of the line below it. The span checks missed it because both runs ended up owned by the same box.",
   "cause": "Cards positioned their second and third lines at fixed offsets from the card top, which only holds at one type scale.",
   "fix": "Added a fifth check that compares every pair of text boxes, then rebuilt those five layouts to flow each block from the measured bottom of the block above it."
  },
  {
   "check": "contrast",
   "found": 7,
   "where": "Matrix quadrant label and callout sidebar label on the dark slides",
   "symptom": "Small orange labels measured 4.08 to 1 against the lighter navy panel, under the 4.5 to 1 floor.",
   "cause": "The accent orange is legible on the full navy ground but not on the raised panel behind it.",
   "fix": "On a dark ground the accent is a drawn rule rather than small type, and those labels moved to the light tint. Nothing on a dark slide now measures under 4.5 to 1."
  },
  {
   "check": "read by eye",
   "found": 2,
   "where": "Checklist and org chart",
   "symptom": "Two defects no automated check can see: the Done and Open labels floated at the bottom of their rows instead of sitting under their items, and the org chart drew no connector between the second and third tiers.",
   "cause": "Found by opening the rendered PNGs and looking at them.",
   "fix": "The state label flows under its item, and the org chart draws a bar and drops between every tier."
  }
 ]
}