The need
A league member wanted historical records that ESPN did not provide. What began as a way to answer those questions grew into a maintained archive covering franchises, matchups, weekly leaders, streaks, drafts, and all-time performance.
The original system
The first published version was driven by a 32-sheet Excel workbook containing 29,444 stored formula cells. Weekly matchup pages were copied into staging sheets, normalized through reusable formulas, converted to fixed values, labelled by matchup, sorted by team and week, and distributed into team records.
Additional index sheets assembled team and league totals so category leaders could be sorted and published. The process worked, but annual preparation commonly required 30–40 hours, and a team or owner change could affect hundreds of references.
Redesign and automation
I redesigned the system with AI assistance over more than 100 hours of iterative development. The current workflow separates source data from presentation: weekly results are placed in a RAW workbook using stable ESPN team identifiers, while a Python generator builds the complete static website.
Names and owners now map to identifiers in one place, so a franchise change takes seconds rather than widespread workbook edits. The generator produces 39 linked static pages from the maintained dataset, preserving the portability and low overhead of the original site.
Ongoing operation
The archive is prepared at the beginning of each season and refreshed several times during the year. The preseason process that once took 30–40 hours now takes less than an hour under normal circumstances.
League members use it at different frequencies, but unanimously supported keeping it available when asked. It remains a specialized tool with a small, known audience rather than a high-traffic public product.
What this demonstrates
- Long-term ownership of a data-heavy project.
- Spreadsheet engineering and validation across a large formula model.
- Historical data normalization using stable identifiers.
- Python-based static-site generation and repeatable publishing.
- Incremental modernization without discarding trusted source data.
A decade-old manual process became a maintainable publishing system that preserves league history while reducing the most demanding annual update from dozens of hours to under one hour.