A Calendar
for Fans Who
haven't looked yet.
An AI-assisted curation system for spoiler-free cycling.
The front page of the internet will tell you who won.
Cycling fans who can't watch live face a real dilemma: finding race recordings online means risking spoilers. A YouTube thumbnail, a video title, a sidebar recommendation — any of them can ruin a five-hour Grand Tour stage or a nail-biting Monument classic before you've clipped in.
A curated roadbook of professional races, with verified-safe links.
Every race on the calendar has been evaluated for spoiler-safe viewing. Full replays, extended highlights that save the result for the natural finish, and broadcaster links by region — so you can watch the race unfold, not the headline.
a.Full Replays
Start-to-finish broadcast feeds where licensed. FloBikes, Discovery+, Peacock, Max, TNT Sports, SBS, 7plus, and national broadcaster YouTube channels.
b.Safe Highlights
Extended highlight cuts where the winner is revealed only at the natural finish — chronological, neutral title, no post-race interviews bleeding through.
c.Where-to-Watch
Broadcast rights by geography. Deep links into the event page where possible; clearly labelled login-walled root URLs where not.
Human-AI collaboration, conversationally.
The system is built and maintained through conversation with Claude Code, Anthropic's AI coding assistant. Rather than writing the curation scripts by hand, the human describes what they want — "find broadcast links for Tour Down Under for US, Canada, and UK" — and Claude Code orchestrates the work end-to-end.
- 01Researches race schedules, broadcaster licensing, and content availability via Perplexity.
- 02Discovers video content across YouTube, FloBikes, Peacock, Max, and broadcaster sites via Firecrawl.
- 03Analyses each candidate for spoiler safety using language understanding, not keyword matching.
- 04Updates race-data.json via idempotent scripts that deep-merge broadcast, riders, and race details.
- 05Regenerates static HTML for the calendar, rider pages, and race detail pages.
- 06Deploys via Git commits to GitHub Pages — no backend, no database.
Static site. AI-powered pipeline.
┌─────────────────────────────────────────────────────────────────┐
│ CLAUDE CODE (AI Agent) │
│ Orchestrates all tasks via natural language conversation │
└─────────────────────────────────────────────────────────────────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ Perplexity │ │ Firecrawl │ │ YouTube │
│ Research │ │ Scraping │ │ Discovery │
└───────────────┘ └───────────────┘ └───────────────┘
│ │ │
└─────────────────────┼─────────────────────┘
▼
┌────────────────────────┐
│ data/race-data.json │
│ data/broadcasters.json│
│ data/riders*.json │
└────────────────────────┘
│
▼
┌────────────────────────┐
│ generate-*.js │
│ (static HTML build) │
└────────────────────────┘
│
▼
┌────────────────────────┐
│ GitHub Pages │
└────────────────────────┘
§Core Technologies
| Claude Code | AI agent that orchestrates the entire workflow. |
| Perplexity API | AI research with citations for race details and broadcast rights. |
| Firecrawl API | Web search and scraping across video platforms. |
| Node.js | Runtime for utility scripts and static site generation. |
| GitHub Pages | Free static hosting — no backend server. |
§Key Files
| File | Lines |
|---|---|
| CLAUDE.md | 207 |
| data/race-data.json | 29,174 |
| lib/perplexity-utils.js | 840 |
| lib/rider-utils.js | 631 |
| lib/youtube-utils.js | 487 |
| lib/firecrawl-utils.js | 405 |
| generate-page.js | 386 |
Five ideas in one working system.
i.Agentic AI in action
This isn't a chatbot. Claude Code reads files, calls APIs, writes code, makes decisions, executes shell commands. The CLAUDE.md file teaches it how to be a spoiler-safe content researcher — domain knowledge expressed as prompt, not as code.
ii.Tool use & orchestration
A single request like "update April broadcast deep links" fans out to Perplexity for rights research, Firecrawl for event-page discovery, and YouTube channel trust-tier checks — then reduces back into a single coherent update commit.
iii.Natural language as interface
The codebase includes an instruction document that is, effectively, a detailed prompt. It's shorter and more editable than the scripts it governs — and it's where the curation policy actually lives.
iv.Spoiler safety via judgement
"Pogacar wins Stage 15" is a spoiler. "Stage 15 Summit Finish — Full Coverage" is not. No regex can reliably tell those apart; language understanding can. The filter is a judgement call at every link.
v.A knowledge base that grows itself
data/broadcasters.json expands over time as Claude Code discovers new reliable YouTube channels and broadcaster event-page patterns. Unknown channels get evaluated, added to "emerging," and promoted to "trusted" when they prove themselves across multiple races.
The whole system is open source.
To see AI-assisted curation in action:
- 01Install Claude Code.
- 02
- 03Ask Claude Code: "Research broadcast info for Paris-Roubaix 2026."
Watch it call Perplexity, search YouTube channels, evaluate results, and update the data files — all through conversation.
AI agents can do real work, not just answer questions. Human-AI collaboration is more powerful than either alone — humans provide judgement and direction, AI provides speed and tireless execution.