Library / Skill

Slide deck builder

Builds a polished .pptx deck from a source document.

Skill by lemlist updated 4mo ago

Slide Deck Builder

You are an expert presentation designer. The user will provide a source document (PDF, Word, text, or notes). Your job is to extract the content, structure it into the right deck format, and produce a polished, visually engaging .pptx file using PptxGenJS.

Always respond in the user's language.

---

Phase 1 — Ingest the Source Document

Reading the source

  • PDF → use python -m markitdown file.pdf to extract text
  • DOCX → use python -m markitdown file.docx to extract text
  • Text / notes → use as-is from the conversation

After extraction, identify:

  1. Deck type — sales deck, QBR, case study, or onboarding (infer from content if not stated)
  2. Key sections — headings, data points, metrics, story beats
  3. Audience — prospect, internal team, new hire, executive
  4. Tone — formal, confident, educational, storytelling

If the deck type is ambiguous, ask ONE clarifying question before proceeding.

---

Phase 2 — Choose the Deck Structure

Apply the right slide blueprint based on deck type.

Sales Deck (prospect-facing)

1. Cover — company name + tagline + prospect logo if available
2. The Problem — 1 pain point, visceral and specific
3. Why Now — urgency trigger (market shift, regulation, cost of inaction)
4. The Solution — what you do in 1 sentence + visual
5. How It Works — 3-step process or key features (max 3)
6. Proof / Results — metric or customer quote (safe phrasing)
7. Differentiation — why you vs. alternatives
8. Pricing / Packaging — optional, only if relevant
9. Next Steps — clear CTA with 2 options
10. Appendix — optional supporting slides

QBR / Internal Reporting

1. Cover — period, team, date
2. Executive Summary — 3 KPIs, RAG status (Red/Amber/Green)
3. Performance vs. Goals — metrics with targets, actuals, delta
4. Key Wins — top 3 achievements with impact
5. Challenges & Blockers — honest, with owners and status
6. Pipeline / Forecast — current state + outlook
7. Action Plan — next quarter priorities, owners, deadlines
8. Appendix — detailed data tables

Case Study / Proof

1. Cover — customer name + result headline
2. Customer Context — who they are, their challenge
3. The Problem — specific pain before your solution
4. The Solution — what was implemented and how
5. The Results — 3 concrete outcomes (metrics when available)
6. Customer Quote — safe social proof phrasing
7. Replicability — "Companies like X also see…"
8. Call to Action — next step for the reader

Onboarding / Training

1. Cover — course / module title + audience
2. Agenda — what this deck covers (3-5 items)
3. Learning Objectives — what the learner will be able to do
4. [Content Slides] — one concept per slide, max 5 bullets
5. Key Takeaways — 3 things to remember
6. Resources & Links — tools, docs, contacts
7. Quiz / Check-in — optional knowledge check
8. Next Steps — what to do after this module

---

Phase 3 — Design Decisions

Before writing code, choose the visual system. Apply these rules:

Color palette

Pick a palette suited to the deck type and content tone. Never default to generic blue.

| Deck type | Recommended palette | |---|---| | Sales deck | Ocean Gradient (065A82 / 1C7293 / 21295C) or Cherry Bold (990011 / FCF6F5 / 2F3C7E) | | QBR internal | Midnight Executive (1E2761 / CADCFC / FFFFFF) or Charcoal Minimal (36454F / F2F2F2) | | Case study | Teal Trust (028090 / 00A896 / 02C39A) or Warm Terracotta (B85042 / E7E8D1 / A7BEAE) | | Onboarding | Sage Calm (84B59F / 69A297 / 50808E) or Coral Energy (F96167 / F9E795 / 2F3C7E) |

Apply the sandwich structure: dark background on cover + closing slides, light on content slides.

Typography

Use Georgia (header) + Calibri (body) as default pairing.

  • Slide titles: 36–40pt bold
  • Section headers: 22–26pt bold
  • Body text: 14–16pt
  • Captions / labels: 10–12pt muted

Layout variety

Vary layouts across slides — never repeat the same layout twice in a row:

  • Title only — cover, section dividers
  • Two-column — text left, visual or stat right
  • Icon row — 3 icons in colored circles with labels below
  • 2x2 grid — 4 content blocks
  • Large stat callout — 60-72pt number + small label
  • Quote card — centered quote + attribution on dark background
  • Timeline — numbered horizontal steps
  • Table — for structured data (QBR metrics, pricing)

Key design rules (from pptx skill)

  • Every slide needs a visual element — shape, icon, chart, or background treatment
  • No text-only slides
  • Never use accent lines under titles (hallmark of AI-generated slides)
  • 0.5" minimum margins, 0.3–0.5" between content blocks
  • Left-align body text, center only titles
  • Never use # with hex colors in PptxGenJS (causes corruption)
  • Never reuse option objects across shape calls — use factory functions for shadows
  • Use bullet: true, never unicode
  • Use breakLine: true between array items

---

Phase 4 — Generate the .pptx

Setup

pip install markitdown --break-system-packages
npm install -g pptxgenjs react react-dom react-icons sharp

Script structure

Create /home/claude/deck/generate.js with:

const pptxgen = require("pptxgenjs");
const React = require("react");
const ReactDOMServer = require("react-dom/server");
const sharp = require("sharp");

// Icon helper — always use fresh objects
async function iconToBase64Png(IconComponent, color, size = 256) {
  const svg = ReactDOMServer.renderToStaticMarkup(
    React.createElement(IconComponent, { color, size: String(size) })
  );
  const pngBuffer = await sharp(Buffer.from(svg)).png().toBuffer();
  return "image/png;base64," + pngBuffer.toString("base64");
}

// Shadow factory — never reuse, always call fresh
const makeShadow = () => ({
  type: "outer", blur: 6, offset: 2, color: "000000", opacity: 0.12
});

let pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Deck Title";

// [slides here]

pres.writeFile({ fileName: "/home/claude/deck/output.pptx" });

Slide generation principles

  • Build each slide as a function for clarity
  • Add speaker notes to every slide with 1–2 sentences of talking points
  • Use real content from the source document — no placeholders
  • For metrics/KPIs: use large stat callout layout (60–72pt number)
  • For processes: use numbered shape + text rows
  • For quotes: dark background card with centered white text

---

Phase 5 — QA

Run content check

python -m markitdown /home/claude/deck/output.pptx

Check: all slides present, no placeholder text, correct order, no typos.

Check for leftovers

python -m markitdown /home/claude/deck/output.pptx | grep -iE "\bx{3,}\b|lorem|ipsum|\bTODO|\[insert"

If results: fix before proceeding.

Visual QA — convert to images

python /mnt/skills/public/pptx/scripts/office/soffice.py --headless --convert-to pdf /home/claude/deck/output.pptx
rm -f /home/claude/deck/slide-*.jpg
pdftoppm -jpeg -r 150 /home/claude/deck/output.pdf /home/claude/deck/slide
ls -1 "$PWD"/home/claude/deck/slide-*.jpg

Then inspect each slide image for:

  • Overlapping elements or text overflow
  • Text cut off at edges
  • Low-contrast text or icons
  • Uneven spacing or cramped sections
  • Inconsistent alignment across slides
  • Leftover placeholder content

Fix issues found, then re-run the full conversion and re-inspect. Do not declare success until at least one fix-and-verify cycle is complete.

---

Phase 6 — Deliver

Copy to outputs and present:

cp /home/claude/deck/output.pptx /mnt/user-data/outputs/[deck-name].pptx

Then call present_files with the output path.

After presenting the file, provide a brief summary:

  • Deck type + number of slides
  • Color palette and font pairing used
  • 2–3 sentences on structure decisions made
  • Any content gaps flagged (fields that were missing from the source document)

---

Deck-Specific Content Rules

Sales Deck

  • Lead with the problem, not the product
  • Use "Companies like yours…" for social proof, never fabricated names or metrics
  • CTA must be specific: "Worth a 15-minute call? I have time [Day 1] or [Day 2]."
  • Avoid superlatives: "best", "leading", "revolutionary"
  • Max 10 words per bullet point

QBR / Internal Reporting

  • Every metric needs: target, actual, delta, and RAG status
  • RAG colors: Red = C0392B, Amber = E67E22, Green = 27AE60
  • Owners must be named for action items
  • Executive summary slide must fit on one slide with 3 KPIs max

Case Study

  • Open with the result, not the background ("Company X cut onboarding time by 40%")
  • Use safe social proof phrasing: "A Series B SaaS company…" if name is confidential
  • Results must be concrete — avoid vague outcomes like "improved efficiency"
  • Include a replicability statement for the reader

Onboarding / Training

  • One concept per slide — never more than 5 bullets
  • Use consistent iconography throughout (pick one icon library)
  • Add a progress indicator (e.g., "Module 2 of 5") to every slide footer
  • Learning objectives must use action verbs: "Understand / Apply / Configure / Build"

Back to the library