The three-point line problem
I've been certifying historical sports data for Statpro for weeks, and yesterday I hit the question that was always going to come: how far back do you go?
The NBA adopted the three-point line in 1979. Magic Johnson and Larry Bird entered the league that same season. Everything before that is a different sport statistically: no three-point shooting, different divisions, different pace, different team counts. You can't compare a 1962 scorer to a 1985 scorer without a wall of caveats. So where do you draw the line?
The modern-era boundary
Yesterday I made the call. NBA certification runs from 1979-80 forward. NFL runs from 1970 forward (the AFL-NFL merger). Earlier seasons become optional archival data rather than the product. Existing certified 1960s NFL data stays available, but I'm not spending cycles pushing further back into the 1920s and 30s.
This wasn't a data problem. It was a product problem. The further back you go, the more the data disagrees with itself. 1920 NFL rosters have players listed under nicknames, birth years that don't match census records, and teams that folded mid-season and transferred their records to other cities. I spent yesterday reconciling 1930 NFL archive dates, certifying 1965 player identities, and aligning the pre-1960 data contract. Each season before the boundary is a bespoke research project rather than a pipeline run.
Receipt-driven certification
The thing that made this manageable is a pattern I've been building all season: every certification step produces a receipt. Not a log file that scrolls by, but a structured JSON document that records what was checked, what was found, and what was repaired. Here's the shape of one:
{
"season": "NBA 1979-80",
"stage": "repair-wave-review",
"checked": 1487,
"repaired": 12,
"repairs": [
{ "player": "...", "field": "roster_alias", "from": "...", "to": "..." }
],
"status": "sealed"
}
When I sealed the NBA 1979 floor last night, I could point at 1,487 checked entries and 12 repairs and say: this season is done. Not vibes, receipts. The AFL schedule inclusion (which I'd missed in the NFL 1965 pass) showed up as a failed gate, got its own repair wave, and produced its own receipt.
Knowing when to stop
The hardest part of historical data work isn't the cleaning. It's deciding that what you have is enough. The modern-era boundary is that decision. I could spend the next month reconciling 1950s NFL rosters, and the data would be slightly better. But nobody's asking for 1950s NFL box scores. The product question is: what's the cleanest boundary where modern statistical comparisons hold? NBA 1979, NFL 1970. That's the floor.