Coder's Bracket 2025
5It’s been a long time since I’ve filled out a March Madness bracket. The last time I used code to fill one out back in 2016 we won @mfladd a trip to Disney World (see @shawn, You Sweet Inglorious Bastard!). And then I got a sweet t-shirt out of the deal that his kids picked out for me during their trip as a thank you!
This all started back in 2014 when I created an algorithm based on the statistical winning percentage over the past 29 years of each seed broken down by round. This approach was a disaster (see Code Bracket. Because Science.).
In 2015 I made a small tweak that also takes into account the team’s winning percentage (adjusted for strength of schedule using the Rating Percentage Index). This approach got me into the top 90.2% of all brackets in a code competition (see Coders Bracket 2015).
In 2016 I made a tweak to further adjust based on the deltas of the two team’s 3-point percentage, field goal percentage, and free throw percentage. This was the Disney award winning approach (see Coder’s Bracket 2016).
The code bracket competition shut down in 2017 so I stopped doing them because gathering all the data is quite a chore…
…but now we have AI.
Luckily, the Wayback Machine has a saved copy of my 2016 algorithm: https://web.archive.org/web/20160825233719/https://www.codersbracket.com/code_bracket/56e700edb3c99cd90063074a
The bigger challenge was gathering all the data needed for this year’s March Madness tournament. A few prompts with ChatGPT 4.5 and “deep research” that was released earlier this year (https://openai.com/index/introducing-deep-research/) and I have a JSON file that looked like this:
This didn’t give me exactly everything we had before (we’re missing RPI ratings) but we picked up a few new bits of data (free-throw rate, defensive rebound percentage, etc). Using this data I coded up some quick tweaks to our 2016 algorithm. Here’s the 2025 version:
And here’s the results:
How are you all filling out your brackets this year?
- 8 comments, 5 replies
- Comment
I clicked thinking this might be interesting but I got sportsball instead.
@yakkoTDI
@blaineg I have that shirt.
The old fashioned way: I’m not!
Is it cheating if I use this bracket? Because I just used this bracket. I also have another bracket, my method is just click, don’t think. I have a 2 minute time limit.
Bracket BUSTED after the 1st game!!
Louisville lost to Creighton!!
PHOOEY!! 
@IndifferentDude No one in my entire group picked Louisville to win, do they have a cool mascot or something?
@sammydog01 Dunno. Looks kinda like a constipated Cardinal!
I’m already losing, thanks a bunch @shawn.
I did the cat bracket. Mascot is a cat? You’re my pick. Or the thing my cat would hate the least. Hilariously, this ended up as wildcats vs wildcats and tigers vs tigers in the final four.
At least we gotta give your system props @shawn for getting the 1st day major upset correct!
Guess I’d better bet McNeese to beat Purdue in the next round!! 
@IndifferentDude The bracket I picked by myself is in 20th place out of 24 (with only 2 teams behind me) and @Shawn’s bracket is in 3rd. So nice job Shawn, you did really well in the first round.
@Shawn I just moved into first place!