The auction draft room moves in ten-second windows. A player goes up, someone bids, someone else bids higher, and in the time it takes me to decide whether I'm going to compete, the lot closes.
I've been playing in this league for three years. Same ten managers, same $200 budget, 160 players over about two hours. And I've spent all three years looking at a static spreadsheet I made in July, trying to apply it to a market that's completely different by lot 40.
That's the problem. An auction isn't like a snake draft, where you can prep your board and react. It's a live market. After someone pays $73 for Josh Allen, the purchasing power of every dollar left in the room just changed. A cap you wrote in July is a guess about a market that doesn't exist yet. By lot 40, it's wrong about everything.
So I built something that recomputes it. After every lot.
What I Actually Wanted
Three things, specifically.
First: inflation math, live. Standard auction theory says overspending early makes things cheaper — the dollars that would've chased everyone still on the board are gone. I'd had this backwards. Last year the league burned $1,287 in the first 40 lots, and inflation slid from 1.00 to 0.46 by lot 100. Real bargains, everywhere, for anyone paying attention. I wasn't buying any of them.
Second: what every opponent can still bid. This one isn't clever — it's arithmetic nobody at the table is doing. After every lot, the tool recomputes the exact maximum each manager can spend on a single player: what they have left, minus a dollar for every roster spot they still need to fill. When Disease is down to $9, he cannot outbid me on anything. I'd like to know that before I bid $14 out of fear.
Third: what to nominate. You nominate a player to put them up for bid. If I can nominate someone I don't want but someone else will run up, I just drained their budget for free. The tool scores every candidate: how documented the want is, how much it'd cost the victim, whether the victim can still hurt me somewhere I care about. Five options with reasons, every turn. The top one lives on the dashboard.
jeanty 31 me — player, price, manager. Fuzzy match on both. It reprints the full dashboard. Lots run in ten seconds; speed matters more than anything.
The Data Had a Problem
Three years of draft history, ten managers, two of them had changed their team name. The PoopSnake became Dirty Mike. A-A-Ron's Team became Wannabe_Houdini. My spreadsheet had been treating each of them as two separate people — which meant every behavioral profile I'd built was missing a third of its evidence.
Fold the renamed seasons back in and the league gets a lot more legible.
Dirty Mike, with his full three years: second-biggest QB spender at 42% of budget. Nine dollars on tight ends across three seasons — nine, total — which makes him a non-threat at the one position I'm trying to exploit. He front-loads harder every year: $96, then $142, then $161 into the first forty lots. His money is gone before the draft is half over.
Wannabe was the more disorienting correction. He's the second-biggest tight end buyer in the league. I had him down as a non-factor at exactly the position I'd built my whole plan around. He also paid $75 for Josh Allen in 2024 — not cF, who I'd assumed would take him. I'd been planning against a version of my league that didn't exist.
The Build
It's a Python CLI — about 1,500 lines across eight modules. It never touches Yahoo. No browser automation, no bidding. A mistaken bid is unrecoverable and lots run faster than an agent round-trip anyway.
I used Claude to work through the architecture, the inflation math, the nomination scoring, the fuzzy name matching. What came back wasn't just code — it caught that I'd had inflation's direction backwards, flagged the one-wide WR tier before I ran it live, and refused to write a non-superflex rankings file even when I handed it one by accident. Building this alone would've taken weeks. It took a few evenings.
There are 187 tests. The full 2025 draft — all 160 lots — runs as a test fixture. A crash mid-draft loses nothing; state is written after every entry and the tool resumes exactly where it left off.
The Number I Keep Coming Back To
The three championship teams in this league have one thing in common, and it isn't a position. They spent every dollar. $0 unspent, $2, $0.
I've left $1, then $4, then $8 on the table — moving the wrong direction every year while telling myself I was being disciplined.
I built a tool to tell me what other people can afford.
It mostly told me about me.