I'm an NC State fan with no background in this. For every game I'll post three predictions: my own gut pick, whatever my model comes up with, and a professional model's number to measure us both against. Then we find out who was closest.
Setting expectations
Mostly so nobody arrives expecting a finished product.
I can't write code. Claude writes all of it, and I'm learning what the pieces do as we go. Half of what happens here is me asking follow-up questions.
No stats background, no modeling background. I'm picking up the concepts one at a time. If something here is obviously wrong to you, you're probably right — tell me.
Maybe all season. That's expected. I want this to be a project I keep building for years, and the first version has to exist before it can get better.
Every game
This is the whole idea. A fan's guess, a homemade model, and a professional one. Same game, same deadline, all locked before kickoff. Over twelve games it should become obvious whether the model is adding anything, or whether I'd have been better off just picking with my gut.
The next game and its deadline are on the pick 'em page.
The yardstick
The final score. Every prediction is graded against what actually happened — how far off it was, game by game, all season. That is the only measure that cannot be argued with.
There is no third model to hide behind here. A prediction is either close to the result or it isn't, and the report card below keeps every one of them whether it flatters the model or not.
The interesting question isn't whether the model wins. It's how close a first attempt gets, and whether the gap between prediction and result shrinks over the season.
Report card
Updates itself after every game. All three predictions stay up permanently, along with the version number that produced them.
Every prediction is graded against the final score as soon as the result is in.
| Game | When | PackPredictions | The Model | Final |
|---|
The log
Every change gets written down here, so the whole build is followable from the start. Football 2026 is season one. Basketball is next, and then we do it all again with a year of hindsight.
Deliberately simple, built on last season's results and who's back this year. The goal was never to be good. It was to exist, produce a number for every game, and give us something to improve from. It shipped, and every number it has produced since is in the table above.
After each game I'll look at what the model got wrong and why, and change it when there's a real reason to. Sometimes that means changing nothing, which I'll also write about.
Test the whole thing against ten years of past games to find out what actually works. Building a model takes a day. Knowing whether it's any good takes a lot longer.