The first deck I built this way took about ten hours, and almost none of that went on the argument. It went on redoing animations and layout every time a section moved. The deck is a text file now — reorder it, rebuild, and the animations survive. The next deck of the same kind took an hour.
What it does
Re-brand a finished deck from a client's template
Point deckwright conform Brand.pptx --adopt brand at a client’s PowerPoint template. It reads the fonts, colours and canvas out of it, then builds its own 98-slide catalogue of every layout, chart and component against that template, one slide at a time, printing ok or FAIL beside each — so you know before you start which parts of the template will carry your deck. Then change one line in your own deck, theme: brand, and every slide re-renders. You do not touch the slides.
Reorder and cut slides without losing the animations
Move a section, cut two slides, rename a title, rebuild — the timings and transitions come through unchanged. A test that did exactly that, renaming a title and reordering a slide, left every count identical: 7 timing nodes, 12 transitions, 13 notes, 2 charts, 1 table. Re-applying that by hand in PowerPoint is where most of that first ten-hour deck went.
Read the fix off the build that failed
When text will not fit, the build stops before it writes the file and gives you the numbers: “30 bullets in the longest column need 10.08in but only 5.30in is available — split the slide, add a column, or shorten the list”. docs/errors.md lists every message the compiler can emit next to what to do about it.
Catch the deck PowerPoint will offer to repair
deckwright qa reads the saved .pptx for duplicate shape ids, dangling relationships, and animations aimed at a shape that was never drawn. PowerPoint validates the package before it draws anything, so each of those means a repair prompt and content quietly dropped if the user accepts. LibreOffice opens all of them fine, so a clean render proves nothing.
Recover the spec from a deck someone hand-edited
Someone opened the deck in PowerPoint and moved things. deckwright diff compares that file against its build record and lists, per shape, what moved, was retyped, was added or is gone. deckwright extract drafts a .deck.yaml out of a deck deckwright never built, with a # not converted: comment on each shape it could not turn into words.
Bring the claim and the numbers, not a chart type
You bring the claim and the data; you do not pick the chart. The assistant building the deck reads three reference docs shipped for it and decides the form — which of the 29 chart kinds, or a table, or one big number, or no graphic at all. The chart guidance is drawn from published research on how accurately people read values off each kind. A second doc handles slides with no data on them, and a third checks the last few slides, so a deck does not turn into eight bar charts in a row.
Capabilities deck
Iterating on a real deck
The point is how little you touch to change what a slide argues.
Drop the full-year framing. Q3 is where the interesting thing happened — go into it month by month, show it against last year, and rebuild the deck around that story.


| before | after | |
|---|---|---|
| slides | 7 | 9 |
| sections in the nav | 3 | 3 new ones |
| charts | 2 | 4 |
| granularity | quarterly | monthly, vs last year |
Rebuild time: 0.24 seconds. Nobody chose a chart type, picked a colour, moved a box, or renumbered a section divider. Those decisions were made once, when the theme was set.