The starting point
Fantasy football leagues produce a lot of data and almost no narrative. The Tuesday Report connects to a Sleeper or ESPN league and writes the weekly story: recaps, matchup previews, injuries, waiver moves, and a trending ticker. It also grades your draft, league-aware, with different weights for superflex and one-quarterback formats and a curve from 95 to 45.
What I built
The generator is Node and TypeScript. A GitHub Actions cron runs after the Monday night game, pulls the league through the Sleeper and ESPN APIs, and hands the data to Claude with one structured prompt per section so the tone stays consistent week to week. Netlify Functions and Netlify Blobs handle the per-league draft reports and caching; Google sign-in gates each user's leagues.
How it works
Every matchup is drawn on a chalkboard football field, each starter placed as an X or an O with a headshot, projection, and injury flag. On Sunday the scores tick in player by player and the ball slides to the yard line the score says it should be on.
How it works
The iPhone app is native Swift, iOS 16 and up, and wraps the live site in a WKWebView rather than rebuilding it. Everything app-specific is layered on from the app side: a script and stylesheet injected on every page add a bottom tab bar and safe-area padding, taps and live score ticks post to a message handler that fires UIKit haptics, and page hops dissolve behind a snapshot so the web app reads as screens instead of loads. Pull to refresh, edge-swipe back, universal links, and push notifications for the report drop, kickoff, trades, and injuries are native. Nine App Store screenshots and a 24 second preview were built from simulator captures. The fifth build is on TestFlight.
Where it landed
It is live at thetuesdayreport.com. Anyone can connect their own account and pick their leagues; my home league gets an extra hand-written layer on top of the universal render.



