Presentation Designer
VC-backed SaaS design quality for PowerPoint. Think Linear, Attio, Vercel, Raycast — not corporate clip art.
Install
git clone https://github.com/thatrebeccarae/claude-marketing.git && cp -r claude-marketing/skills/pro-deck-builder ~/.claude/skills/
Quick Reference
| Task | Approach |
|---|---|
| Create from scratch | Read REFERENCE.md, use PptxGenJS |
| Edit existing / use template | Read editing.md |
| Read/extract content | python -m markitdown presentation.pptx |
| Visual overview | python scripts/thumbnail.py presentation.pptx |
Before You Start (Required Steps)
Step 1: Ask the User
Before writing any code, ask:
- Light or dark mode? Dark = premium/keynote feel. Light = reports/data-heavy decks.
- Palette preference? Show the palette table below, or ask if they have brand colors.
- Logo? Ask if they have a logo file to include (PNG/SVG path).
Step 2: Discover Fonts
Check what's installed — premium fonts make a massive difference:
# macOS — list all installed font families
fc-list : family | sort -u
# Search for premium fonts first
fc-list : family | grep -iE "inter|dm.sans|poppins|avenir|futura|geist|sf.pro|sf.mono|jetbrains|fira.code|montserrat|playfair|source.sans"
# Check macOS Font Book directories directly
ls ~/Library/Fonts/ /Library/Fonts/ /System/Library/Fonts/Supplemental/ 2>/dev/null
Priority order for font selection:
- Inter — the gold standard for SaaS UI (if installed, use it for everything)
- DM Sans — geometric, startup-friendly
- Poppins — rounded, approachable
- Avenir / Avenir Next — ships with macOS, Apple-adjacent elegance
- Calibri — safe fallback, always available
For data/mono: JetBrains Mono > Fira Code > SF Mono > Consolas
Design Language: VC-Backed SaaS
Aesthetic Principles
- Depth through layering — Surfaces float above backgrounds. Cards and panels have subtle elevation via shadows and fine borders, not flat colored boxes.
- Bold typography, minimal decoration — Let type hierarchy do the work. No accent lines, no decorative shapes, no clip art.
- Restrained color — One accent color used sparingly (10%). Mostly neutrals. Color = signal, not decoration.
- Generous whitespace — Empty space signals confidence. If a slide feels sparse, make the content bigger, don't add more.
- Every element earns its place — Before adding anything: what does it communicate? If removing it changes nothing, remove it.
Light vs Dark Mode
The user picks one mode for the entire deck. Never mix modes within a deck.
Color System
Dark Mode (Default — Premium/Keynote)
| Token | Value | Use |
|---|---|---|
bg-primary | 0A0A0C | Slide backgrounds (deep space black) |
bg-surface | 17181A | Cards, panels (deep slate) |
bg-elevated | 1E1F23 | Elevated surfaces, hover states |
bg-glass | FFFFFF at 4% opacity | Translucent overlays |
text-primary | FFFFFF | Headlines, key content |
text-secondary | A0A0A0 | Body text, descriptions |
text-muted | 5A5A5E | Captions, metadata, labels |
border-subtle | FFFFFF at 8% opacity | Card borders |
Light Mode (Reports/Data-Heavy)
| Token | Value | Use |
|---|---|---|
bg-primary | FFFFFF | Slide backgrounds |
bg-surface | F8F9FA | Cards, panels |
bg-elevated | FFFFFF | Elevated surfaces (use shadow) |
text-primary | 111111 | Headlines, key content |
text-secondary | 555555 | Body text, descriptions |
text-muted | 999999 | Captions, metadata, labels |
border-subtle | E8E8E8 | Card borders |
Palette System
Each palette defines one accent color (used at 10%) plus semantic status colors. The accent is the personality — everything else is neutral.
Built-In Palettes
| Name | Accent | Hex | Best For |
|---|---|---|---|
| Electric Blue | Intense azure | 0055FF | SaaS, tech, product |
| Neon Lime | Acid green | 39FF14 | Dev tools, performance |
| Hot Coral | Warm energy | FF6B6B | Marketing, creative |
| Indigo | Deep purple | 6366F1 | Startups, AI/ML |
| Teal Trust | Cool confidence | 0D9488 | Healthcare, finance |
| Amber Signal | Warm authority | F59E0B | Consulting, strategy |
| Rose | Refined pink | F43F5E | Design, brand, luxury |
| Emerald | Growth green | 10B981 | Sustainability, success |
| Cyan Edge | Sharp blue-green | 06B6D4 | Data, analytics |
| Violet | Creative depth | 8B5CF6 | Education, innovation |
| Slate | No accent | 64748B | Minimal, understated |
| Gold Standard | Financial premium | D4AF37 | Investor, board decks |
Custom Palette (User Brand Colors)
If the user provides brand colors, build a custom palette:
const palette = {
accent: "0055FF", // primary brand color
accentMuted: "0055FF" + " at 15% opacity", // for tinted backgrounds
positive: "10B981", // good, up, success
warning: "F59E0B", // attention, caution
critical: "EF4444", // bad, down, error
};
Color Application: 85/10/5 Rule
- 85% — Backgrounds + neutral text (bg + text tokens from mode)
- 10% — Accent (key numbers, chart primary, CTAs, active states)
- 5% — Semantic status (positive/warning/critical in KPIs and data)
Typography
Font Priority
Run font discovery (Step 2 above), then pick:
| Priority | Header | Body | Data/Mono | Vibe |
|---|---|---|---|---|
| 1st | Inter 700 | Inter 400 | JetBrains Mono | Linear/Vercel |
| 2nd | DM Sans 700 | DM Sans 400 | Fira Code | Geometric startup |
| 3rd | Avenir Next Bold | Avenir 400 | SF Mono | Apple-adjacent |
| 4th | Poppins 700 | Poppins 400 | JetBrains Mono | Friendly modern |
| Safe | Calibri Bold | Calibri | Consolas | Always available |
For editorial/financial decks:
| Header | Body | Vibe |
|---|---|---|
| DM Serif Display | DM Sans | Sophisticated editorial |
| Playfair Display | Source Sans Pro | Luxury, financial |
| Georgia | Calibri | Classic corporate |
Size Scale
| Role | Size | Weight | Use |
|---|---|---|---|
| Hero title | 54-72pt | Bold (700) | Title slide only |
| Slide title | 32-40pt | Bold (700) | Every content slide |
| Section header | 20-24pt | Semibold (600) | Within-slide sections |
| Body text | 14-16pt | Regular (400) | Paragraphs, bullets |
| Captions/meta | 10-12pt | Regular (400) | Footnotes, sources |
| Big KPI number | 48-72pt | Bold (700) | Dashboard callouts |
| KPI label | 9-10pt | Semibold, ALL CAPS, +tracking | Below KPI numbers |
| Data/numbers | 11-14pt | Mono regular | Tables, data labels |
Typography Rules
- Left-align body text and lists — center ONLY titles and KPI values
- Max 2 font families per deck (+1 mono for data)
- ALL CAPS + charSpacing only for small labels (KPI labels, category tags)
- Line height: 1.3x for body, 1.1x for titles
- Never underline for emphasis — use bold or accent color
Text Fitting (Prevents Overflow)
Big numbers and titles WILL overflow if you use a fixed font size without checking content length. Use these rules:
Big KPI Numbers — scale font to character count:
| Characters | Example | Max Font Size (card) | Max Font Size (standalone) |
|---|---|---|---|
| 1–4 | $4.2M | 48pt | 72pt |
| 5–7 | $5,307K | 36pt | 54pt |
| 8–10 | $5,307,540 | 28pt | 44pt |
| 11+ | $12,345,678 | 22pt | 36pt |
Rule: prefer abbreviated numbers. $5.3M > $5,307,540. Only use full numbers in tables or footnotes where precision matters.
Slide Titles — max characters before wrapping:
| Font Size | Max Chars (~9" wide) | If Longer |
|---|---|---|
| 54pt | ~30 | Reduce to 44pt or rewrite shorter |
| 44pt | ~38 | Reduce |