The Off-Season Problem Nobody Warns You About
The gates were designed for a live calendar. A candidate comes in, we check availability, expected participation, recent activity, and whether the event has already started. Most candidates die at one of those four checkpoints, and the work of running them is repetitive enough that it starts to feel like maintenance rather than thinking. That feeling, it turned out, was the problem.
What nobody told us — and what we did not think to ask — is what happens to the gate logic when the season stops. Not a pause. A full stop: the stretch between the last game of one season and the first meaningful game of the next, when there is nothing to evaluate, no events to clear, and the whole apparatus sits idle. We assumed idle meant harmless. We were wrong about that in at least three specific ways.
The off-season is not a neutral period for a corpus. Players change teams, age a year, recover from injuries that were never publicly confirmed, gain or lose roles that will only become visible once games begin. The gates do not know any of this until we tell them, and during the off-season we had no systematic way of telling them anything. We would emerge in early autumn with a corpus that looked intact and was quietly full of rot.
Follow Jeff and the crew through side gigs, big dreams, bad ideas, and everyday life.
How the Gates Break When There Are No Games to Clear
The availability gate is the first one a candidate hits. In-season, availability is a live question answered by practice reports, lineup announcements, and the accumulated evidence of recent appearances. It is noisy but it is fresh. In the off-season, availability is a philosophical question. A player who appeared in the final game of the previous season is technically available. Whether that availability means anything — whether the role, the team context, or the physical condition behind it still holds — is a different matter entirely.
We ran the availability gate as a binary for years. Available or not. What we did not have was a staleness flag: a marker that said this entry was last confirmed n months ago and should be treated with corresponding suspicion. The gate passed candidates who had cleared it in March as if it were still March, even when we were now sitting in September.
The recent-activity gate had a related failure. It required a minimum number of appearances in a trailing window — a threshold we had set based on in-season cadence, where games come every few days and a window of thirty days contains real information. In the off-season, the window contains nothing by definition. A candidate who had not played in four months was not failing the recent-activity gate; they were simply not being evaluated at all. The gate was not broken. It was absent. And we had not noticed the difference.
"The gates assume the world is still moving," said Renata, who handles the corpus intake side. "When it stops moving, the gates don't fail loudly. They just go quiet, and quiet looks fine until you actually need them."
Quiet looking fine is the specific failure mode we keep returning to. A gate that throws errors is a gate you fix. A gate that produces no output is a gate you forget about.
What We Built to Keep the Gates Honest Through the Quiet Months
The first thing we tried was a staleness threshold on every corpus entry. Any candidate whose last confirmed appearance was more than sixty days old would be flagged as provisionally suspended — not removed, not disqualified, but held at the gate until a human reviewed the entry and either refreshed it or closed it out. Sixty days was a number we chose because it felt right, which is exactly the kind of reasoning we distrust in other people and apparently apply freely to ourselves.
The second piece was an off-season maintenance pass. Between the end of one season and the start of the next, we scheduled a structured review of every entry that would be eligible for evaluation in the coming year. Role changes, team movements, any public information about physical condition — anything that would affect the gate logic got logged explicitly. This sounds obvious in retrospect. It was not something we had ever formalized, because the in-season pace had always kept the corpus moving and moving things tend to stay current.
We also added a gate specifically for context continuity: a check that asked whether the conditions under which a player had built their corpus history still existed. This was partly inspired by some earlier thinking about what counts as enough history — and the uncomfortable corollary that history stops counting when the context that generated it no longer applies. A player who accumulated three seasons of data under one coaching system and then moved to a different team in the off-season does not have three seasons of data for evaluation purposes. They have a question mark with footnotes.
Where We Got It Wrong Even After We Thought We Had Fixed It
The staleness threshold was the right idea executed badly. Sixty days was too short for sports with long off-seasons and too long for sports with short ones. We had applied a single number across all five sports in the corpus, which meant the hockey entries were being flagged as stale in July — correctly, because it was July — while the baseball entries were sailing through the same check as fresh because their season was still running. The gate was not wrong, but it was not calibrated to the calendar of each sport, and the difference mattered.
We also underestimated how much the maintenance pass would cost in time. The structured review sounded like a few afternoons. It was closer to three weeks the first year, because we had never actually audited the full corpus in one pass before and what we found was not tidy. Entries that had been updated piecemeal over multiple seasons without anyone checking whether the updates were internally consistent. This is a version of a problem we have written about before — the corpus entry we kept updating without quite knowing why — and the off-season audit made it visible at scale.
The context-continuity gate produced its own embarrassment. In the first season we ran it, it flagged a large number of candidates as context-disrupted due to team or role changes. We treated those flags conservatively and held most of them out of evaluation for the first month of the new season, waiting for fresh data to accumulate. What we had not accounted for is that some players carry their performance characteristics across context changes — the corpus history was not as invalidated as the gate implied. We had built a gate sensitive enough to catch real problems and blunt enough to also catch things that were not problems, and we had no way yet to tell the difference.
Renata's summary of that first pass was accurate and not charitable: "We built a gate that was right about the category and wrong about half the instances."
What the Off-Season Gates Look Like Now, and What They Still Cannot Do
The staleness threshold is now sport-specific. Each sport has its own off-season calendar, and the flag timing is set against that calendar rather than against a universal day count. A candidate in a sport with a four-month off-season gets flagged at ninety days; a candidate in a sport with a six-week turnaround gets flagged at thirty. The numbers are still somewhat arbitrary, but they are arbitrary in a way that reflects the actual structure of each sport's year rather than our preference for round figures.
The maintenance pass is now scheduled and time-boxed. We allow two weeks, we work through the corpus in priority order — highest-frequency candidates first — and we stop at the two-week mark whether or not we have finished. The entries we did not reach stay provisionally suspended until they are reviewed. This is uncomfortable because it means some candidates enter the new season in a held state, but it is better than the alternative, which is a corpus that looks complete and is not.
The context-continuity gate survived but was narrowed. It now flags only candidates whose context change was both confirmed and significant — a team move, a documented role change, a gap in appearances long enough to suggest something structural rather than incidental. Minor changes no longer trigger it. This is a judgment call embedded in a gate that was supposed to remove judgment calls, and we are aware of the irony.
What the gates still cannot do is detect the changes that were never made public. A player who quietly shifted roles within the same organization, whose physical condition changed in ways that will only show up in early-season performance — those candidates pass every gate we have and arrive at scoring with history that may no longer mean what it meant. The off-season is full of that kind of invisible change, and it is the reason that early-season samples deserve more skepticism than they usually get, not less. The first few weeks of a new season are not the corpus refreshing itself. They are the gates finally getting information they have been waiting months to receive.
We still do not have a clean answer to how much off-season silence a corpus entry can absorb before the history in it stops being evidence and starts being archaeology. Sixty days, ninety days, a full calendar year — the honest answer is that it depends on the player, the sport, and the nature of whatever changed, and a gate that requires that much judgment is not really a gate anymore. It is just someone deciding.
Note: PlayerGem is a fictional analytics shop and these accounts are invented. Nothing here is a pick, a recommendation, or betting or investment advice, and the players, teams and competitions described do not exist.