Cycling fans who can't watch races live face a frustrating dilemma: finding race recordings online means risking spoilers.
A single glance at a YouTube thumbnail, video title, or search result can reveal race outcomes. This ruins the experience of watching a 5-hour Grand Tour stage or a nail-biting Monument classic.
No-Spoiler Cycling is a curated, spoiler-free calendar of professional cycling races with direct links to watch content. What makes it interesting isn't just what it does—it's how it's built and maintained.
This system is built and maintained through conversational collaboration with Claude Code, Anthropic's AI coding assistant. Rather than writing code manually, the human describes what they want, and Claude Code:
The entire workflow happens through natural language conversation. Commands like "Find broadcast links for Tour Down Under for US, Canada, and UK" trigger Claude Code to orchestrate multiple API calls, evaluate results, update data files, regenerate HTML, and commit the changes.
| Technology | Purpose |
|---|---|
| Claude Code | AI agent that orchestrates the entire workflow—research, discovery, code generation, and deployment |
| Firecrawl API | Web search and scraping for content discovery across video platforms |
| Perplexity API | AI-powered research with citations for race details, broadcaster info, and course profiles |
| Node.js | Runtime for utility scripts and static site generation |
| GitHub Pages | Free static hosting—no backend server needed |
Static site with an AI-powered data pipeline:
This isn't a chatbot answering questions—it's an AI agent that does work. Claude Code reads files, calls APIs, writes code, makes decisions, and executes shell commands. The CLAUDE.md file (22KB of instructions) teaches Claude Code how to be a "spoiler-safe content researcher."
Claude Code coordinates multiple external services:
The "codebase" includes a 22KB instruction file (CLAUDE.md) that's essentially a detailed prompt teaching Claude Code the domain:
CRITICAL: Use your natural language understanding to identify spoiler content. Never rely on keyword matching or programmatic parsing.
Filtering spoilers isn't a regex problem—it requires understanding context. "Pogacar wins Stage 15" is a spoiler. "Stage 15 Summit Finish Full Coverage" is safe. Claude Code makes these judgment calls using language understanding.
The system maintains a broadcasters.json file that grows over time as Claude Code discovers reliable YouTube channels. Unknown channels get evaluated, added to "emerging," and potentially promoted to "trusted."
| File | Lines | Purpose |
|---|---|---|
CLAUDE.md |
500+ | Instructions for Claude Code—how to research, discover, and curate |
race-data.json |
5,200+ | 225 races with metadata, ratings, broadcast info |
generate-page.js |
1,000+ | Static site generator with filtering UI |
lib/perplexity-utils.js |
840 | AI-powered research functions |
lib/youtube-utils.js |
487 | Tiered YouTube discovery with channel trust levels |
lib/firecrawl-utils.js |
400+ | Web scraping and broadcaster site search |
The system is fully open source. To see AI-assisted development in action:
Watch as it calls Perplexity, searches YouTube channels, evaluates results, and updates the data files—all through conversation.
Key Takeaway: AI agents can do real work, not just answer questions. Human-AI collaboration is more powerful than either alone—humans provide judgment and direction, AI provides speed and tireless execution.