An HTML deck factory that ships four artifacts from one source.
Live HTML, retina PDF, natively-editable PowerPoint, and a Google Slides upload — produced from one content YAML + one template + one theme. Every text run and tile in the PPTX is a real shape, not an image.
Open ↗Four artifacts. One YAML.
Built around the Anthropic pptx-skill's Pattern A — Playwright walks the rendered DOM into native python-pptx shapes. The editable downstream isn't a fragmented LibreOffice mess.
Self-contained file, inlined CSS, arrow-key navigation. Renders identically in Chrome, Safari, Firefox.
Playwright + Pillow, 2× device scale. One slide per page. Image-perfect against the live HTML.
Native shapes — every text run, every tile, every callout is an editable PowerPoint object.
Uploaded via Drive API as a true Slides file (not a .pptx attachment). Comment, share, multiplayer-edit.
Live decks · click any.
Iframe embeds of the actual hosted decks. The same four artifacts ship for each one — HTML, PDF, editable PPTX, Google Slides.
Tweak Studio · sliders, not prose.
When the issue is taste, sliders beat prose. Bake the patch to CSS or send the link — slider state lives in the URL hash, so a tuned look is shareable.
Themes are CSS files.
Themes ride the same token vocabulary. Drop in a brand palette, adjust the type stack, ship. Render three covers side-by-side; pick by reaction.
Dental-vertical client work, partner co-marketing, internal updates.
Series A/B fundraising, board reviews, finance briefings.
Brand manifestos, founder updates, values decks, earned media.
Run it · three commands.
Variation-first preview, lint, full pipeline. Each step is a single command. Total wall-clock to all four outputs: about fifteen seconds.
python3 scripts/lint_content.py examples/<slug>/content.yaml
python3 scripts/preview_themes.py --content examples/<slug>/content.yaml
./scripts/make_deck.sh --content examples/<slug>/content.yaml --theme themes/<chosen>.css --upload "Display Name"