Momentum HQ
Momentum HQ is a real-time analytics platform that ranks all 59 Team USA sports (51 Olympic disciplines and 8 Paralympic sports) by their growth trajectory heading into the LA28 Games. It answers one question: which sports are surging right now, and why?
Features
- Newspaper-Style Front Page : Hero story spotlighting the top-ranked sport with AI-generated headline, narrative, sparkline visualization, and momentum score. Featured cards for the week's hottest sports, a top-10 leaderboard, and a "Rising This Week" section for biggest gainers.
- All Sports Grid : Browse all 59 sports with filters for Olympic/Paralympic, Rising/Declining, and New for LA28. Each card expands to show full narrative, momentum signals, and linked articles.
- Momentum Charts : Interactive visualizations including tier breakdowns (Surging / Middle Pack / Watch List), top-30 horizontal bar chart, weekly score trend lines, and a score-vs-news-volume scatter plot.
- New for LA28 : Dedicated view for the six sports joining the LA28 program, with Team USA context and momentum data for each.
- Head-to-Head Comparison : Side-by-side comparison of any two sports across scores, trends, articles, and signals.
- Ask Gemini Chat Sidebar : Multi-session streaming chat interface powered by Gemini 3.1 Pro Preview with RAG retrieval and Google Search grounding for natural-language queries about sport momentum.
- 13-Week Timeline Slider : Navigate through historical momentum data to see how rankings evolved over time.
Functionality
The platform computes a composite Momentum Score for each sport using z-score normalization across four weighted signals: World Championship medal trajectory (30%), news volume over a 90-day window (35%), news recency comparing 14-day vs. 90-day coverage (20%), and a New-for-LA28 bonus (15%). Scores are normalized to a 20–98 range and recalculated weekly via an automated pipeline triggered by Cloud Scheduler every Monday at 6 AM ET.
The data pipeline supports both backfill (13-week history) and weekly append modes. It fetches Google News RSS feeds for all 59 sports, computes z-score composite scores, generates text embeddings for RAG retrieval, and writes everything to Firestore.
The chat system uses Gemini 3.1 Pro Preview with a system prompt injecting the full sport leaderboard and cosine-similarity-retrieved context from 768-dimensional embeddings. Chat sessions persist in Firestore with full message history across multiple sessions.
Technologies Used
| Layer | Technology |
|---|---|
| Frontend | Next.js 16, React 19, TypeScript, Tailwind CSS v4, shadcn/ui, Recharts |
| Backend | Python 3.12, FastAPI, NumPy, Uvicorn |
| AI/ML | Gemini 3.1 Pro Preview (chat + Google Search grounding), text-embedding-004 (RAG embeddings, 768-dim vectors, cosine similarity retrieval) |
| Database | Google Cloud Firestore (momentum data, chat sessions, vector embeddings) |
| Infrastructure | Google Cloud Run, Artifact Registry, Cloud Scheduler, Docker |
| Data Pipeline | Google News RSS, z-score composite scoring, automated weekly refresh |
Data Sources
| Source | Description | Usage |
|---|---|---|
| LA28 Official Sport Program | 35 sports / 51 Olympic disciplines | Defines the full roster of 59 tracked sports |
| USA World Championship Medals | All-time medal counts for 51 disciplines (Wikipedia, CC-BY-SA) | 30% weight in momentum score. Competitive performance signal |
| Google News RSS | Real-time weekly article feeds for all 59 sports | 55% combined weight (35% volume + 20% recency). Media attention signals |
All data is publicly available. No individual athlete data is used. Wikipedia data is CC-BY-SA 3.0.
Architecture
Google News RSS ─────┐
▼
build_momentum.py (weekly pipeline)
│
├─ z-score normalization
├─ momentum score computation
├─ text-embedding-004 (RAG vectors)
│
▼
Google Cloud Firestore
│
┌──────┴──────┐
▼ ▼
FastAPI API Cloud Scheduler
(main.py) (Monday 6AM ET)
│
├─ /api/momentum (sport data)
├─ /analyze/stream (Gemini chat + RAG)
└─ /sessions (chat persistence)
│
▼
Next.js Frontend
(newspaper-style dashboard)
Key Findings
1. New LA28 Sports Dominate the Rankings
The top of the leaderboard is ruled by sports new to the LA28 program. Baseball (98) and Flag Football (97) occupy the #1 and #2 spots, fueled by massive media attention (83 and 86 articles respectively in a 90-day window). By contrast, established powerhouses like Athletics (469 career WC medals) sit at #4 with only 16 articles.
| Rank | Sport | Score | Category | News (90d) | WC Medals |
|---|---|---|---|---|---|
| 1 | Baseball | 98 | New for LA28 | 83 | 3 |
| 2 | Flag Football | 97 | New for LA28 | 86 | 0 |
| 3 | Football | 90 | Olympic | 84 | 1 |
| 4 | Athletics | 86 | Olympic | 16 | 469 |
| 5 | Wrestling | 81 | Olympic | 5 | 313 |
Takeaway: The "newness factor" generates outsized media buzz. These sports have no World Championship pedigree (Flag Football has 0 WC medals) but dominate on news volume alone, suggesting the momentum index correctly captures cultural excitement vs. pure competitive history.
2. Media Coverage is Extremely Concentrated
Of 589 total articles tracked across all 59 sports, the distribution is starkly uneven:
| Coverage Level | Sports | % of Roster |
|---|---|---|
| 20+ articles | 7 | 12% |
| 6–20 articles | 12 | 20% |
| 1–5 articles | 31 | 53% |
| Zero articles | 9 | 15% |
Over half of Team USA sports receive fewer than 6 articles in 90 days. Nine sports (including Diving, Marathon Swimming, Eventing, and Goalball) generate zero media coverage. This concentration means that raw article count would produce a meaningless index; z-score normalization is essential to produce fair cross-sport comparisons.
3. Legacy Powerhouses with Declining Momentum
Several sports with the deepest World Championship pedigrees are seeing momentum erosion:
| Sport | WC Medals | Score | Trend |
|---|---|---|---|
| Artistic Swimming | 770 | 66 | -18 this week |
| Table Tennis | - | 60 | -14 this week |
| Athletics | 469 | 86 | -6 this week |
| Artistic Gymnastics | - | 38 | -10 this week |
Artistic Swimming holds 770 all-time WC medals (more than any other sport) yet dropped 18 points in one week to land at 66. This suggests that even dominant programs face momentum headwinds when media attention shifts to newer, more culturally resonant sports.
4. Wrestling: The Quiet Climber
Wrestling is the week's biggest riser (+7 to 81), driven not by media volume (only 5 articles) but by its deep competitive history (313 WC medals). Its 13-week trajectory shows steady acceleration:
Feb 9 → This week: 56 → 51 → 53 → 49 → 49 → 50 → 43 → 46 → 47 → 50 → 50 → 74 → 81
This pattern (low media, high WC pedigree, sudden upward movement) suggests competitive performance signals can drive momentum spikes independent of news coverage.
5. Paralympic Representation Gap
Paralympic sports cluster at the lower end of the momentum index:
| Sport | Score | WC Medals | News |
|---|---|---|---|
| Para Athletics | 61 | 469 | 0 |
| Para Cycling | 38 | 153 | 5 |
| Para Swimming | 26 | 0 | 0 |
| Wheelchair Basketball | 25 | 12 | 0 |
| Wheelchair Rugby | 21 | 0 | 1 |
| Boccia | 21 | 0 | 1 |
| Sitting Volleyball | 20 | 5 | 0 |
| Goalball | 20 | 0 | 0 |
Para Athletics scores 61 (driven by its 469 WC medals, shared with Athletics) but receives zero media articles. This gap underscores a systemic media parity problem: Paralympic sports are competitively strong but invisible in mainstream news coverage. The index exposes this gap rather than hiding it.
6. Score Distribution Reveals a Long Tail
| Tier | Score Range | Count | % |
|---|---|---|---|
| Surging | 75–98 | 5 | 8% |
| Middle Pack | 40–74 | 14 | 24% |
| Watch List | 20–39 | 40 | 68% |
The momentum landscape is heavily bottom-weighted: 68% of sports sit in the Watch List tier (score < 40). Only 5 sports break into the Surging tier. The mean score is 38.5 with a standard deviation of 21.1, confirming that momentum is not normally distributed. A small number of sports capture the vast majority of attention and competitive performance signals.
Log in or sign up for Devpost to join the conversation.