pitch-deck
Generate professional PowerPoint pitch decks for startups and businesses. Use this skill when users request help creating investor pitch decks, sales presentations, or business pitch presentations. The skill follows standard 10-slide pitch deck structure and includes best practices for content and design.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install merllinsbeard-ai-claude-skills-collection-pitch-deck
Repository
Skill path: content/pitch-deck
Generate professional PowerPoint pitch decks for startups and businesses. Use this skill when users request help creating investor pitch decks, sales presentations, or business pitch presentations. The skill follows standard 10-slide pitch deck structure and includes best practices for content and design.
Open repositoryBest for
Primary workflow: Research & Ops.
Technical facets: Tech Writer, Designer.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: merllinsbeard.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install pitch-deck into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/merllinsbeard/ai-claude-skills-collection before adding pitch-deck to shared team environments
- Use pitch-deck for business workflows
Works across
Favorites: 1.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: pitch-deck
description: Generate professional PowerPoint pitch decks for startups and businesses. Use this skill when users request help creating investor pitch decks, sales presentations, or business pitch presentations. The skill follows standard 10-slide pitch deck structure and includes best practices for content and design.
---
# Pitch Deck Generator
## Overview
Generate professional PowerPoint pitch decks following industry best practices. This skill creates structured presentations for fundraising, sales, and business development using a proven 10-slide format.
## When to Use This Skill
Activate this skill when users request:
- Investor pitch decks for fundraising
- Sales or business development presentations
- Product launch presentations
- Startup pitch competition decks
- Any structured business presentation following standard pitch deck format
## Workflow
### Step 1: Gather Information
Collect necessary information from the user to populate the pitch deck. Use a conversational approach to gather details across the following categories:
**Required information:**
1. **Company basics**: Company name, tagline (one-liner describing what you do)
2. **Problem**: What problem are you solving? Include data or statistics if available
3. **Solution**: How does your product/service solve the problem? Key features and benefits
4. **Business model**: How do you make money? Pricing, revenue streams
**Recommended information** (include if available):
5. **Market opportunity**: Market size (TAM/SAM/SOM), growth rate, market trends
6. **Product details**: Product features, screenshots, technology highlights
7. **Traction**: Key metrics, revenue, users, growth rate, milestones, customer testimonials
8. **Competition**: Competitors, competitive advantages, differentiation
9. **Team**: Founders and key team members with relevant background
10. **Financials & Ask**: Funding amount, use of funds, financial projections, milestones
**Approach:**
- Ask open-ended questions to understand the business
- Probe for specific metrics and data points when possible
- For missing information, offer to create placeholder slides that can be updated later
- Adapt the standard 10-slide structure based on available information
### Step 2: Structure the Content
Organize the gathered information into the standard pitch deck structure:
1. **Title Slide**: Company name + tagline
2. **Problem**: Pain point being addressed
3. **Solution**: Product/service overview
4. **Market Opportunity**: Market size and growth
5. **Product**: Features and capabilities
6. **Traction**: Metrics and achievements
7. **Business Model**: Revenue and pricing
8. **Competition**: Competitive landscape
9. **Team**: Key people
10. **Financials & Ask**: Funding request and projections
**Reference best practices:** For detailed guidance on each slide's content and structure, consult `references/pitch_deck_best_practices.md`. Search for specific sections using grep:
```bash
grep -A 10 "### [Slide Number]. [Slide Name]" references/pitch_deck_best_practices.md
```
### Step 3: Create the JSON Data File
Format the collected information as a JSON file that will be consumed by the pitch deck generation script. Create a file called `pitch_data.json` with the following structure:
```json
{
"company_name": "Company Name",
"tagline": "One-line description of what you do",
"problem": [
"Problem statement 1 with data/statistics",
"Problem statement 2 showing impact",
"Problem statement 3 demonstrating urgency"
],
"solution": [
"How your product solves the problem",
"Key feature 1 and its benefit",
"Key feature 2 and its benefit",
"Unique value proposition"
],
"market": [
"TAM: Total addressable market with $ figure",
"SAM: Serviceable available market",
"SOM: Serviceable obtainable market",
"Market growth rate and trends"
],
"product": [
"Product feature 1",
"Product feature 2",
"Technology highlights",
"User experience benefits"
],
"traction": [
"Revenue: $X (YY% growth)",
"Users: X,XXX active users",
"Key milestone 1",
"Customer testimonial or social proof"
],
"business_model": [
"Revenue model (e.g., SaaS subscription)",
"Pricing: $XX/month per user",
"Unit economics: CAC, LTV, margins",
"Sales channels"
],
"competition": {
"our_advantages": [
"Advantage 1",
"Advantage 2",
"Unfair advantage/defensibility"
],
"competitors": [
"Competitor 1",
"Competitor 2",
"Alternative solutions"
]
},
"team": [
"Founder 1: Name - Background and relevant experience",
"Founder 2: Name - Background and relevant experience",
"Key hire: Name - Background and why they matter",
"Notable advisors"
],
"financials": [
"Raising: $X seed/Series A round",
"Use of funds: XX% engineering, XX% sales, XX% ops",
"Milestones with this funding",
"Runway: X-X months to next milestone"
]
}
```
**Notes:**
- All fields are optional except `company_name`
- Use arrays for bullet points (will be rendered as bullet lists)
- Competition can be either an object with `our_advantages` and `competitors` keys (for two-column layout) or a simple array
- Keep bullet points concise (1-2 lines each)
- Include specific numbers and metrics where possible
### Step 4: Generate the PowerPoint
Execute the Python script to create the PowerPoint presentation:
```bash
python3 scripts/create_pitch_deck.py pitch_data.json output_filename.pptx
```
The script will:
- Generate a professional PowerPoint file with proper formatting
- Apply consistent color scheme and typography
- Create slides based on available data (skipping sections if data not provided)
- Output a `.pptx` file ready for presentation or further customization
### Step 5: Review and Iterate
Present the generated pitch deck location to the user and offer to:
- Add missing sections if information becomes available
- Refine bullet points for clarity and impact
- Adjust structure based on specific audience (investor vs. sales pitch)
- Provide guidance on presenting the deck
**Iteration approach:**
- User can update the JSON file with new information
- Re-run the script to regenerate the updated presentation
- For design customizations beyond the script's capabilities, advise manual editing in PowerPoint
## Design Guidelines
The generated pitch deck follows these design principles:
**Color Scheme:**
- Primary: Blue (#2962FF) for titles and emphasis
- Secondary: Gray (#646464) for body text
- Clean white background for readability
**Typography:**
- Title slides: 54pt bold
- Section titles: 40pt bold
- Body text: 18-20pt with appropriate line spacing
**Layout:**
- Consistent margins and spacing
- One key message per slide
- Bullet points limited to 3-5 items per slide
- Two-column layouts for comparison slides
**Visual Hierarchy:**
- Clear title at top of each slide
- Content organized with proper spacing
- Emphasis on readability and professional appearance
## Best Practices Reference
For detailed guidance on pitch deck content, structure, and presentation tips, reference:
- `references/pitch_deck_best_practices.md` - Comprehensive guide covering:
- Standard 10-slide structure with examples
- Content guidelines for each slide type
- Design best practices
- Common mistakes to avoid
- Tailoring for different audiences (investor, sales, product launch)
- Pre-pitch checklist
Load this reference when providing detailed advice on pitch content or structure.
## Example Usage Scenarios
**Scenario 1: Early-stage startup seeking seed funding**
- Focus on problem, solution, market opportunity, and team
- Emphasize founder expertise and early traction
- Include clear funding ask and use of funds
**Scenario 2: Growth-stage company creating sales deck**
- Emphasize product features and customer ROI
- Include customer testimonials and case studies
- De-emphasize fundraising, focus on value proposition
**Scenario 3: Product launch presentation**
- Focus on product features and market need
- Include demo or product screenshots
- Emphasize innovation and competitive positioning
## Customization and Extensions
After generating the base deck:
- Users can manually add images, charts, and custom graphics in PowerPoint
- Suggest creating appendix slides for detailed backup information
- Recommend PDF export for sharing (File → Save As → PDF in PowerPoint)
- Advise on presentation timing (typically 10-15 minutes for 10 slides)
## Troubleshooting
**Script errors:**
- Ensure `python-pptx` library is installed: `pip3 install python-pptx`
- Verify JSON file is properly formatted (use JSON validator if needed)
- Check file paths are correct and user has write permissions
**Content issues:**
- If slides appear crowded, reduce bullet points to 3-5 per slide
- For complex competition analysis, consider manually creating comparison tables in PowerPoint
- For financial projections, consider creating charts in Excel and importing as images
## Resources
### scripts/
- `create_pitch_deck.py`: Python script that generates PowerPoint presentations from structured JSON data
### references/
- `pitch_deck_best_practices.md`: Comprehensive guide on pitch deck content, structure, and design principles
---
## Referenced Files
> The following files are referenced in this skill and included for context.
### references/pitch_deck_best_practices.md
```markdown
# Pitch Deck Best Practices
This reference guide provides best practices for creating effective pitch decks for startups and business pitches.
## General Principles
### Keep It Concise
- **10-15 slides maximum**: Investors have limited attention spans
- **One key message per slide**: Don't overcrowd slides with information
- **Use visuals**: Images, charts, and diagrams are more impactful than text
### Tell a Story
- Create a narrative arc: Problem → Solution → Opportunity → Why Us
- Make it memorable and emotionally engaging
- Use real examples and customer stories when possible
## Standard Pitch Deck Structure
### 1. Title Slide
- **Company name and logo**
- **Tagline/one-liner**: What you do in 10 words or less
- **Contact information** (optional on title, required at end)
### 2. Problem
- **Identify a real pain point**: What problem are you solving?
- **Quantify the problem**: Use data and statistics
- **Make it relatable**: Use examples or stories
- **Show urgency**: Why does this need to be solved now?
**Example bullet points:**
- "70% of small businesses struggle with cash flow management"
- "Current solutions are complex, expensive, and time-consuming"
- "This costs SMBs $10B+ annually in lost productivity"
### 3. Solution
- **Present your product/service**: How does it solve the problem?
- **Key features/benefits**: Focus on outcomes, not just features
- **Unique value proposition**: What makes your solution special?
- **Demo or visual**: Show, don't just tell
**Example bullet points:**
- "AI-powered cash flow forecasting in real-time"
- "Automated payment reminders reduce late payments by 50%"
- "Simple interface that takes 5 minutes to set up"
### 4. Market Opportunity
- **Total Addressable Market (TAM)**: Total market demand
- **Serviceable Available Market (SAM)**: Market you can reach
- **Serviceable Obtainable Market (SOM)**: Market you can realistically capture
- **Market trends**: Growth rate, tailwinds, market drivers
**Example structure:**
- "TAM: $50B global market for SMB financial software"
- "SAM: $10B addressable with our go-to-market strategy"
- "SOM: $500M realistic capture over 5 years"
- "Market growing at 25% CAGR driven by digitization"
### 5. Product
- **Product demo/screenshots**: Visual representation of your product
- **Key features**: 3-5 most important capabilities
- **User experience**: How customers interact with it
- **Technology/Innovation**: What makes it technically impressive
### 6. Traction
- **Key metrics**: Revenue, users, growth rate
- **Milestones achieved**: Product launches, partnerships, awards
- **Customer testimonials**: Social proof
- **Growth trajectory**: Show momentum with charts
**Investor Metrics to Include:**
- Revenue and growth rate
- Customer acquisition metrics (CAC, LTV)
- Retention/churn rates
- Unit economics
- Key partnerships or customers
### 7. Business Model
- **Revenue streams**: How do you make money?
- **Pricing strategy**: What do customers pay?
- **Unit economics**: CAC, LTV, margins
- **Sales channels**: Direct, partners, self-serve, etc.
**Example bullet points:**
- "SaaS subscription model: $50/month per user"
- "Average customer: 20 users = $1,000 MRR"
- "CAC: $200, LTV: $12,000, LTV/CAC = 60x"
- "85% gross margins, path to profitability clear"
### 8. Competition
- **Competitive landscape**: Who else is in the market?
- **Competitive advantages**: Why are you better/different?
- **Barriers to entry**: What protects your position?
**Approaches:**
- **Competitor matrix**: 2x2 grid showing positioning
- **Feature comparison table**: Your features vs. competitors
- **"Secret sauce"**: What's your unfair advantage?
**Example structure:**
- Competitors: List 3-5 main competitors
- Our advantages: "10x faster, 5x cheaper, better UX"
- Defensibility: Network effects, proprietary data, patents
### 9. Team
- **Founders and key team members**: Names, photos, backgrounds
- **Relevant experience**: Previous companies, domain expertise
- **Advisors**: Notable advisors or board members
- **Why this team**: Why are you uniquely positioned to win?
**Include:**
- Previous exits or notable achievements
- Domain expertise (years in industry)
- Complementary skills (tech + business + domain)
### 10. Financials & Ask
- **Financial projections**: 3-5 year forecast (revenue, key metrics)
- **Funding ask**: How much are you raising?
- **Use of funds**: What will you spend it on?
- **Milestones**: What will you achieve with this funding?
**Example structure:**
- "Raising $2M seed round"
- "Use of funds: 60% engineering, 25% sales, 15% ops"
- "Milestones: Launch v2, reach $1M ARR, expand to 3 new markets"
- "12-18 month runway to Series A"
## Design Best Practices
### Visual Hierarchy
- **Large, bold titles**: Make slide topics clear
- **Limited text per slide**: 3-5 bullet points max
- **Consistent formatting**: Same fonts, colors, spacing throughout
### Color Scheme
- **Stick to 2-3 colors**: Brand colors + neutral gray
- **High contrast**: Ensure readability
- **Professional appearance**: Avoid gaudy or distracting colors
### Typography
- **Sans-serif fonts**: Modern, clean appearance (e.g., Helvetica, Arial, Roboto)
- **Readable font sizes**: Minimum 20pt for body text, 36pt+ for titles
- **Consistent hierarchy**: Title, subtitle, body text clearly differentiated
### Data Visualization
- **Use charts and graphs**: Better than tables or text for trends
- **Simple charts**: Avoid 3D effects and unnecessary complexity
- **Highlight key points**: Use color or annotations to draw attention
## Common Mistakes to Avoid
### Content Mistakes
- **Too much text**: Slides should support your talk, not replace it
- **Vague claims**: "Revolutionary," "disruptive" without evidence
- **Ignoring competition**: Claiming no competitors is a red flag
- **Missing traction**: Especially for later-stage companies
- **Unrealistic projections**: "Hockey stick" growth without justification
### Design Mistakes
- **Inconsistent branding**: Different fonts, colors, styles
- **Low-quality images**: Pixelated or stretched images
- **Cluttered slides**: Too many elements competing for attention
- **Animations and transitions**: Usually distracting, keep minimal
### Presentation Mistakes
- **Reading slides word-for-word**: Slides support your narrative
- **Going over time**: Practice to stay within time limits
- **Lack of energy**: Enthusiasm is contagious
- **Not knowing your numbers**: Be prepared for deep dives on metrics
## Tailoring for Different Audiences
### Investor Pitch (Fundraising)
- Focus on: Market size, traction, unit economics, team
- Include: Clear ask, use of funds, timeline to next milestone
- Emphasize: Growth potential, scalability, return on investment
### Sales Pitch (Business Development)
- Focus on: Problem, solution, ROI for customer
- Include: Case studies, testimonials, implementation timeline
- Emphasize: Value proposition, competitive advantages, ease of use
### Product Launch Pitch
- Focus on: Product features, user benefits, market need
- Include: Demo, pricing, availability
- Emphasize: Innovation, user experience, market fit
## Pre-Pitch Checklist
- [ ] Deck is 10-15 slides (maximum 20)
- [ ] Each slide has one clear message
- [ ] All claims are backed by data or evidence
- [ ] Financials are realistic and defensible
- [ ] Team slide shows relevant expertise
- [ ] Competitive analysis is honest and thorough
- [ ] Design is clean, professional, and consistent
- [ ] No typos or grammatical errors
- [ ] File is saved as PDF for sharing
- [ ] Appendix with detailed backup slides prepared
## Appendix Slides
Always prepare backup slides for deep dives:
- Detailed financial model
- Product roadmap
- Go-to-market strategy details
- Technical architecture
- Customer case studies
- Regulatory/compliance information
- Additional team bios
```
### scripts/create_pitch_deck.py
```python
#!/usr/bin/env python3
"""
Script to generate a pitch deck PowerPoint presentation from structured data.
"""
import json
import sys
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN
from pptx.dml.color import RGBColor
def create_pitch_deck(data, output_file="pitch_deck.pptx"):
"""
Create a pitch deck from structured data.
Args:
data: Dictionary containing pitch deck information
output_file: Path to save the PowerPoint file
"""
prs = Presentation()
prs.slide_width = Inches(10)
prs.slide_height = Inches(7.5)
# Define Earthen Brand color scheme
PRIMARY_COLOR = RGBColor(45, 81, 55) # Forest Green #2D5137
SECONDARY_COLOR = RGBColor(191, 109, 73) # Terracotta #BF6D49
ACCENT_COLOR = RGBColor(242, 199, 68) # Sunlight #F2C744
TEXT_COLOR = RGBColor(51, 51, 51) # Charcoal #333333
SAND_COLOR = RGBColor(245, 241, 234) # Sand #F5F1EA
def add_title_slide(title, subtitle=""):
"""Add a title slide with Earthen Brand styling"""
slide = prs.slides.add_slide(prs.slide_layouts[6]) # Blank layout
# Add sand background
background = slide.background
fill = background.fill
fill.solid()
fill.fore_color.rgb = SAND_COLOR
# Add decorative accent bar
accent_bar = slide.shapes.add_shape(
1, # Rectangle
Inches(0), Inches(3.2), Inches(10), Inches(0.1)
)
accent_bar.fill.solid()
accent_bar.fill.fore_color.rgb = ACCENT_COLOR
accent_bar.line.fill.background()
# Add title
title_box = slide.shapes.add_textbox(Inches(0.5), Inches(2.2), Inches(9), Inches(1))
title_frame = title_box.text_frame
title_frame.text = title
title_para = title_frame.paragraphs[0]
title_para.font.size = Pt(60)
title_para.font.bold = True
title_para.font.color.rgb = PRIMARY_COLOR
title_para.alignment = PP_ALIGN.CENTER
# Add subtitle if provided
if subtitle:
subtitle_box = slide.shapes.add_textbox(Inches(0.5), Inches(3.5), Inches(9), Inches(1))
subtitle_frame = subtitle_box.text_frame
subtitle_frame.text = subtitle
subtitle_para = subtitle_frame.paragraphs[0]
subtitle_para.font.size = Pt(26)
subtitle_para.font.color.rgb = TEXT_COLOR
subtitle_para.alignment = PP_ALIGN.CENTER
return slide
def add_content_slide(title, content_items):
"""Add a content slide with title and bullet points"""
slide = prs.slides.add_slide(prs.slide_layouts[6]) # Blank layout
# Add sand background
background = slide.background
fill = background.fill
fill.solid()
fill.fore_color.rgb = SAND_COLOR
# Add header background shape
header_shape = slide.shapes.add_shape(
1, # Rectangle
Inches(0), Inches(0), Inches(10), Inches(1.3)
)
header_shape.fill.solid()
header_shape.fill.fore_color.rgb = PRIMARY_COLOR
header_shape.line.fill.background()
# Add title
title_box = slide.shapes.add_textbox(Inches(0.5), Inches(0.3), Inches(9), Inches(0.8))
title_frame = title_box.text_frame
title_frame.text = title
title_para = title_frame.paragraphs[0]
title_para.font.size = Pt(44)
title_para.font.bold = True
title_para.font.color.rgb = RGBColor(255, 255, 255) # White text
# Add decorative accent element
accent_circle = slide.shapes.add_shape(
3, # Oval
Inches(8.8), Inches(0.2), Inches(0.9), Inches(0.9)
)
accent_circle.fill.solid()
accent_circle.fill.fore_color.rgb = ACCENT_COLOR
accent_circle.line.fill.background()
# Add content with rounded background
content_bg = slide.shapes.add_shape(
1, # Rectangle
Inches(0.5), Inches(1.8), Inches(9), Inches(5.2)
)
content_bg.fill.solid()
content_bg.fill.fore_color.rgb = RGBColor(255, 255, 255)
content_bg.line.color.rgb = RGBColor(200, 200, 200)
content_bg.line.width = Pt(1)
# Add content
content_box = slide.shapes.add_textbox(Inches(1), Inches(2.2), Inches(8), Inches(4.5))
content_frame = content_box.text_frame
content_frame.word_wrap = True
for i, item in enumerate(content_items):
if i > 0:
content_frame.add_paragraph()
p = content_frame.paragraphs[i]
p.text = f"• {item}"
p.font.size = Pt(18)
p.font.color.rgb = TEXT_COLOR
p.space_after = Pt(14)
p.level = 0
return slide
def add_two_column_slide(title, left_title, left_content, right_title, right_content):
"""Add a two-column content slide with visual separation"""
slide = prs.slides.add_slide(prs.slide_layouts[6])
# Add sand background
background = slide.background
fill = background.fill
fill.solid()
fill.fore_color.rgb = SAND_COLOR
# Add header background shape
header_shape = slide.shapes.add_shape(
1, # Rectangle
Inches(0), Inches(0), Inches(10), Inches(1.3)
)
header_shape.fill.solid()
header_shape.fill.fore_color.rgb = PRIMARY_COLOR
header_shape.line.fill.background()
# Add title
title_box = slide.shapes.add_textbox(Inches(0.5), Inches(0.3), Inches(9), Inches(0.8))
title_frame = title_box.text_frame
title_frame.text = title
title_para = title_frame.paragraphs[0]
title_para.font.size = Pt(44)
title_para.font.bold = True
title_para.font.color.rgb = RGBColor(255, 255, 255)
# Left column background
left_bg = slide.shapes.add_shape(
1, # Rectangle
Inches(0.5), Inches(1.8), Inches(4.3), Inches(5.2)
)
left_bg.fill.solid()
left_bg.fill.fore_color.rgb = RGBColor(255, 255, 255)
left_bg.line.color.rgb = SECONDARY_COLOR
left_bg.line.width = Pt(2)
# Right column background
right_bg = slide.shapes.add_shape(
1, # Rectangle
Inches(5.2), Inches(1.8), Inches(4.3), Inches(5.2)
)
right_bg.fill.solid()
right_bg.fill.fore_color.rgb = RGBColor(255, 255, 255)
right_bg.line.color.rgb = PRIMARY_COLOR
right_bg.line.width = Pt(2)
# Left column
left_box = slide.shapes.add_textbox(Inches(0.8), Inches(2.1), Inches(3.7), Inches(4.6))
left_frame = left_box.text_frame
left_frame.text = left_title
left_para = left_frame.paragraphs[0]
left_para.font.size = Pt(22)
left_para.font.bold = True
left_para.font.color.rgb = SECONDARY_COLOR
for item in left_content:
left_frame.add_paragraph()
p = left_frame.paragraphs[-1]
p.text = f"• {item}"
p.font.size = Pt(16)
p.font.color.rgb = TEXT_COLOR
p.space_after = Pt(10)
# Right column
right_box = slide.shapes.add_textbox(Inches(5.5), Inches(2.1), Inches(3.7), Inches(4.6))
right_frame = right_box.text_frame
right_frame.text = right_title
right_para = right_frame.paragraphs[0]
right_para.font.size = Pt(22)
right_para.font.bold = True
right_para.font.color.rgb = PRIMARY_COLOR
for item in right_content:
right_frame.add_paragraph()
p = right_frame.paragraphs[-1]
p.text = f"• {item}"
p.font.size = Pt(16)
p.font.color.rgb = TEXT_COLOR
p.space_after = Pt(10)
return slide
# Slide 1: Title slide
company_name = data.get("company_name", "Company Name")
tagline = data.get("tagline", "")
add_title_slide(company_name, tagline)
# Slide 2: Problem
if "problem" in data:
problem_items = data["problem"] if isinstance(data["problem"], list) else [data["problem"]]
add_content_slide("The Problem", problem_items)
# Slide 3: Solution
if "solution" in data:
solution_items = data["solution"] if isinstance(data["solution"], list) else [data["solution"]]
add_content_slide("Our Solution", solution_items)
# Slide 4: Market Opportunity
if "market" in data:
market_items = data["market"] if isinstance(data["market"], list) else [data["market"]]
add_content_slide("Market Opportunity", market_items)
# Slide 5: Product
if "product" in data:
product_items = data["product"] if isinstance(data["product"], list) else [data["product"]]
add_content_slide("Product", product_items)
# Slide 6: Traction
if "traction" in data:
traction_items = data["traction"] if isinstance(data["traction"], list) else [data["traction"]]
add_content_slide("Traction", traction_items)
# Slide 7: Business Model
if "business_model" in data:
bm_items = data["business_model"] if isinstance(data["business_model"], list) else [data["business_model"]]
add_content_slide("Business Model", bm_items)
# Slide 8: Competition
if "competition" in data:
comp_data = data["competition"]
if isinstance(comp_data, dict) and "our_advantages" in comp_data and "competitors" in comp_data:
add_two_column_slide(
"Competitive Landscape",
"Our Advantages",
comp_data.get("our_advantages", []),
"Competition",
comp_data.get("competitors", [])
)
else:
comp_items = comp_data if isinstance(comp_data, list) else [comp_data]
add_content_slide("Competitive Landscape", comp_items)
# Slide 9: Team
if "team" in data:
team_items = data["team"] if isinstance(data["team"], list) else [data["team"]]
add_content_slide("Team", team_items)
# Slide 10: Financials / Ask
if "financials" in data:
fin_items = data["financials"] if isinstance(data["financials"], list) else [data["financials"]]
add_content_slide("Financials & Ask", fin_items)
# Save presentation
prs.save(output_file)
print(f"✅ Pitch deck created: {output_file}")
return output_file
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python3 create_pitch_deck.py <data.json> [output.pptx]")
sys.exit(1)
input_file = sys.argv[1]
output_file = sys.argv[2] if len(sys.argv) > 2 else "pitch_deck.pptx"
with open(input_file, 'r') as f:
data = json.load(f)
create_pitch_deck(data, output_file)
```