🚀 A sophisticated AI-powered platform for comprehensive startup pitch deck analysis
Transform your investment decision-making with multi-agent AI analysis that provides deep insights into startup potential, market opportunities, and investment risks.
The Pitch Deck Analyzer is an enterprise-grade web application that leverages the power of crewAI's multi-agent architecture combined with FastAPI to provide comprehensive startup pitch deck analysis. Built for investors, VCs, accelerators, and startup analysts, this tool automates the due diligence process and provides structured, actionable insights.
- 🤖 AI-Powered Analysis: Six specialized AI agents work collaboratively to analyze different aspects of your pitch deck
- ⚡ Real-Time Processing: WebSocket-based live updates with detailed progress tracking
- 📈 Comprehensive Reports: Generate detailed investment reports with scoring, risk analysis, and recommendations
- 🎨 Modern Interface: Beautiful, responsive UI with drag-and-drop functionality
- 🔧 Highly Configurable: Customizable agents, tasks, and analysis parameters
- Responsive Design: Built with Tailwind CSS for mobile and desktop compatibility
- Drag & Drop Upload: Intuitive file upload with visual feedback
- Real-Time Progress: Live progress bars, status updates, and elapsed time tracking
- Interactive Visualization: Dynamic progress logging with agent activity monitoring
- Toast Notifications: User-friendly alerts and status messages
- Download Reports: One-click report download in markdown format
- Multi-Format Support:
- PDF documents (
.pdf
) - PowerPoint presentations (
.ppt
,.pptx
) - Word documents (
.doc
,.docx
)
- PDF documents (
- Intelligent Text Extraction: Advanced parsing with error handling
- Content Analysis: Smart content categorization and structure recognition
- Validation: File format validation and integrity checks
- Role: Expert Pitch Deck Analyst with VC experience
- Capabilities:
- Presentation clarity scoring (1-10)
- Investor readiness assessment
- Team capability evaluation
- Market timing analysis
- Execution capability scoring
- Overall fundability rating with emojis (🟢🟡🔴)
- Role: Market Research Specialist with India-focused expertise
- Capabilities:
- TAM/SAM/SOM market sizing
- Competitive landscape analysis
- Market trends identification
- Government policy analysis
- Recent deal activity tracking
- Role: Startup Economics & Unit Economics Specialist
- Capabilities:
- Revenue model analysis
- Unit economics evaluation (CAC, LTV, payback)
- Financial projections assessment
- Burn rate and runway analysis
- Valuation multiples comparison
- Role: Digital Presence Expert
- Capabilities:
- Website design and UX audit
- Social media engagement analysis
- Online reputation assessment
- SEO and digital marketing evaluation
- Role: Investment Strategy Specialist
- Capabilities:
- Investment thesis alignment
- Fundraising probability assessment
- Strategic recommendations
- Exit path analysis
- Role: Risk Assessment Specialist
- Capabilities:
- Execution risk identification
- Financial risk analysis
- Market risk evaluation
- Regulatory compliance assessment
- WebSocket Integration: Live bidirectional communication
- Progress Tracking: Granular task progress with percentage completion
- Agent Activity Logs: Detailed logging of each agent's work
- Error Handling: Graceful error recovery and user notification
- Session Management: Unique job IDs for concurrent analysis sessions
- Python: Version 3.10, 3.11, or 3.12 (3.13+ not yet supported)
- OpenAI API Key: Required for AI agent functionality
- Git: For cloning the repository
git clone <your-repo-url>
cd pitch
# Create virtual environment
python -m venv .venv
# Activate virtual environment
# On Linux/macOS:
source .venv/bin/activate
# On Windows:
.venv\Scripts\activate
We use uv
for fast package management:
# Install uv (if not already installed)
pip install uv
# Install project dependencies
uv pip install -e .
Create a .env
file in the project root:
# Copy the example environment file
cp .env.example .env # If available
# Or create manually
touch .env
Add your configuration to .env
:
# Required: OpenAI API Configuration
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_MODEL=gpt-4-turbo-preview
# Optional: Advanced Configuration
SERPER_API_KEY=your_serper_api_key_for_web_search
MAX_FILE_SIZE_MB=50
UPLOAD_DIR=uploads
LOG_LEVEL=INFO
# Optional: Database Configuration (if using persistent storage)
DATABASE_URL=sqlite:///./pitch_analyzer.db
# Test the installation
python -m pitch.main --help
# Or test with pytest (if tests are available)
pytest tests/ -v
# Start the web server
pitch serve
# Or use the alternative command
serve
# Development mode with auto-reload
uvicorn pitch.api:app --reload --host 0.0.0.0 --port 8000
# Production mode
uvicorn pitch.api:app --host 0.0.0.0 --port 8000 --workers 4
# Build the Docker image
docker build -t pitch-analyzer .
# Run the container
docker run -p 8000:8000 --env-file .env pitch-analyzer
- Open your browser and navigate to:
http://localhost:8000
- Upload your pitch deck (PDF, PPT, or PPTX format)
- Enter the startup name for analysis
- Monitor real-time progress as AI agents analyze the document
- Download the comprehensive report once analysis is complete
The generated analysis report includes the following sections:
- Executive Summary: High-level overview with aggregate scoring
- Detailed Scoring & Investor Commentary: Comprehensive 12-category analysis
- Competitive Benchmarking: Market position and competitor comparison
- Risk Identification: Execution, financial, and market risks
- Investment Thesis Alignment: Strategic fit assessment
- Fundraising Probability: 6-month fundraising likelihood
- Actionable Recommendations: Specific improvement suggestions
- Exit Path Analysis: M&A and IPO prospects
- Website & Social Audit: Digital presence evaluation
- Market Overview: TAM/SAM/SOM analysis for India
- Key Market Trends: Industry dynamics and growth drivers
- Key Players Comparison: Competitive landscape with funding data
- Valuation Multiples: Industry benchmarks and comparable valuations
- India-Specific Insights: Cultural and regional market factors
- Government Policies: Regulatory environment and policy impact
- Market Risks: Industry-specific challenges and threats
- Recent Deal Activity: Latest funding rounds and M&A activity
- Strategic Implications: Investment recommendations and positioning
Each analysis category uses a standardized 1-10 scoring system with visual indicators:
- 🟢 8-10: Good - Strong performance, minimal concerns
- 🟡 5-7: Needs Improvement - Moderate concerns, action required
- 🔴 1-4: Critical Risk - Significant issues, major red flags
- 🔥 Hot/Priority: High-growth sector with strong investor interest
- 🌤️ Warm/Watchlist: Moderate interest, good potential
- ❄️ Cold/Pass: Limited interest, challenging market conditions
- ✅ Recommend: Strong investment opportunity
- 🔍 Further Validation Needed: Promising but requires additional due diligence
- ❌ Pass: Not recommended for investment
📦 pitch/
├── 📄 pyproject.toml # Project configuration and dependencies
├── 📄 README.md # This comprehensive documentation
├── 📄 uv.lock # Dependency lock file
├── 📄 monitor.py # WebSocket monitoring utility
├── 📄 report.md # Sample generated report
├── 📄 required_format.md # Template for report formatting
├── 📄 sample.pdf # Sample pitch deck for testing
├── 📂 src/pitch/ # Main application package
│ ├── 📄 __init__.py # Package initialization
│ ├── 📄 main.py # CLI entry points and server startup
│ ├── 📄 api.py # FastAPI application and REST endpoints
│ ├── 📄 crew.py # CrewAI agents and task orchestration
│ ├── 📄 status_manager.py # WebSocket status management
│ ├── 📂 config/ # Configuration files
│ │ ├── 📄 agents.yaml # AI agent definitions and behaviors
│ │ └── 📄 tasks.yaml # Task descriptions and expected outputs
│ ├── 📂 static/ # Frontend web interface
│ │ ├── 📄 index.html # Main web page
│ │ ├── 📄 script.js # JavaScript for interactivity
│ │ └── 📄 styles.css # Custom CSS styles
│ └── 📂 tools/ # Custom AI agent tools
│ ├── 📄 __init__.py # Tools package initialization
│ ├── 📄 document_tools.py # PDF/PPT parsing and text extraction
│ ├── 📄 knowledge_base.py # Vector store for knowledge retrieval
│ ├── 📄 serper_tool.py # Web search and research capabilities
│ └── 📄 custom_tool.py # Additional custom tools
├── 📂 knowledge/ # Knowledge base and reference materials
│ └── 📄 user_preference.txt # User preferences and settings
├── 📂 tests/ # Test suite (unit and integration tests)
├── 📂 uploads/ # Temporary file storage for uploads
└── 📂 __pycache__/ # Python bytecode cache
- FastAPI Application: RESTful API with automatic documentation
- File Upload Handling: Multi-file upload with validation
- WebSocket Manager: Real-time communication for progress updates
- Background Tasks: Asynchronous processing of analysis jobs
- Error Handling: Comprehensive error management and user feedback
- Agent Definitions: Six specialized AI agents with distinct roles
- Task Coordination: Sequential task execution with context sharing
- Status Callbacks: Real-time progress reporting to WebSocket clients
- Output Management: Structured report generation and formatting
- WebSocket Broadcasting: Multi-client real-time updates
- Job Tracking: Unique job ID management for concurrent sessions
- Progress Logging: Detailed activity logs for debugging and monitoring
- Connection Management: Automatic cleanup of dead connections
- PDF Parser: Robust PDF text extraction with error handling
- PowerPoint Parser: PPTX slide content extraction
- Web Research: Internet search capabilities for market research
- Knowledge Base: Vector store for retrieving relevant information
- Modern UI: Responsive design with Tailwind CSS
- File Upload: Drag-and-drop with progress indicators
- Real-time Updates: WebSocket integration for live progress
- Report Display: Formatted markdown rendering with download options
graph TD
A[User Upload] --> B[File Validation]
B --> C[Background Task]
C --> D[Document Parsing]
D --> E[Agent Orchestra]
E --> F[Pitch Analyzer]
E --> G[Market Researcher]
E --> H[Financial Analyst]
E --> I[Website Analyst]
E --> J[Investment Strategist]
E --> K[Due Diligence Analyst]
F --> L[Report Generation]
G --> L
H --> L
I --> L
J --> L
K --> L
L --> M[WebSocket Broadcast]
M --> N[User Interface Update]
Method | Endpoint | Description | Parameters |
---|---|---|---|
GET |
/ |
Main web interface | None |
POST |
/analyze |
Start pitch deck analysis | startup_name , files[] |
GET |
/static/{file_path} |
Serve static files | file_path |
Endpoint | Description | Events |
---|---|---|
/ws/{job_id} |
Real-time progress updates | task_started , task_completed , completed , error |
pitch_analyzer:
role: Expert Pitch Deck Analyst with venture capital experience
goal: Analyze pitch decks and provide comprehensive evaluation
backstory: Seasoned analyst with years of VC experience
pitch_analysis_task:
description: Analyze documents and create Executive Summary
expected_output: Formatted analysis following template
agent: pitch_analyzer
# Core Configuration
OPENAI_API_KEY=required_for_ai_functionality
OPENAI_MODEL=gpt-4-turbo-preview
# Optional Configuration
SERPER_API_KEY=for_web_search_capabilities
MAX_FILE_SIZE_MB=50
UPLOAD_DIR=uploads
LOG_LEVEL=INFO
Edit src/pitch/config/agents.yaml
to customize agent personalities and capabilities:
# Example: Enhance the Market Researcher Agent
market_researcher:
role: >
Senior Market Research Specialist with 15+ years experience in Indian markets
goal: >
Conduct deep-dive market analysis with focus on regulatory environment and
competitive dynamics specific to Indian startup ecosystem
backstory: >
You've analyzed hundreds of Indian startups and have intimate knowledge of
regulatory challenges, cultural factors, and market dynamics across sectors.
- Define the agent in
agents.yaml
- Create the agent method in
crew.py
:
@agent
def your_new_agent(self) -> Agent:
return Agent(
config=self.agents_config['your_new_agent'],
llm=self.llm,
verbose=True,
tools=[YourCustomTool()]
)
Edit src/pitch/config/tasks.yaml
to customize analysis depth and focus:
# Example: Enhanced Financial Analysis
financial_analysis_task:
description: >
Perform comprehensive financial analysis including:
- Revenue model sustainability analysis
- Unit economics deep-dive with sensitivity analysis
- Cash flow projections with scenario planning
- Competitive pricing analysis
- Funding requirement optimization
expected_output: >
Detailed financial analysis with interactive charts and sensitivity tables
- Define the task in
tasks.yaml
- Create the task method in
crew.py
:
@task
def your_custom_task(self) -> Task:
return Task(
config=self.tasks_config['your_custom_task'],
context_format=True
)
Create custom tools in src/pitch/tools/
:
# Example: Social Media Analytics Tool
from crewai.tools import BaseTool
from pydantic import BaseModel, Field
class SocialMediaAnalytics(BaseTool):
name: str = "Social Media Analytics"
description: str = "Analyze social media presence and engagement"
def _run(self, company_name: str) -> str:
# Your custom logic here
return f"Social media analysis for {company_name}"
- DocumentParserTool: PDF/PPT text extraction
- WebResearchTool: Internet search and research
- KnowledgeBaseTool: Vector-based knowledge retrieval
Modify src/pitch/static/styles.css
for custom branding:
/* Custom color scheme */
:root {
--primary-color: #your-brand-color;
--secondary-color: #your-secondary-color;
--accent-color: #your-accent-color;
}
/* Custom animations */
.custom-animation {
animation: yourCustomAnimation 2s ease-in-out;
}
Extend src/pitch/static/script.js
for additional functionality:
// Example: Custom progress indicators
function customProgressHandler(progress) {
// Your custom progress visualization
updateCustomCharts(progress);
}
Configure logging in your application:
import logging
# Custom logging configuration
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('pitch_analyzer.log'),
logging.StreamHandler()
]
)
Add performance tracking:
import time
from functools import wraps
def monitor_performance(func):
@wraps(func)
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"{func.__name__} took {end_time - start_time:.2f} seconds")
return result
return wrapper
# Check if your API key is set correctly
echo $OPENAI_API_KEY
# Test API key with curl
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY"
Solution: Ensure your API key is valid and has sufficient credits.
# Check file permissions
ls -la uploads/
# Check disk space
df -h
Solutions:
- Ensure
uploads/
directory exists and is writable - Check file size limits in configuration
- Verify supported file formats (PDF, PPT, PPTX)
Solutions:
- Check firewall settings for port 8000
- Ensure no other services are using the port
- Try a different port:
uvicorn pitch.api:app --port 8001
Solutions:
- Increase timeout values in agent configuration
- Check OpenAI API rate limits
- Monitor network connectivity
A: Yes! Modify the model in crew.py
:
self.llm = ChatOpenAI(
model_name="gpt-3.5-turbo", # or "gpt-4", "claude-3"
temperature=0.7,
)
A: Extend the DocumentParserTool
in src/pitch/tools/document_tools.py
:
def _parse_docx(self, file_path: str) -> str:
# Add DOCX parsing logic
pass
A: Yes! Use production settings:
uvicorn pitch.api:app --host 0.0.0.0 --port 8000 --workers 4
A: Implement database storage or file persistence:
# Example: Save to database
def save_analysis_result(job_id: str, result: str):
# Your database logic here
pass
A: Yes! Add webhook endpoints or API integrations:
@app.post("/webhook/slack")
async def slack_webhook(data: dict):
# Send results to Slack
pass
- Use Redis for session management
- Implement database connection pooling
- Add caching layers for repeated analyses
- Use container orchestration (Kubernetes)
# Example: Memory-efficient file processing
def process_large_files_in_chunks(file_path: str, chunk_size: int = 1024):
with open(file_path, 'rb') as file:
while chunk := file.read(chunk_size):
yield chunk
# Run all tests
pytest tests/ -v
# Run specific test categories
pytest tests/unit/ -v
pytest tests/integration/ -v
# Run with coverage
pytest --cov=pitch tests/
# Example test file: tests/test_agents.py
import pytest
from pitch.crew import Pitch
def test_pitch_analyzer_agent():
crew = Pitch()
agent = crew.pitch_analyzer()
assert agent.role == "Expert Pitch Deck Analyst"
def test_document_parsing():
# Test document parsing functionality
pass
# .github/workflows/ci.yml
name: CI/CD Pipeline
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: '3.11'
- run: pip install uv
- run: uv pip install -e .
- run: pytest tests/
# Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install uv
RUN uv pip install -e .
EXPOSE 8000
CMD ["uvicorn", "pitch.api:app", "--host", "0.0.0.0", "--port", "8000"]
# k8s-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pitch-analyzer
spec:
replicas: 3
selector:
matchLabels:
app: pitch-analyzer
template:
metadata:
labels:
app: pitch-analyzer
spec:
containers:
- name: pitch-analyzer
image: your-registry/pitch-analyzer:latest
ports:
- containerPort: 8000
We welcome contributions from the community! Here's how you can help improve the Pitch Deck Analyzer:
- 🐛 Bug Reports: Help us identify and fix issues
- ✨ Feature Requests: Suggest new capabilities and improvements
- 📖 Documentation: Improve guides, tutorials, and API docs
- 🧪 Testing: Add test cases and improve test coverage
- 🔧 Code Contributions: Submit bug fixes and new features
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/your-username/pitch-analyzer.git cd pitch-analyzer
- Create a feature branch:
git checkout -b feature/your-amazing-feature
- Make your changes and commit:
git commit -m "Add your amazing feature"
- Push to your fork:
git push origin feature/your-amazing-feature
- Create a Pull Request on GitHub
# Install development dependencies
uv pip install -e ".[dev]"
# Install pre-commit hooks
pre-commit install
# Run tests before committing
pytest tests/ -v
# Check code formatting
black src/
isort src/
flake8 src/
- Follow PEP 8 Python style guidelines
- Use Black for code formatting
- Add type hints for function parameters and returns
- Write comprehensive docstrings for all functions and classes
- Maintain test coverage above 80%
- ✅ Ensure all tests pass
- ✅ Add tests for new functionality
- ✅ Update documentation as needed
- ✅ Follow the commit message format
- ✅ Keep PRs focused and atomic
Contributors will be recognized in our:
- 📋 Contributors List in the README
- 🎖️ GitHub Contributors section
- 📢 Release Notes for significant contributions
This project is licensed under the MIT License. See the LICENSE file for full details.
MIT License
Copyright (c) 2024 Pitch Deck Analyzer Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
This project uses several open-source libraries:
- FastAPI: MIT License
- CrewAI: MIT License
- OpenAI Python: MIT License
- Tailwind CSS: MIT License
- 📄 Document Processing: Files are processed locally and deleted after analysis
- 🔐 API Keys: Stored securely in environment variables
- 🗑️ Data Retention: No persistent storage of uploaded documents
- 🛡️ Security: Regular dependency updates and security scanning
- 📖 API Documentation: Available at
/docs
when running the server - 🔧 Configuration Guide: See the configuration section above
- 🎯 Best Practices: Check our wiki for optimization tips
- 💬 GitHub Discussions: Ask questions and share ideas
- 🐛 Issue Tracker: Report bugs and request features
- 📧 Email Support: contact@pitch-analyzer.com
- 💼 Enterprise Support: enterprise@pitch-analyzer.com
- 🎓 Training Workshops: Custom training for your team
- 🏗️ Custom Implementation: Tailored solutions for enterprise
- ☁️ Cloud Deployment: Managed hosting and scaling
- 🔧 Integration Services: Connect with your existing tools
- 🤖 CrewAI Documentation: https://docs.crewai.com
- ⚡ FastAPI Documentation: https://fastapi.tiangolo.com
- 🧠 OpenAI API: https://platform.openai.com/docs
- 🎨 Tailwind CSS: https://tailwindcss.com
- 📊 Startup Analytics Tools: Similar analysis platforms
- 🤖 AI Agent Frameworks: Alternative multi-agent systems
- 📄 Document Processing: PDF and presentation parsers
- ✨ Initial release with six AI agents
- 🌐 Full web interface with real-time updates
- 📄 Support for PDF, PPT, and PPTX files
- 📊 Comprehensive analysis reports
- 🔌 WebSocket integration for live progress
- 🔄 Batch Processing: Analyze multiple pitch decks simultaneously
- 📱 Mobile App: Native iOS and Android applications
- 🌍 Multi-language Support: Analysis in multiple languages
- 🤖 Custom AI Models: Integration with custom fine-tuned models
- 📈 Analytics Dashboard: Historical analysis trends and insights
Ready to revolutionize your pitch deck analysis?
- ⬇️ Clone the repository
- 🔧 Follow the installation guide
- 🚀 Start analyzing pitch decks
- 📊 Get comprehensive insights
Made with ❤️ by the Pitch Deck Analyzer team