π Live Vercel Deployment: stadium-copilot-ruby.vercel.app
Note
The app is fully deployed to Vercel as a hybrid serverless application:
- The frontend HTML/JS/CSS assets are served instantly via Vercel's global Edge CDN.
- The FastAPI Python backend is routed to Vercel Serverless Functions.
- Powered by Google Gemini 3.5 Flash with reasoning tokens enabled and direct REST integration.
Stadium Copilot is a single web app with six GenAI-powered tools that a fan or a staff member opens on match day:
| Tool | What it does | Categories it hits |
|---|---|---|
| Ask Copilot | Multilingual chat assistant grounded in real stadium context (gates, transit, accessibility, sustainability, food, emergency info). Answers in 12 languages. | Navigation, multilingual assistance |
| Crowd Intelligence | Reads live (simulated) gate-occupancy data and has GenAI write a plain-English operations advisory β which gate is congested, what to do about it β instead of a raw dashboard. Includes summary statistics and animated visualizations. | Crowd management, operational intelligence, real-time decision support |
| Accessibility | Rewrites dense stadium announcements into plain, 6th-grade-level language in any of 6 languages, with one-tap read-aloud (browser TTS). Includes sample text presets. | Accessibility, multilingual assistance |
| Getting There | Given a fan's starting point, GenAI recommends the lowest-carbon practical route using only the transit options this stadium actually offers, with quick-info transit cards. | Transportation, sustainability |
| Stadium Map | Interactive SVG map of MetLife Stadium with clickable gate markers. Shows live occupancy status, services, and capacity per gate. | Navigation, real-time decision support |
| Volunteer & Staff Assistant | Role-aware AI assistant for volunteers, security, medical, concessions, and guest services staff. Provides duty briefings, emergency protocols, and situational awareness based on assigned zone. | Operational intelligence, real-time decision support |
One codebase, one running server, six demoable stories β GenAI actually reasoning over structured data (not just a wrapped chatbot) in every tab.
βββββββββββββββββββββββββββββββ
Browser βββββββΊ β frontend/ (static HTML/ β
(fan/staff) β CSS/JS, no build step) β
ββββββββββββββββ¬βββββββββββββββββ
β fetch() JSON
βΌ
βββββββββββββββββββββββββββββββ
β backend/main.py (FastAPI) β
β /api/chat β
β /api/volunteer-chat β
β /api/crowd-insight β
β /api/accessibility-simplify β
β /api/sustainability-tip β
β /api/health β
ββββββββββββββββ¬βββββββββββββββββ
β
βββββββββββββββββββΌββββββββββββββββββ
βΌ βΌ
backend/mock_data.py backend/llm.py
(gates, live occupancy, (provider-agnostic
transit, accessibility, GenAI wrapper β
food, emergencies, OpenAI or Anthropic)
sustainability context) β
βΌ
Google Gemini API
Every endpoint makes exactly one LLM call, with a purpose-built system prompt:
- Fan Chat β grounded in the full stadium context (gates, transit, accessibility, food, emergencies, sustainability) so it can't hallucinate. Replies in the fan's chosen language (12 supported).
- Crowd Advisory β turns raw occupancy numbers into a directive control-room briefing. The AI is reasoning over live data, not just chatting.
- Accessibility Rewrite β plain-language rewrite task with explicit reading-level target, in the fan's chosen language.
- Sustainability Route β constrained recommendation from the stadium's real transit options, with emissions comparison.
- Volunteer/Staff Chat β role-aware (volunteer/security/medical/concessions/guest services) and zone-aware prompts give context-specific duty briefings and emergency protocols.
git clone <your-repo-url>
cd stadium-copilot
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS/Linux:
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# Open .env and paste your API key:
# GEMINI_API_KEY=your-gemini-key-here
# (Default LLM_PROVIDER is "gemini")
cd backend
uvicorn main:app --reload --port 8000Open http://127.0.0.1:8000 β that's the whole app, frontend included.
No API key yet? The app still runs β every endpoint returns a clear, non-crashing error so you can demo the UI while you wire up a key.
- Ask Copilot β click the "Food options" chip, then switch language to Spanish and ask a follow-up. Shows multilingual + navigation in one breath.
- Crowd Intelligence β hit "Refresh live data" twice so judges see the bars animate and the advisory text change. Point out the summary stats update too.
- Accessibility β click the "Re-entry policy" sample, hit Simplify, then "Read aloud". Concrete, visible accessibility win.
- Getting There β type "Midtown Manhattan", submit, read the recommendation out loud.
- Stadium Map β click different gates, show live status colors changing with crowd data.
- Volunteers β select "Security Staff" + "Gate A", ask "What's my emergency protocol?". Shows operational intelligence for staff.
Close with: "Six tools, one GenAI call each, one server β covering all eight categories in the brief."
| Category | Where |
|---|---|
| β Navigation | Ask Copilot, Stadium Map |
| β Crowd management | Crowd Intelligence |
| β Accessibility | Accessibility tab, sensory room info |
| β Transportation | Getting There |
| β Sustainability | Getting There (lowest-carbon route) |
| β Multilingual assistance | Ask Copilot (12 languages), Accessibility (6 languages) |
| β Operational intelligence | Crowd Intelligence, Volunteer Assistant |
| β Real-time decision support | Crowd advisory, live gate occupancy, map status |
Demo data only. Not affiliated with or endorsed by FIFA.