---
name: pitch-deck-visuals
description: "Investor pitch deck structure with slide-by-slide framework, visual design rules, and data presentation. Covers the 12-slide framework, chart types, team slides, and common investor turn-offs. Use for: fundraising decks, investor presentations, startup pitch, demo day, grant proposals. Triggers: pitch deck, investor deck, startup pitch, fundraising deck, demo day, pitch presentation, investor presentation, seed deck, series a deck, pitch slides, startup presentation, vc pitch, investor meeting"
allowed-tools: Bash(infsh *)
---
# Pitch Deck Visuals
Create investor-ready pitch deck visuals via [inference.sh](https://inference.sh) CLI.
## Quick Start
```bash
curl -fsSL https://cli.inference.sh | sh && infsh login
# Generate a slide background
infsh app run infsh/html-to-image --input '{
"html": "
The Problem
Teams waste 12 hours/week on manual reporting
Source: Forrester Research, 2024
"
}'
```
## The 12-Slide Framework
| # | Slide | Duration | Content |
|---|-------|----------|---------|
| 1 | **Title** | 15s | Company name, tagline, your name |
| 2 | **Problem** | 45s | Pain point with data |
| 3 | **Solution** | 45s | Your product in one sentence |
| 4 | **Demo/Product** | 60s | Screenshot or live demo |
| 5 | **Market Size** | 30s | TAM → SAM → SOM |
| 6 | **Business Model** | 30s | How you make money |
| 7 | **Traction** | 45s | Growth metrics, customers |
| 8 | **Competition** | 30s | Positioning, not feature list |
| 9 | **Team** | 30s | Why you specifically will win |
| 10 | **Financials** | 30s | Revenue projections, unit economics |
| 11 | **The Ask** | 15s | How much, what for |
| 12 | **Contact** | 10s | Email, next steps |
**Total: ~6 minutes.** Never exceed 20 slides.
## Slide Design Rules
### Typography
| Element | Size (1920x1080) | Rule |
|---------|-----------------|------|
| Slide title | 48-72px | Max 6 words |
| Key stat/number | 96-144px | One per slide, when applicable |
| Body text | 24-32px | Max 6 bullet points |
| Caption/source | 16-20px | Cite data sources |
| Font | Sans-serif only | Inter, Helvetica, SF Pro, or similar |
### The 1-6-6 Rule
- **1** idea per slide
- **6** words max per bullet
- **6** bullets max per slide
If you need more text, you need more slides.
### Color
| Element | Guideline |
|---------|-----------|
| Background | Dark (navy, charcoal) OR clean white — pick one, commit |
| Accent color | ONE brand color for emphasis |
| Text | White on dark, or dark grey (#333) on light |
| Charts | 2-3 colors max, your brand color = "you" |
| Avoid | Gradients on text, neon colors, more than 3 colors |
### Layout
| Rule | Why |
|------|-----|
| Consistent margins (80-100px) | Professional, clean |
| Left-align text (never center body text) | Easier to scan |
| One visual per slide | Focus attention |
| Slide numbers | Helps investors reference specific slides |
| Logo in corner | Subtle brand reinforcement |
## Slide-by-Slide Visual Guide
### 1. Title Slide
```bash
infsh app run infsh/html-to-image --input '{
"html": "DataFlow
Automated reporting for data teams
Seed Round — Q1 2025
"
}'
```
### 2. Problem Slide
**One big number + one sentence.**
```bash
infsh app run infsh/html-to-image --input '{
"html": "The Problem
12 hrs/week
The average data analyst spends 12 hours per week
building reports manually
Source: Forrester Research, 2024
"
}'
```
### 5. Market Size (TAM/SAM/SOM)
Use concentric circles, not pie charts:
```bash
infsh app run infsh/python-executor --input '{
"code": "import matplotlib.pyplot as plt\nimport matplotlib\nmatplotlib.use(\"Agg\")\n\nfig, ax = plt.subplots(figsize=(19.2, 10.8))\nfig.patch.set_facecolor(\"#0f0f23\")\nax.set_facecolor(\"#0f0f23\")\n\ncircles = [\n (0, 0, 4.0, \"#1e1e4a\", \"TAM\\n$50B\", 40),\n (0, 0, 2.8, \"#2a2a5a\", \"SAM\\n$8B\", 32),\n (0, 0, 1.4, \"#818cf8\", \"SOM\\n$800M\", 28)\n]\n\nfor x, y, r, color, label, fontsize in circles:\n circle = plt.Circle((x, y), r, color=color, ec=\"#333366\", linewidth=2)\n ax.add_patch(circle)\n ax.text(x, y, label, ha=\"center\", va=\"center\", fontsize=fontsize, color=\"white\", fontweight=\"bold\")\n\nax.set_xlim(-5, 5)\nax.set_ylim(-5, 5)\nax.set_aspect(\"equal\")\nax.axis(\"off\")\nax.text(0, 4.8, \"Market Opportunity\", ha=\"center\", fontsize=36, color=\"white\", fontweight=\"bold\")\nplt.tight_layout()\nplt.savefig(\"market-size.png\", dpi=100, facecolor=\"#0f0f23\")\nprint(\"Saved\")"
}'
```
### 7. Traction Slide
**Show growth, not just numbers.** Up-and-to-the-right chart.
```bash
infsh app run infsh/python-executor --input '{
"code": "import matplotlib.pyplot as plt\nimport matplotlib\nmatplotlib.use(\"Agg\")\n\nfig, ax = plt.subplots(figsize=(19.2, 10.8))\nfig.patch.set_facecolor(\"#0f0f23\")\nax.set_facecolor(\"#0f0f23\")\n\nmonths = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\"]\nrevenue = [8, 12, 18, 28, 42, 58, 82, 120]\n\nax.fill_between(range(len(months)), revenue, alpha=0.3, color=\"#818cf8\")\nax.plot(range(len(months)), revenue, color=\"#818cf8\", linewidth=4, marker=\"o\", markersize=10)\nax.set_xticks(range(len(months)))\nax.set_xticklabels(months, color=\"white\", fontsize=18)\nax.tick_params(colors=\"white\", labelsize=16)\nax.set_ylabel(\"MRR ($K)\", color=\"white\", fontsize=20)\nax.spines[\"top\"].set_visible(False)\nax.spines[\"right\"].set_visible(False)\nax.spines[\"bottom\"].set_color(\"#333\")\nax.spines[\"left\"].set_color(\"#333\")\nax.set_title(\"Monthly Recurring Revenue\", color=\"white\", fontsize=32, fontweight=\"bold\", pad=20)\nax.text(7, 120, \"$120K MRR\", color=\"#22c55e\", fontsize=28, fontweight=\"bold\", ha=\"center\", va=\"bottom\")\nax.text(7, 112, \"15x growth in 8 months\", color=\"#22c55e\", fontsize=18, ha=\"center\")\nplt.tight_layout()\nplt.savefig(\"traction.png\", dpi=100, facecolor=\"#0f0f23\")\nprint(\"Saved\")"
}'
```
### 8. Competition Slide
**Never use a feature matrix against competitors.** Use a 2x2 positioning map.
```bash
# See the competitor-teardown skill for positioning map generation
infsh app run infsh/python-executor --input '{
"code": "import matplotlib.pyplot as plt\nimport matplotlib\nmatplotlib.use(\"Agg\")\n\nfig, ax = plt.subplots(figsize=(19.2, 10.8))\nfig.patch.set_facecolor(\"#0f0f23\")\nax.set_facecolor(\"#0f0f23\")\n\ncompetitors = {\n \"Us\": (0.6, 0.7, \"#22c55e\", 300),\n \"Legacy Tool\": (-0.5, 0.5, \"#6366f1\", 200),\n \"Startup X\": (0.3, -0.4, \"#6366f1\", 200),\n \"Manual Process\": (-0.6, -0.6, \"#475569\", 150)\n}\n\nfor name, (x, y, color, size) in competitors.items():\n ax.scatter(x, y, s=size*5, c=color, zorder=5, alpha=0.8)\n weight = \"bold\" if name == \"Us\" else \"normal\"\n ax.annotate(name, (x, y), textcoords=\"offset points\", xytext=(15, 15), fontsize=22, color=\"white\", fontweight=weight)\n\nax.axhline(y=0, color=\"#333\", linewidth=1)\nax.axvline(x=0, color=\"#333\", linewidth=1)\nax.set_xlim(-1, 1)\nax.set_ylim(-1, 1)\nax.set_xlabel(\"Manual ← → Automated\", fontsize=22, color=\"white\", labelpad=15)\nax.set_ylabel(\"Basic ← → Advanced\", fontsize=22, color=\"white\", labelpad=15)\nax.set_title(\"Competitive Landscape\", fontsize=32, color=\"white\", fontweight=\"bold\", pad=20)\nax.tick_params(colors=\"#0f0f23\")\nfor spine in ax.spines.values():\n spine.set_visible(False)\nplt.tight_layout()\nplt.savefig(\"competition.png\", dpi=100, facecolor=\"#0f0f23\")\nprint(\"Saved\")"
}'
```
### 9. Team Slide
```bash
# Generate professional team headshots/avatars
infsh app run falai/flux-dev-lora --input '{
"prompt": "professional headshot portrait, person in business casual attire, clean neutral background, warm studio lighting, confident friendly expression, corporate photography style",
"width": 512,
"height": 512
}'
```
Layout: Photos in a row with name, title, and one credential each.
| Person | Format |
|--------|--------|
| CEO | Name, title, "Ex-[Company], [credential]" |
| CTO | Name, title, "Built [thing] at [Company]" |
| Others | Name, title, one relevant credential |
**Max 4 people on the team slide.** More = unfocused.
## Chart Guidelines
| Chart Type | Use For | Never Use For |
|-----------|---------|--------------|
| Line chart | Growth over time (traction) | Comparisons between categories |
| Bar chart | Comparing amounts | Time series (use line) |
| Concentric circles | TAM/SAM/SOM | Anything else |
| 2x2 matrix | Competitive positioning | Feature comparison |
| Single big number | Key metric highlight | Multiple metrics |
| Pie chart | NEVER | Anything (hard to read, unprofessional) |
### Chart Design Rules
| Rule | Why |
|------|-----|
| Max 2 colors per chart | Clarity |
| Your company = green or brand color | Positive association |
| Label directly on chart | No separate legend needed |
| Remove gridlines or make very subtle | Reduce clutter |
| Start Y-axis at 0 | Don't mislead |
| Cite data sources | Credibility |
## What Investors Look For
| Slide | Investor's Real Question |
|-------|------------------------|
| Problem | "Is this a real problem people pay to solve?" |
| Solution | "Is this 10x better than the status quo?" |
| Market | "Is this big enough to matter?" |
| Traction | "Is this actually working?" |
| Team | "Can these people execute?" |
| Ask | "Is this a reasonable deal?" |
## Common Mistakes
| Mistake | Problem | Fix |
|---------|---------|-----|
| Too many slides (20+) | Loses attention, unfocused | Max 12-15 slides |
| Wall of text | Nobody reads it | 1-6-6 rule: 1 idea, 6 words, 6 bullets |
| Feature comparison table vs competitors | Looks defensive | Use 2x2 positioning map |
| Pie charts | Hard to read, unprofessional | Use bar charts or big numbers |
| No data sources cited | Looks made up | Always cite sources |
| Team slide with 8+ people | Unfocused | Max 4, focus on relevant experience |
| Inconsistent design | Looks amateur | Same colors, fonts, margins on every slide |
| No "The Ask" slide | Investor doesn't know what you want | State amount, use of funds, timeline |
| Vanity metrics | "1M visits" means nothing without conversion | Show revenue, active users, retention |
| Too much product demo | This is a business pitch, not a demo | Max 2 slides on product, focus on business |
## Related Skills
```bash
npx skills add inference-sh/skills@competitor-teardown
npx skills add inference-sh/skills@data-visualization
npx skills add inference-sh/skills@ai-image-generation
```
Browse all apps: `infsh app list`