An AI-powered sales pitch analysis tool that provides comprehensive feedback on delivery and content quality, styled as feedback from famous Shark Tank investors. Analyze your sales pitch videos and receive personalized, actionable feedback tailored to different investor personalities and sales stages.
The Shark Tank Pitch Analyzer uses Google's Gemini AI models to analyze sales pitch videos across multiple dimensions:
- Delivery Analysis: Evaluates posture, tone, speech clarity, and gestures
- Content Analysis: Assesses effectiveness, structure, customer focus, and competitive positioning
- Personalized Feedback: Get feedback in the style of your favorite Shark Tank investor (Mark Cuban, Kevin O'Leary, Barbara Corcoran, etc.)
- Sales Stage Context: Receive feedback tailored to your prospect's stage in the buying journey
- 🎥 Video Analysis: Analyze YouTube videos or local video files
- 🎭 Investor Personas: Choose from 7 different Shark Tank investor personalities
- 📊 Comprehensive Scoring: Detailed scores (1-10) for each aspect with timestamp references
- 💬 Interactive Chat: Ask follow-up questions about your analysis
- 🌐 Web Interface: Beautiful Gradio-based web UI for easy access
- 📝 Export Results: Save analysis results as JSON files
- 🔄 Streaming Responses: Real-time streaming of AI-generated feedback
The project is organized into several key components:
-
analyzer/: Video analysis enginevideo_analyzer.py: Main orchestration logicanalyzers/delivery.py: Delivery aspect analysis (posture, tone, speech, gestures)analyzers/content.py: Content aspect analysis (effectiveness, structure, customer focus)
-
models/: Pydantic data modelsdelivery.py: Delivery analysis modelscontent.py: Content analysis modelsoutput.py: Combined analysis result model
-
chat/: Interactive chat workflowworkflow.py: Main chat workflow logicchain.py: LangChain chain setup for AI interactionsprompts.py: Prompt templates for investor personas
-
output/: Result formatting and savingformatter.py: JSON formatting and file saving utilities
-
utils/: Utilitiessettings.py: Configuration and environment variableslogger.py: Logging setup
main.py: Command-line interface for batch analysischat_main.py: Interactive chat workflow CLIgradio_app.py: Web-based Gradio interfaceshark_tank_data.py: Investor personalities and sales stage definitions
- Python 3.13 or higher
- uv package manager
- Google API key for Gemini models
- Clone the repository:
git clone <repository-url>
cd palindrom-project- Install dependencies:
make install
# or manually:
uv sync --all-groups- Create a
.envfile in the project root:
GOOGLE_API_KEY=your_google_api_key_here
GEMINI_MODEL=models/gemini-2.0-flash
LOG_LEVEL=INFO
# Optional Gradio settings
GRADIO_PORT=7860
GRADIO_HOST=127.0.0.1
GRADIO_SHARE=falseLaunch the Gradio web interface:
make gradio
# or manually:
uv run python src/gradio_app.pyThen open your browser to http://127.0.0.1:7860 (or the configured port).
Features:
- Select investor personality and sales stage
- Enter YouTube URL or use example videos
- View embedded video player
- Receive formatted analysis report
- Ask follow-up questions in the chat interface
Run the interactive chat workflow:
make chat
# or manually:
uv run python src/chat_main.pyOptions:
--investor: Choose investor persona (Mark Cuban, Kevin O'Leary, Barbara Corcoran, etc.)--stage: Select sales stage (Cold prospects, Problem-aware, Solution-aware, Ready to buy)
Example:
uv run python src/chat_main.py --investor "Kevin O'Leary" --stage "Solution-aware"Run a one-time analysis and save results:
uv run python src/main.py --video-url "https://www.youtube.com/shorts/B6u--LaDtf0" --output pitch-analysis.jsonOptions:
--video-url: YouTube URL or local file URI (default: example YouTube short)--output: Optional filename to save results (default: prints to console only)
The project includes a comprehensive Makefile for common tasks:
make install: Install all dependencies usinguv sync --all-groups
make check-lint: Run Ruff linter to check for code issuesmake check-type: Run MyPy type checkermake check-format: Check code formatting with Ruffmake check: Run all checks (lint, format, type)make format: Auto-format code with Ruff
make test: Run all tests with coverage reportmake test-single TEST=path/to/test.py: Run a single test file
make chat: Start interactive chat workflowmake gradio: Launch Gradio web interface
# Install dependencies
make install
# Format code
make format
# Run all checks
make check
# Run tests
make test
# Start web interface
make gradiopalindrom-project/
├── data/
│ ├── input/ # Input video files
│ └── output/
│ └── analyses/ # Saved analysis JSON files
├── src/
│ ├── analyzer/ # Video analysis engine
│ │ ├── analyzers/
│ │ │ ├── content.py
│ │ │ └── delivery.py
│ │ └── video_analyzer.py
│ ├── chat/ # Interactive chat workflow
│ │ ├── chain.py
│ │ ├── prompts.py
│ │ └── workflow.py
│ ├── models/ # Pydantic data models
│ │ ├── content.py
│ │ ├── delivery.py
│ │ └── output.py
│ ├── output/ # Result formatting
│ │ └── formatter.py
│ ├── prompts/ # Analysis prompt templates
│ │ ├── content.txt
│ │ └── delivery.txt
│ ├── utils/ # Utilities
│ │ ├── logger.py
│ │ └── settings.py
│ ├── chat_main.py # Chat CLI entry point
│ ├── gradio_app.py # Web UI entry point
│ ├── main.py # Batch analysis CLI
│ └── shark_tank_data.py # Investor personas
├── tests/ # Test files
├── Makefile # Build and run commands
├── pyproject.toml # Project configuration
└── README.md # This file
- Posture: Body positioning, alignment, confidence indicators
- Tone: Voice tone, emotional delivery, enthusiasm
- Speech: Clarity, pace, articulation, diction
- Gestures: Facial expressions, hand movements, body language
- Effectiveness: Opening hook, value proposition, call-to-action
- Structure: Logical progression, pacing, objection handling
- Customer Focus: Pain point identification, personalization, benefits vs features
- Delivery & Tone: Confidence, storytelling, social proof
- Competitive Positioning: Differentiation, market awareness
Each aspect receives:
- A score from 1-10
- Detailed assessment with timestamp references
- Specific improvement suggestions
- Key timestamp references for important moments
The tool supports 7 different Shark Tank investor personalities:
- Mark Cuban: Bold, decisive, values hustle
- Kevin O'Leary ("Mr. Wonderful"): Numbers-focused, blunt, loves licensing deals
- Barbara Corcoran: Scrappy underdog champion, warm and encouraging
- Lori Greiner ("The Queen of QVC"): Product guru, enthusiastic about consumer products
- Daymond John: Branding expert, strategic, focuses on long-term building
- Robert Herjavec: Empathetic, tech-savvy, invests in people
- Daniel Lubetzky: Values-driven, looks for social impact alongside profit
Feedback is tailored to four sales stages:
- Cold prospects: Don't know you, don't know they have a problem
- Problem-aware: Know the pain, exploring options
- Solution-aware: Comparing vendors
- Ready to buy: Removing final objections
- Python 3.13: Core language
- Google Gemini AI: Video analysis and chat responses
- LangChain: LLM chain orchestration
- Gradio: Web interface framework
- Pydantic: Data validation and modeling
- Ruff: Linting and formatting
- MyPy: Type checking
- pytest: Testing framework
- uv: Fast Python package manager
Create a .env file in the project root:
# Required
GOOGLE_API_KEY=your_api_key_here
# Optional
GEMINI_MODEL=models/gemini-2.0-flash
LOG_LEVEL=INFO
GRADIO_PORT=7860
GRADIO_HOST=127.0.0.1
GRADIO_SHARE=false
GOOGLE_CLOUD_PROJECT=your_project_idAnalysis results are saved to data/output/analyses/ by default. This can be configured via the OUTPUT_DIR setting in src/utils/settings.py.
The project uses:
- Ruff for linting and formatting
- MyPy for type checking
- Pydantic for runtime type validation
Run quality checks:
make check # All checks
make check-lint # Linting only
make check-type # Type checking only
make format # Auto-format codeRun tests with coverage:
make testRun a single test:
make test-single TEST=tests/test_example.py[Add your license information here]
[Add contribution guidelines here]