Two-skill presentation system: analyze your speaking style into a rhetoric knowledge vault, then create new presentations that match your documented patterns. Includes an 88-entry Presentation Patterns taxonomy for scoring, brainstorming, and go-live preparation.
96
Quality
96%
Does it follow best practices?
Impact
96%
1.57xAverage score across 15 eval scenarios
Jordan Chen is a conference speaker who uses a custom PowerPoint template for all their talks. Jordan has finalized the outline for an upcoming talk and needs a Python script to programmatically build the .pptx deck from that outline.
The script will be part of Jordan's repeatable workflow: every time an outline is ready, they run a script to generate the initial deck from the template, then iterate from there. Jordan's existing setup uses python-pptx for any structural operations and the speaker profile specifies how notes, footers, and backgrounds should be handled.
Jordan's template is at ./template.pptx and the output should go to ./output/cloud-native-testing.pptx.
Write a Python script named generate_deck.py that takes Jordan's PowerPoint template and the outline below and produces a finished .pptx deck at ./output/cloud-native-testing.pptx. The script should use python-pptx to build the deck programmatically.
The finished deck should be a complete, presentation-ready file with all slides from the outline, proper visual formatting, and speaker guidance preserved. Use the speaker profile below for all design decisions.
Also document any required dependencies in a requirements comment at the top of the script.
The speaker profile specifying Jordan's design rules and infrastructure is provided below.
The following files are provided as inputs. Extract them before beginning.
=============== FILE: inputs/speaker-profile.json =============== { "schema_version": 1, "speaker": { "name": "Jordan Chen", "handle": "@jchen", "shownotes_url_pattern": "speaking.jordanchen.dev/{slug}" }, "infrastructure": { "template_pptx_path": "./template.pptx", "template_layouts": [ {"index": 0, "name": "TITLE_ONLY", "placeholders": ["TITLE"], "use_for": "title slide, section dividers"}, {"index": 1, "name": "TITLE_AND_BODY", "placeholders": ["TITLE", "BODY"], "use_for": "content slides"}, {"index": 2, "name": "BLANK", "placeholders": [], "use_for": "full-bleed images, memes"}, {"index": 3, "name": "TWO_COLUMN", "placeholders": ["TITLE", "BODY_LEFT", "BODY_RIGHT"], "use_for": "comparisons"} ] }, "design_rules": { "background_color_strategy": "dark_saturated_per_section", "section_colors": { "opening": [30, 30, 60], "problem": [80, 20, 20], "solution": [20, 60, 30], "closing": [30, 30, 60] }, "white_black_reserved_for": "full-bleed image slides only", "footer": { "pattern": "@jchen | #{conference_hashtag} | speaking.jordanchen.dev/{slug}", "position_left_inches": 0.5, "position_bottom_inches": 0.15, "width_inches": 8.5, "height_inches": 0.25, "font": "Arial", "font_size": 9, "color": [255, 255, 255] }, "slide_numbers": "never" } }
=============== FILE: inputs/outline.md ===============
Spec: practitioner | 30 min | CloudNativeCon EU 2025 | senior engineers Slide budget: 45 slides
[CUT LINE: drop slides 7-9 for 20-min version]
Install with Tessl CLI
npx tessl i jbaruch/speaker-toolkit@0.6.2evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
scenario-13
scenario-14
scenario-15
skills
presentation-creator
references
patterns
build
deliver
prepare
rhetoric-knowledge-vault