๐ฌ Demo Video Script
Guides recording a 5-7 minute demo of a sports analytics app, covering statistical concepts, UI walkthrough, and codebase highlights.
What this file does
Guides recording a 5-7 minute demo of a sports analytics app, covering statistical concepts, UI walkthrough, and codebase highlights.
When to use it
- You need a structured script for a product demo video
- You want to explain statistical models (Poisson) to a mixed audience
- You are showcasing a full-stack data science project
- You plan to create both a detailed and a short version of a demo
Assumes this stack
๐ฌ Demo Video Script
Duration: 5-7 minutes
Target Audience: Technical and non-technical users interested in sports analytics
๐ฅ SCENE 1: Introduction (30 seconds)
[Screen: Title card with app logo]
Narrator:
"Welcome to the Bundesliga Poisson Analysis application - a full-stack web platform that uses statistical modeling to answer a fascinating question: Are football matches driven by randomness, or is there skill and strategy at play?"
[Transition to app homepage]
๐ฅ SCENE 2: The Problem (45 seconds)
[Screen: Show README.md section on "What is This Analysis About?"]
Narrator:
"In football, goals are relatively rare events. The Poisson distribution is a mathematical model that describes the probability of rare, random events occurring at a constant rate. If goals truly follow a Poisson distribution, it suggests that match outcomes are largely unpredictable - driven more by chance than by momentum, tactics, or psychological factors."
[Visual: Simple animation showing Poisson formula]
"Lambda - represented by the Greek letter ฮป - is the key parameter. It represents a team's average scoring rate. The higher the lambda, the more dangerous the team."
๐ฅ SCENE 3: The Data (30 seconds)
[Screen: Show backend starting up with console output]
Narrator:
"Our application analyzes real data from the Bundesliga 2023/24 season - 612 matches across 36 teams. The backend, built with FastAPI and Python, loads this data and performs statistical calculations using the scipy library."
[Screen: Show API documentation at /docs]
"We've built 5 REST API endpoints that serve team statistics, league summaries, and statistical test results. All automatically documented with OpenAPI."
๐ฅ SCENE 4: Opening the App (20 seconds)
[Screen: Navigate browser to http://localhost:5173]
Narrator:
"Let's open the application. The frontend is built with React, TypeScript, and Material-UI, providing a professional, responsive interface."
[Screen: App loads, showing header and league summary]
๐ฅ SCENE 5: League Summary (40 seconds)
[Screen: Focus on League Summary Card]
Narrator:
"The dashboard immediately presents key league statistics. We can see there were 612 matches with 1,932 total goals - averaging 3.16 goals per match."
[Highlight Home Advantage metric]
"Notice the home advantage metric: +0.37 goals. This quantifies the well-known phenomenon that teams score more when playing at home. But is this due to crowd support, familiarity with the pitch, or just chance?"
[Show top scorers chips]
"Below, we see the top home scorers ranked by their lambda values. FC Bayern Mรผnchen leads with ฮป = 3.12, meaning they score over 3 goals per home match on average."
๐ฅ SCENE 6: Context Switching (30 seconds)
[Screen: Click through Home/Away/Combined toggles]
Narrator:
"One of the app's key features is context switching. We can analyze teams' performance at home, away, or combined. Watch how the data updates instantly."
[Click "Home" โ "Away" โ "Combined"]
"This helps us understand whether teams perform differently based on location - a critical factor in the Poisson model."
๐ฅ SCENE 7: Lambda Scatter Plot (60 seconds)
[Screen: Scroll to Lambda Scatter Plot]
Narrator:
"This scatter plot visualizes the relationship between home and away lambda values for all 36 teams. Each point represents one team."
[Hover over a point above the diagonal line]
"The diagonal line represents equal home and away performance. Points above the line indicate teams that are stronger at home."
[Hover over FC Bayern Mรผnchen]
"Bayern Mรผnchen, for example, has ฮป_home = 3.12 and ฮป_away = 2.47 - a clear home advantage."
[Hover over a point below the line]
"Teams below the line perform better away - unusual, but it happens!"
[Hover over a point near the line]
"Teams close to the diagonal line have consistent performance regardless of location."
๐ฅ SCENE 8: Team Selection (40 seconds)
[Screen: Click on Team Selector]
Narrator:
"To dive deeper into a specific team, we use the autocomplete team selector."
[Type "Bayer" and select "Bayer 04 Leverkusen"]
"Let's look at Bayer Leverkusen, one of the league's top teams."
[Screen: Observed vs Predicted chart appears]
"This bar chart compares the observed goal frequencies from actual matches to the frequencies predicted by the Poisson model."
๐ฅ SCENE 9: Observed vs Predicted (50 seconds)
[Screen: Focus on the bar chart]
Narrator:
"Blue bars show the actual observed frequencies - what really happened in matches. Orange bars show what the Poisson model predicts based on Leverkusen's lambda value."
[Point to p-value]
"The p-value of 0.458 is greater than our significance level of 0.05, so we 'fail to reject the null hypothesis.' In plain English: Leverkusen's goal-scoring pattern fits the Poisson distribution - it appears random!"
[Contrast with a team that doesn't fit]
"But not all teams fit the model. Some show systematic patterns - perhaps momentum effects or tactical adjustments during matches."
๐ฅ SCENE 10: Chi-Square Table (60 seconds)
[Screen: Scroll to Chi-Square Table]
Narrator:
"The chi-square table shows statistical test results for all teams. This is where we definitively answer: which teams follow randomness, and which don't?"
[Click on column headers to sort]
"We can sort by any column. Let's sort by p-value to see the best and worst fits."
[Sort by p-value descending]
"Teams at the top have high p-values - their goals fit the Poisson model perfectly. Essentially, their scoring is unpredictable, driven by the randomness of the game."
[Sort by p-value ascending]
"Teams at the bottom have low p-values and show a red 'X' - they don't fit the model. This suggests systematic factors: maybe they score in bursts due to momentum, or they adjust tactics when winning or losing."
[Use filter buttons]
"We can also filter to show only teams that fit, or only teams that don't fit the Poisson distribution."
๐ฅ SCENE 11: The Backend (30 seconds)
[Screen: Show API docs at /docs]
Narrator:
"Behind the scenes, our FastAPI backend handles all calculations. The interactive API documentation allows developers to test endpoints directly."
[Click "Try it out" on /api/teams]
"Each endpoint returns structured JSON data validated with Pydantic models."
[Show response]
"All data is strongly typed and validated, ensuring reliability."
๐ฅ SCENE 12: The Code (40 seconds)
[Screen: Show code editor with key files]
Narrator:
"The project is meticulously organized. The backend contains services for Poisson calculations, chi-square tests, and data loading."
[Show test file]
"We've written 37 comprehensive unit tests with 86-100% code coverage on core logic, ensuring statistical accuracy."
[Show frontend components]
"The frontend uses modern React patterns - TypeScript for type safety, Material-UI for components, and Recharts for data visualization."
๐ฅ SCENE 13: Key Insights (45 seconds)
[Screen: Back to app, showing summary statistics]
Narrator:
"So what have we learned? In this Bundesliga season:"
[Highlight statistics as mentioned]
"- About 66% of teams fit the Poisson distribution - suggesting randomness dominates
- The remaining 34% show systematic patterns - skill and strategy matter
- Home advantage is real: +0.37 goals on average
- Top teams like Bayern have ฮป values above 3, while defensive teams are closer to 1"
[Show a team that doesn't fit]
"Teams that don't fit the model might have momentum-based play styles, or perhaps they're more tactical - adjusting strategy based on match state."
๐ฅ SCENE 14: Educational Value (30 seconds)
[Screen: Show README educational section]
Narrator:
"Beyond the analysis, this application teaches statistical concepts. Users learn about probability distributions, hypothesis testing, and the scientific method."
[Scroll through explanations]
"The enhanced README explains lambda, p-values, and the chi-square test in accessible language - making statistics approachable for everyone."
๐ฅ SCENE 15: Technical Stack (30 seconds)
[Screen: Show docs/SUMMARY.md tech stack section]
Narrator:
"From a technical perspective, this is a production-ready full-stack application:"
[Show bullet points]
"- Backend: FastAPI with Python, pandas, scipy
- Frontend: React 18 with TypeScript and Material-UI
- Testing: pytest with high coverage
- Deployment: Ready for Docker, Vercel, Railway, or AWS"
๐ฅ SCENE 16: Use Cases (30 seconds)
[Screen: Show different use cases]
Narrator:
"Who benefits from this application?"
[Show each use case]
"- Sports analysts can identify teams with systematic vs random performance
- Bettors can use lambda values for probabilistic match predictions
- Coaches might study why some teams don't fit the model
- Students learn practical statistics with real-world data
- Data scientists see a complete ML workflow example"
๐ฅ SCENE 17: Future Enhancements (20 seconds)
[Screen: Show docs/DEPLOYMENT.md future section]
Narrator:
"Future enhancements could include: data export functionality, multi-season comparisons, live match updates, and team-vs-team predictions."
๐ฅ SCENE 18: Conclusion (30 seconds)
[Screen: Back to main dashboard, all visualizations visible]
Narrator:
"The Bundesliga Poisson Analysis application combines rigorous statistical modeling with an intuitive user interface. It answers deep questions about sports: Is football random? How much does home advantage matter? Can we quantify team strength?"
[Slow zoom out]
"Built with modern web technologies and comprehensive testing, this project demonstrates full-stack development, data science, and thoughtful UX design. The code is open-source and ready to deploy."
[Screen: GitHub link and thank you message]
"Thank you for watching! Links to the repository and documentation are in the description. Happy analyzing!"
[Fade to black]
๐ Production Notes
Camera Angles
- App Demo: Screen recording at 1080p
- Code Sections: Code editor with syntax highlighting
- Terminal: Dark theme with clear font (16px+)
Narration Style
- Pace: Moderate, clear
- Tone: Enthusiastic but professional
- Technical Terms: Explain on first use
Background Music
- Intro/Outro: Upbeat, energetic
- Main Sections: Subtle, ambient
- Code Sections: Minimal/silent
Editing Notes
- Add text overlays for key statistics
- Use arrows/highlights to point to UI elements
- Include smooth transitions between sections
- Add zoom effects for emphasis
- Include code snippets as B-roll
Graphics to Create
- Title card with app logo
- Poisson formula animation
- Lambda symbol visualization
- Chi-square test diagram
- Thank you/credits screen
๐ฌ Alternative: Short Version (2 minutes)
For social media or quick demos:
- Introduction (15s): What is Poisson analysis?
- Quick Tour (30s): Show all visualizations
- Key Insight (30s): One team example (fits vs doesn't fit)
- Tech Stack (20s): React + FastAPI + TypeScript
- Call to Action (15s): Link to repo
Total Runtime: 5-7 minutes (detailed) or 2 minutes (short)
What's inside
18 scenes with narrator lines, screen directions, production notes, and a 2-minute alternative script
Change this for your project
- Replace
Bundesliga Poisson Analysiswith your app name - Replace
duplys/poissonwith your repository URL - Replace
http://localhost:5173with your app's URL - Replace
Bundesliga 2023/24with your dataset description
Where it goes
Keep it in your repository where the agent or team that needs it will read it.
Worth borrowing
- Scene-by-scene breakdown with exact timings and visual cues
- Narrator explains statistical terms (lambda, p-value) in plain language
- Production notes for camera, music, and graphics help non-video people plan
Related Documents
Demo Video Script - Kinetic Ledger
Provides a complete 10-scene video script for demoing a blockchain-based fitness fraud detection app, including voiceover, visuals, and post-production checklist.
Demo Video Script (30-60 Seconds)
Guides recording and editing a 30, 60 second product demo video with a timed script, screen prep, and post-production steps.
Prompt Craft Reference
Teaches prompt engineering for HeyGen Video Agent with three control levels, a style block system, and motion vocabulary validated across 80+ test videos.
CodeForge AI - Hackathon Demo Script
Provides a timed 5-minute hackathon demo script with narration, shot lists, and production tips for pitching CodeForge AI.