{"slug": "corporate-powerpoint-decks-with-ai-for-free-slides-as-code-qa-as-the-gate", "title": "Corporate PowerPoint decks with AI, for free: slides as code, QA as the gate", "summary": "A developer released PowerPoint Factory, an MIT-licensed open-source tool that generates corporate PowerPoint decks from typed TypeScript slide recipes, with layouts handling geometry so an LLM only supplies content and narrative. Each build runs roughly 40 QA checks with fix hints, produces per-slide PNGs and a contact sheet, and a separate reviewer agent judges the rendered slides; imagery comes from Kubeez generations. The project ships 23 built-in layouts, native editable charts and tables, and an AGENTS.md-driven workflow with a /deck command.", "body_md": "Ask an AI chat to \"make me a board deck\" and you usually get one of three things:\n\n`.pptx` where the text spills off slide 4, the chart is a screenshot, and the closing slide says I wanted a fourth option: **the AI writes the deck, a machine proves it is correct, and a second AI with fresh eyes judges it.** That project is [**PowerPoint Factory**](https://github.com/sebyx07/power-point-factory). It is MIT-licensed and you can clone it today.\n\n*The sample: a 20-slide Q4 board review for Halden Logistics, a fictional company. Every shape, chart and table is native and editable in PowerPoint.*\n\n`AGENTS.md` can drive it. You can also write the recipes by hand: they are just TypeScript.\nEvery slide is a small typed recipe, one file per slide. You pick a layout by the message you want to land, not by where boxes go:\n\n``` js\n// slides/06-margin-bridge.ts\nimport { slide } from \"@/slide\";\n\nexport default slide({\n  layout: \"waterfall\",\n  eyebrow: \"Results\",\n  title: \"Pricing and routes added $19M of operating profit; wage inflation took back $6M\",\n  steps: [\n    { label: \"Q4 2025\", value: 46, total: true },\n    { label: \"Pricing\", value: 9 },\n    { label: \"Route consolidation\", value: 6 },\n    { label: \"Wage inflation\", value: -6 },\n    { label: \"Q4 2026\", value: 55, total: true },\n  ],\n  prefix: \"$\",\n  suffix: \"M\",\n  source: \"Halden finance; operating profit, $M\",\n  notes: \"The operational levers more than offset wage inflation.\",\n});\n```\n\nThat becomes this. Real shapes, not an image:\n\nThis is why AI is good at it. An LLM is bad at pixel geometry and good at structured data. Layouts handle the geometry, so the model only has to get the content and the story right.\n\nThere are 23 built-in layouts: cover, agenda, summary, stats, chart, waterfall, table (with RAG status and Harvey balls), 2×2 matrix, process, timeline, roadmap, next steps, references and more. Charts (column, bar, stacked, line, area, pie, doughnut) are native PowerPoint charts, so finance can still click in and fix a number.\n\n| Native table with highlight and total rows | Gantt roadmap with a \"today\" line | \n\nGenerating a `.pptx` is easy. Generating one you would send to a board is not. So every build runs about 40 checks, and each one comes with a `→ fix` hint the agent can act on:\n\nThe output folder gives you, and the agent, everything needed to *look* at the result: a contact sheet, one PNG per slide, a QA report, and an outline containing only the titles. If the titles alone don't tell the story, the deck isn't done.\n\n```\ngit clone https://github.com/sebyx07/power-point-factory && cd power-point-factory\nbin/setup        # bun install, .env, checks LibreOffice + poppler + fonts\nbin/deck loop    # build + QA + screenshots of the sample deck\n\nbin/deck new acme q1-review board-update --theme ledger\nclaude           # then: /deck acme \"Q1 board review — revenue 2M, +11%…\"\n```\n\nThe `/deck` command follows the same workflow a consultant would:\n\n`bin/deck loop`.` deck-reviewer` agent, which never saw the recipe, judges the screenshots and returns `bin/deck export` is QA-gated and writes `Company - Title - date.pptx/.pdf`.\nThe agent is also told never to invent facts. A missing number becomes a `TBD` in the speaker notes and is listed back to you. It never ends up on a slide, and QA fails if one does.\n\nStock photos are where a lot of corporate decks die: the same handshake, the same glass tower, and a license nobody checked. The factory gets its imagery from [**Kubeez**](https://kubeez.com) instead, and it's what makes the sample deck look like an agency made it:\n\n*Every photo in the Halden deck is a Kubeez generation, including the cover and the warehouse shots.*\n\nWhy it fits a slides-as-code workflow so well:\n\n`16:9` for full-bleed slides, `3:4` for a half-slide cover, `1:1` for objects or `21:9` for banners. No cropping.`mcp.kubeez.com`) so Claude Code can generate and preview media in the conversation.`assets/generated/` folder, which you commit. Rebuilds are offline and free, and teammates who clone the repo never pay again for the same image.\n\n```\nbin/kubeez generate \"aerial photo of a logistics hub at dawn, 35mm, natural light\" --aspect 16:9\nbin/kubeez remove-bg ./assets/product.png\nbin/kubeez balance\n```\n\nIn a recipe, an image is just a prop. The factory generates it on the first build and reads it from the cache after that. Add `KUBEEZ_API_KEY` to `.env` and you're set.\n\nEach company gets a \"brand brain\": `BRAND.md` for voice, logo rules, colors and approved facts, `brand.ts` for theme tokens, plus logos and reusable photos. Four built-in themes (cobalt, ledger, graphite, terracotta) all pass a WCAG AA test, and `extendTheme` puts your colors on top. A `brand-reviewer` agent checks claims and logo use against `BRAND.md` before anything ships.\n\nPick one motion profile per deck: `none` (for read-ahead decks), `subtle` (the default, a fade transition), `build` (click reveals) or `keynote` (Morph). Per-slide effect soup isn't an option.\n\nIf you build a deck with it, I'd like to see the contact sheet. Drop it in the comments.", "url": "https://wpnews.pro/news/corporate-powerpoint-decks-with-ai-for-free-slides-as-code-qa-as-the-gate", "canonical_source": "https://dev.to/sebyx07/corporate-powerpoint-decks-with-ai-for-free-slides-as-code-qa-as-the-gate-2odc", "published_at": "2026-11-03 13:52:32+00:00", "updated_at": "2026-11-03 13:58:13.096619+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "generative-ai", "developer-tools"], "entities": ["PowerPoint Factory", "Kubeez", "Claude Code", "Halden Logistics", "LibreOffice", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/corporate-powerpoint-decks-with-ai-for-free-slides-as-code-qa-as-the-gate", "markdown": "https://wpnews.pro/news/corporate-powerpoint-decks-with-ai-for-free-slides-as-code-qa-as-the-gate.md", "text": "https://wpnews.pro/news/corporate-powerpoint-decks-with-ai-for-free-slides-as-code-qa-as-the-gate.txt", "jsonld": "https://wpnews.pro/news/corporate-powerpoint-decks-with-ai-for-free-slides-as-code-qa-as-the-gate.jsonld"}}