RAINKFootball Weather
Findings, methodology notes, and the occasional caught mistake.All posts

We Taught a Computer to Vote in the AP Poll

Saturday, October 17 was a mess. No. 1 Georgia lost at home to unranked Auburn. No. 2 Notre Dame lost at BYU. No. 6 Alabama got handled at Tennessee, and No. 7 Texas lost at home to unranked Florida. By dinnertime every fan in America was asking the same question: where does everybody land on Sunday? So we built a thing that answers it. It learned how AP voters react to a weekend of football, and it updates every time a game ends.

The short version: our new AP poll projection studied 147 weeks of AP polls from 2014 to 2025. Tested on seasons it never saw, it put each team within 1.12 spots of where voters really ranked it, on average. Just keeping last week's order is off by 2.80. It's live on the Rankings page and the homepage, and it says BYU jumps from No. 8 to No. 3.
Average spots off, seasons it never saw1.12
Same, if nothing moved from last week2.80
Real top 10 teams in our top 109.52
Seasons it beat "nothing moves"11 of 11
A large football stadium with two tall blue towers and a sign reading LaVell Edwards Stadium, in front of snow-dusted mountains at dusk, with an empty parking lot in the foreground.
LaVell Edwards Stadium in Provo, Utah, where No. 2 Notre Dame found out Saturday night that the mountains aren't the only thing that's hard to climb. Photo: Pastelitodepapa, CC BY 4.0, via Wikimedia Commons.

How it works

The AP poll is a panel of sportswriters and broadcasters, each ranking their top 25. A first-place vote is worth 25 points, second place 24, all the way down to 1 point for 25th. Add it all up and you get the poll.

Our projection tries to guess how many of those points each team gets next week. It looks at:

  • Where you were. Your points in last week's AP and Coaches polls.
  • What you did. Won, lost, or sat at home.
  • Who you did it to. Beating a top-5 team is a different thing than beating a team nobody's voting for.
  • How and where. The final margin, and whether you were home, on the road or at a neutral site.
  • Your record, whether you lost the week before, and whether you're in a power conference.

The teams it ranks are everyone in last week's AP or Coaches top 25, plus anybody who beat one of them. It sorts them by projected points, and that's the projected poll.

Wait, how does it "learn"? We showed it every week from 2014 to 2025 (we skipped 2020, the season of cancellations and late starts): last week's polls, that weekend's scores, and the poll that came out after. It's a type of model called gradient boosting, which is basically hundreds of tiny "if this, then that" rules stacked on top of each other, like "if you were top 5 and lost to an unranked team, you drop a bunch." Nobody wrote those rules by hand. The model found them in the voters' own history.

Is it any good?

A model that's only tested on games it already studied is like a kid grading their own homework. So we hid one season at a time: teach it on the other ten, project every week of the hidden one, then compare with the real poll. Our yardstick is the lazy projection: assume nothing moves, last week's poll stays put.

Our projectionNothing moves
Average spots off1.122.80
Exactly the right spot47.0%22.2%
Within one spot77.4%45.2%
Average spots off, upset weeks1.132.99

It beat "nothing moves" in all 11 hidden seasons. The last row is the one we care about most: the 70 weeks when one of the very top teams (roughly the top 3) lost, which is exactly when you want a projection. It stayed just as sharp (1.13 spots off) while the lazy guess got worse (2.99).

What AP voters actually do

Since we had 11 seasons of polls on the table anyway, we looked at the voters' habits directly. Some of these you'd guess. Some are a little funny.

Losing as a top-5 team

A top-5 team lost 100 times in our data. The next week they landed around No. 8 (8.38 on average). And here's the wild part: not one of the 100 fell out of the poll. Voters forgive a lot if you were great the week before. But not every loss costs the same:

A top-5 team that…TimesAvg. spots dropped
lost to a ranked team714.76
lost to an unranked team296.31
lost at home266.00
lost on the road585.47
lost at a neutral site163.00
lost by 1–7554.82
lost by 8–16214.95
lost by 17 or more246.33

Losing to an unranked team hurts more than losing to a ranked one. Getting blown out hurts more than a close loss. And losing at a neutral site (think a big early-season showdown in an NFL stadium) barely hurts at all. Georgia and Texas both just lost at home to unranked teams, the most painful kind there is.

The giant killers

A team ranked 6th to 12th beat a top-3 team 16 times in our data. On average they jumped to No. 3.75. Michigan in 2021 went from 6th to 2nd after beating Ohio State. Miami in 2017 went from 7th to 2nd after beating Notre Dame. Oregon in 2025 went from 6th to 2nd after beating Penn State. So when the projection sends BYU from No. 8 to No. 3 after beating No. 2 Notre Dame, that's right in line with history.

Unranked teams have it tougher. An unranked team beat a top-10 team 102 times, and only 40 of them (39.2%) made the next poll, usually near the bottom (No. 21.2 on average). Voters love an upset. They just don't always love the team that pulled it off.

Style points are real, but only up to two touchdowns

Here are teams ranked 6th to 25th beating an unranked team, by how much they won. "Points gained" is the share of a perfect score (every voter putting you first) that a team picked up, in percentage points.

Won byGamesAvg. spots climbedPoints gained
1–73151.074.3
8–142191.746.5
15–273381.816.9
28 or more4121.666.8

Squeaking by an unranked team gets you less. Winning by two touchdowns gets you more. Winning by 50? Voters shrug. Running up the score buys you nothing extra, so coaches, feel free to put in the backups.

One more: ranked teams (6th to 25th) with no game that week still climbed 0.94 spots on average, across 436 off weeks. Sometimes the best way to move up is to stay home and let everybody else lose.

A tall press box with dark windows and maize trim and the words Michigan Stadium on top, seen through white goal posts on a cloudy day.
Michigan Stadium's press box, seen through the goal posts. AP voters are sportswriters and broadcasters, so plenty of ballots get made up somewhere like this. Photo: Funnyhat, public domain, via Wikimedia Commons.

Tonight's projection

Here's where it thinks everyone lands in the week 8 AP poll, with 17 of 17 games involving ranked teams final. The real poll comes out Sunday afternoon.

Proj.TeamLast weekThis week
1Miami ▲23W 43–35 vs Florida State
2Ohio State ▲24W 19–15 at Indiana
3BYU ▲58W 28–24 vs Notre Dame
4Georgia ▼31L 24–27 vs Auburn
5Ole Miss ▲49W 31–3 vs Missouri
6Notre Dame ▼42L 24–28 at BYU
7Indiana ▼25L 15–19 vs Ohio State
8Texas Tech ▲210W 53–25 vs Arizona State
9Utah ▲211W 27–24 at Colorado
10Tennessee ▲414W 26–10 vs Alabama
11UCLA ▲112W 17–7 vs Wisconsin
12Kentucky ▲315W 21–13 at Oklahoma
13Alabama ▼76L 10–26 at Tennessee
14Iowa ▲317no game
15Houston ▲520W 35–32 vs Oklahoma State
16Texas ▼97L 24–27 vs Florida
17USC ▲219no game
18LSU ▲422W 31–0 vs Mississippi State
19Wake Forest ▲221W 41–7 at California
20Missouri ▼713L 3–31 at Ole Miss
21Boise State ▲223no game
22SMU ▲224W 23–13 vs Virginia
23Northwestern ▲225W 24–21 at Michigan State
24Florida—W 27–24 at Texas
25Auburn—W 27–24 at Georgia

The headline: BYU jumps from 8th to 3rd. Miami takes over No. 1, though it's basically a tie with Ohio State (1,578 projected points to 1,576). Georgia only slides to 4th, which we'll get to. The biggest falls: Texas, which lost at home to unranked Florida, drops from 7th to 16th, and Alabama, beaten by 16 at Tennessee, drops from 6th to 13th. Florida and Auburn, who pulled off the two big road upsets, sneak in at 24th and 25th, and Oklahoma State drops just out, to 26th.

Wait, why aren't Texas Tech and Utah higher?

Fair question. Texas Tech is 6–0 and just beat Arizona State by 28. Five teams ranked above the Red Raiders lost on Saturday: Georgia, Notre Dame, Indiana, Alabama and Texas. Utah sat behind every one of them too, and is now 6–0 after squeaking past Colorado 27–24 late Saturday night. And yet the projection moves each of them up just two spots, and keeps one-loss Georgia, Notre Dame and Indiana ahead of both. Is the computer being unfair to the Big 12? We checked four ways.

1. Georgia, Notre Dame and Indiana had a huge head start

Remember, the poll runs on points. Last week there were 70 voters, so a perfect score was 1,750 points. Georgia had 1,745 of them. Notre Dame had 1,630, Indiana 1,461. Texas Tech had 1,132 and Utah 1,073. That put Texas Tech 613 points behind Georgia, 498 behind Notre Dame and 329 behind Indiana.

Now the swing. Historically, a top-5 team's first loss costs it 21.9% of a perfect score, about 384 points with 70 voters. An unbeaten team ranked 8th to 12th that beats an unranked opponent picks up just 3.6%, about 63 points. Add those together and a typical week closes a gap of about 447 points. Texas Tech needed 613 to catch Georgia and 498 to catch Notre Dame. Indiana is closer (329), but its loss was the gentlest kind there is: by four points, to No. 4 Ohio State. The projection ends up with Georgia at about 1,315 points, Notre Dame 1,300, Indiana 1,269, Texas Tech 1,221 and Utah 1,160. Close, but not close enough.

2. Voters have done this before

We went back through 2014–2025 and found every time an unbeaten team beat an unranked team in the same week that a top-5 team ahead of it lost for the first time. How often did the unbeaten team jump ahead? ("Loss to ranked" means the top-5 team lost to a ranked opponent.)

Spots apartTimesPassedPassed, loss to rankedPassed, loss to unranked
1–252100.0%100.0%100.0%
3–431100.0%100.0%100.0%
5–63666.7%57.7%90.0%
7–92853.6%45.0%75.0%
10 or more1386.5%3.4%12.2%

Indiana was 5 spots ahead of Texas Tech and lost to a ranked team: unbeaten teams in that spot passed only 57.7% of the time. Notre Dame was 8 spots ahead and also lost to a ranked team (BYU): 45.0%. So those two are coin flips, and the projection leans "stay ahead."

Georgia is the honest exception. It was 9 spots ahead and lost to an unranked team, and unbeaten teams in that spot jumped ahead 75.0% of the time. That's only 8 cases, though, and Georgia wasn't just any top-5 team. It had 1,745 of 1,750 possible points, about as big a cushion as a team can have. Still, of all the calls in the top 10, Georgia staying ahead of Texas Tech is the one history is least sure about.

3. Nobody's résumé is that different. Their starting spots are.

Here's a twist. Texas Tech's best win is over No. 22 Houston, and Utah has no wins over a ranked team. But Notre Dame and Indiana don't have any ranked wins either! What they do have is a better starting spot: Notre Dame began the season ranked 4th and Indiana 6th. Texas Tech started at 12th and Utah at 21st. Voters move teams a few spots at a time, so where you start in August still matters in October. (Ole Miss, which jumps past both, really did earn it: three wins over ranked teams, including Saturday's 31–3 demolition of No. 13 Missouri.)

4. Beating Colorado won't move the needle

The opponent matters a lot more than the score. We asked the model "what if?" by changing one thing at a time:

What if…Projected spot
Texas Tech, as played: beat unranked Arizona State by 288
Same score, but Arizona State had been ranked about 15th7
Same score, but Arizona State had been ranked about 8th4
Utah, as played: beat unranked Colorado by 3 on the road9
Utah beats unranked Colorado by 149
Utah beats unranked Colorado by 289
Utah beats Colorado by 14, if Colorado had been ranked about 15th8

Utah lands 9th whether it beat Colorado by 3 or by 28. In points, that's 66.3% to 68.4% of a perfect score, against 66.5% for not playing at all. Yes, you read that right: the model thinks Saturday's real 3-point escape in Boulder was worth a hair less than a week off. Texas Tech's 28-point win gets it to 8th. The same win over a top-10 team would have put it 4th. Voters aren't grading the score. They're grading who you beat.

So is it a Big 12 thing?

We checked that too. Here's every time a team ranked 6th to 15th beat an unranked FBS team from 2014 to 2025, and how many points it gained (as a share of a perfect score), by conference:

ConferenceWinsPoints gained
ACC655.3
Big 121164.7
Big Ten1374.2
Pac-121034.1
SEC1384.0

If anything, Big 12 teams got a little more credit for those wins than SEC or Big Ten teams. So week to week, voters aren't holding Texas Tech and Utah down for their conference. The bigger effect is where everybody started, and preseason polls are a whole other argument.

How it's doing this season

The projection has been running since the week 3 poll, and none of 2026 was in what it learned from, so these are honest grades:

PollAvg. spots offExactReal top 10 in our top 10
Week 31.1610 of 2510
Week 41.1613 of 259
Week 52.1210 of 258
Week 61.807 of 259
Week 71.5611 of 2510

That's 1.56 spots off on average, a bit worse than the 1.12 from testing. Week 5 was the rough one. Five weeks is a small sample, and we'll keep score in the open: every week's grade sits right on the Rankings page once the real poll comes out.

What it can't see

  • Teams sneaking in from nowhere. Our history only has each poll's top 25, not the teams just outside it ("others receiving votes"). So a team that wasn't in last week's AP or Coaches top 25 and didn't beat a ranked team is invisible. Those teams are almost all of its biggest misses, which makes the bottom few spots the shakiest part.
  • The eye test. Injuries, a quarterback who looked great or awful, a game that was closer than the score. It only knows the polls and the scores.

The real poll comes out Sunday afternoon. When it does, the projection grades itself. Check the Rankings page to see if the computer out-voted the voters.

Data: AP Top 25, Coaches Poll and game results from CollegeFootballData.com, 2014–2025 (2020 left out; 147 poll weeks, 4,228 team-weeks) and 2026 through the week 7 games. The model is in ap_projection.py; the testing and every number in this post are in ap_projection.ipynb in the project. Spots off are measured over the real top 25; a team we didn't project into our top 30 counts as 30th, and a team that fell out of the poll counts as 26th in the voter-habit tables.