Behind the Numbers
The Sports Page
How this newsletter got built, what broke, and what we learned
Est. March 2026 Loading... ← Back to Archive

What This Is

The Sports Page is a newsletter for friends and family who love sports and are curious about the numbers behind them. Each issue takes one weird stat and explains what it actually means. No statistics degree required. New issues publish five or six times a week during the season, with a Sunday Edition that grades our predictions against reality.

This page is the behind-the-scenes story. How the newsletter gets built, what went wrong along the way, and what we learned from each mistake. If the newsletter teaches statistics through sports, this page teaches what it takes to build something from scratch — one commit at a time.

--
Issues Published
56
Git Commits
--
In the Queue

Content & Editorial Voice

The first issue was Paul Skenes’ 67.5 ERA on Opening Day. We didn’t have a design system, a publishing workflow, or a queue. We had one weird stat and a Google Font. The newsletter grew from there — one question at a time.

What we learned

The newsletter found its identity around Issue #5. Before that, it was a stats blog. After that, it was a publication with voices, opinions, and accountability. The Sunday Edition — where we grade our own predictions — turned out to be the soul of the project. Without it, we’re just another hot-take machine. With it, we’re an experiment in applied prediction.


Automation & Infrastructure

The first ten issues were published by hand: edit the file, update the index, commit, push. It worked until it didn’t. The automation journey was bumpy.

What we learned

Automation isn’t reliable until it’s boring. The Claude Code scheduled trigger worked sometimes. GitHub Actions works every time. We split the problem: mechanical publishing (Mon–Sat) is a deterministic script; editorial work (Sundays, new content) stays human. The best automation is the kind nobody notices.


Design & User Interface

The broadsheet aesthetic was there from day one. The navigation was not.

What we learned

Two hard lessons. First: never batch-replace HTML structure with regex. Files have different nesting patterns, and the same regex will match the wrong closing tag in complex layouts. Additive changes (inserting new elements) are safe to batch. Structural changes (swapping element types) require per-file attention. Second: the masthead went through three redesigns in one day before landing back at the original. Sometimes the first instinct was right.

“The best automation is the kind nobody notices. The best design is the one you don’t redesign three times.”

— Lessons from 56 commits

Data Integrity & Methodology

A statistics newsletter that publishes wrong numbers has no reason to exist. We got some wrong.

What we learned

The losing-streak error taught us the most important lesson of the project so far: a newsletter about statistical rigor cannot be sloppy with its own statistics. We added “triple-verify every number” as the first editorial rule. If ESPN, Baseball-Reference, and MLB.com don’t agree, we don’t publish until they do. This rule exists because we broke it.


The Arc

In 23 days, The Sports Page went from a single HTML file about Paul Skenes to a daily-publishing newsletter with automated infrastructure, multiple editorial voices, a prediction accountability system, and a five-part investigative series on federal policy’s impact on college athletics.

It also broke. The publishing trigger never existed. The masthead was redesigned three times in one afternoon. An issue went live with the wrong number. A stat was published without verification. A batch script put a form outside its container and it spanned the entire browser window.

Every fix made the system better. The queue ordering became explicit after vague priorities caused confusion. The variety rule was added after the EO series ran too hot. The triple-verify rule was added after a wrong number reached the page. The navigation was added after someone tried to get back to the homepage and couldn’t.

That’s the real story of this project: not that it works, but that it learned how to work. One commit at a time.

“Every fix made the system better. Not because the fixes were brilliant, but because the failures were specific.”

— The Sports Page, on building in public

Peek Ahead: What’s in the Queue

These are written, reviewed, and ready to publish. The autopublish script picks from this list every weekday morning.

Like what you see? Have a better idea? ↓

Pitch a Story

Noticed a weird stat? Saw something that doesn’t add up? Send it in. The best ideas become issues.

or post on GitHub
The Sports Page
Share The Sports Page
Scan the code or share the link. Free, always.
QR Code
pem725.github.io/the-sports-page
© 2026 The Sports Page · A Statistical Dispatch for Friends & Family