# Corporate PowerPoint decks with AI, for free: slides as code, QA as the gate

> Source: <https://dev.to/sebyx07/corporate-powerpoint-decks-with-ai-for-free-slides-as-code-qa-as-the-gate-2odc>
> Published: 2026-11-03 13:52:32+00:00

Ask an AI chat to "make me a board deck" and you usually get one of three things:

`.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.

*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.*

`AGENTS.md` can drive it. You can also write the recipes by hand: they are just TypeScript.
Every 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:

``` js
// slides/06-margin-bridge.ts
import { slide } from "@/slide";

export default slide({
  layout: "waterfall",
  eyebrow: "Results",
  title: "Pricing and routes added $19M of operating profit; wage inflation took back $6M",
  steps: [
    { label: "Q4 2025", value: 46, total: true },
    { label: "Pricing", value: 9 },
    { label: "Route consolidation", value: 6 },
    { label: "Wage inflation", value: -6 },
    { label: "Q4 2026", value: 55, total: true },
  ],
  prefix: "$",
  suffix: "M",
  source: "Halden finance; operating profit, $M",
  notes: "The operational levers more than offset wage inflation.",
});
```

That becomes this. Real shapes, not an image:

This 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.

There 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.

| Native table with highlight and total rows | Gantt roadmap with a "today" line | 

Generating 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:

The 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.

```
git clone https://github.com/sebyx07/power-point-factory && cd power-point-factory
bin/setup        # bun install, .env, checks LibreOffice + poppler + fonts
bin/deck loop    # build + QA + screenshots of the sample deck

bin/deck new acme q1-review board-update --theme ledger
claude           # then: /deck acme "Q1 board review — revenue 2M, +11%…"
```

The `/deck` command follows the same workflow a consultant would:

`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`.
The 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.

Stock 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:

*Every photo in the Halden deck is a Kubeez generation, including the cover and the warehouse shots.*

Why it fits a slides-as-code workflow so well:

`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.

```
bin/kubeez generate "aerial photo of a logistics hub at dawn, 35mm, natural light" --aspect 16:9
bin/kubeez remove-bg ./assets/product.png
bin/kubeez balance
```

In 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.

Each 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.

Pick 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.

If you build a deck with it, I'd like to see the contact sheet. Drop it in the comments.
