← Back to Calendar

No-Spoiler Cycling: An AI-Assisted Content Curation System

The Problem

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.

The Solution

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.

How It Works: Human-AI Collaboration

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:

  1. Researches race schedules, broadcaster licensing, and content availability
  2. Discovers video content across YouTube, FloBikes, Peacock, and other platforms
  3. Analyzes content for spoiler safety using natural language understanding
  4. Generates static HTML pages with verified, safe links
  5. Deploys via Git commits to GitHub Pages

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.

Core Technologies

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

Architecture

Static site with an AI-powered data pipeline:

┌─────────────────────────────────────────────────────────────────┐ │ CLAUDE CODE (AI Agent) │ │ Orchestrates all tasks via natural language conversation │ └─────────────────────────────────────────────────────────────────┘ │ ┌─────────────────────┼─────────────────────┐ ▼ ▼ ▼ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ Perplexity │ │ Firecrawl │ │ YouTube │ │ (Research) │ │ (Scraping) │ │ (Search) │ └───────────────┘ └───────────────┘ └───────────────┘ │ │ │ └─────────────────────┼─────────────────────┘ ▼ ┌───────────────────┐ │ race-data.json │ │ broadcasters.json│ └───────────────────┘ │ ▼ ┌───────────────────┐ │ generate-page.js │ └───────────────────┘ │ ▼ ┌───────────────────┐ │ GitHub Pages │ └───────────────────┘

What Makes This Interesting

1. Agentic AI in Action

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."

2. Tool Use & Orchestration

Claude Code coordinates multiple external services:

3. Natural Language as the Interface

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.

4. Spoiler Safety via AI Judgment

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.

5. Growing Knowledge Base

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."

Key Files

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

Try It Yourself

The system is fully open source. To see AI-assisted development in action:

  1. Install Claude Code (Anthropic's CLI)
  2. Clone the repo
  3. Ask Claude Code: "Research broadcast info for Paris-Roubaix 2026"

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.

Source Code

github.com/RobGruhl/no-spoiler-cycling