Introduction

I have a problem. For 16 weeks of the year, I check this little purple app on my phone an inhuman amount. I recently redownloaded it ahead of this year's fantasy football season (briefly, I'd like to acknowledge the absurdity of calling the NFL season "fantasy football season." I'm aware some people value the NFL higher than their fantasy football interests. I am not one of those people until the NFL playoffs.) That purple app is Yahoo! Fantasy Sports, and it will consume me. I have found over the years that the only thing worse than being consumed by a fantasy football team is being consumed by a bad fantasy football team. In service of avoiding that, I have spent the past week building and refining a deeply bespoke fantasy football engine — hyper-tuned to one league and just one person in that league: me.

I have scraped our Yahoo league for every bit of historical data I have access to: each year's draft, completed trades, trades I rejected, rejected trades I proposed, successful waiver bids and unsuccessful waiver bids, weekly scores and standings, yearly winners and losers.

I have built a platform to leverage that data to firstly win the draft and secondly win the season.

Start With the History

Our league has been going since our senior year of college — now 4 years — and is aptly named after our shared backyard. Last year's loser recorded an album and posted it publicly, under his full name. Thankfully, no one remembers who he played in the loser's game (it was me). That means a lot of data. I was able to rather quickly group my friends into categories: who trades a lot? Who auto-drafts? Who takes a lot of RBs or WRs in the early rounds. All information that allows me to better understand the draft landscape. Last year, some members of this league took four quarterbacks. That is context that no mock draft can understand. My starting quarterback right after the draft was Anthony Richardson, who did not record a point all year. That cannot happen. And it won't, now that I know the trend.

Draft Against the People You Know

Normal mock drafts all have the same problem: other teams follow consensus ADP (average draft position) and neglect the randomness caused by my friends who do not know Mike Evans switched teams this offseason (Jack, that's free knowledge for you). Armed with four years of data on what each player values during a draft, I am able to account for that lunacy. My mock draft tool randomly puts me and my 11 league-mates on the board and I can draft against realistic bots. The bots obey sensible roster rules (maybe they won't take 4 quarterbacks..), but their choices tilt toward their manager profile. The software randomizes the most likely options, weighted by what ADP, Yahoo's xRank, and managers' historical preferences.

Meanwhile, I can get a feel for how a draft will play out — which players do I need to reach to get? Who is more likely to slip?

My Picks Are Data Too

The mock draft began as a way to model everyone else, but I collect the data from my own mock drafts to model my own behavior. After enough mock drafts (and trust me, I've been active enough), I have been able to build a personal draft board that lines up with my own revealed preferences. If I repeatedly take someone above their ADP, they move up my board. If I always pass, they move down. The gaps expose which players I like more than the field and by how much. I am able to generally know which players I will leave a draft with as a result. For example, I have players ranked in the low teens who the field and ADP ranks much lower. I can tell with reasonable certainty that I will end up with one of those guys if my draft pick is toward the end of the first round.

Grading trades

Some of the most valuable information I had on hand was all of my trade history. My software compares accepted and rejected packages to estimate the bar for trading with each manager. It is untested, but in-season this should give me a clean answer to whether a trade is worth proposing or not. I grade trades on two measures - one at the time of the trade and one retrospective on the rest of the season. Both are graded by value above replacement: how many points this player is expected to score or did score compared to someone off the bench. The goal is not to find the most lopsided offer I can sneak through. It is to identify mutually useful deals sooner and frame them in a way that can realistically close.

Fantasy Hub trade analyzer comparing how completed trades looked at the time with their eventual results
Figure 1 — Every deal gets one grade for the information available at the time and another for what happened afterward.

Am I Doing Too Much?

Across four seasons, I made 419 roster moves and submitted 95 waiver claims. That is astounding. If this article and the work behind it are any indication, it should be clear I am an active fantasy football user. That activity can be an advantage, but it can also be a detriment as I give up on players too soon. Who can forget my shrewd DeVon Achane draft pick that ended up on the waiver wire just one week into the year? Putting context behind those roster moves can help me decide whether I really need to lead the league in adds, or if a close second is good enough.

Who Has My Number?

I also built a few vanity features so I knew who was OK to trash talk and who to avoid. That includes a head-to-head record book which shows every manager's results against every other manager, including the playoffs. Rivalries start to become clear. I know I can take the week off when my friend Nick is on the schedule.

Fantasy Hub head-to-head matrix showing every manager's record against every league opponent
Figure 2 — Four years of rivalries, including the playoffs, in one head-to-head matrix.

Why It Is a PWA

I've built my fantasy hub as a progressive web app so it can be installed on my laptop or phone and opened like a standalone application. It lets me mock draft from anywhere, and the cost of adding PWA was a few quick prompts to my favorite AI model.

The Real Process

This build would not have been possible without AI. For better or worse, modern tools enable creative ventures to be built in days rather than months. In this case, a Ryan-specific fantasy football tool with almost zero business logic. Maybe in years past, something like this could be shipped as a $20/month subscription service. Today, a $10 Claude subscription can build it exactly as you want. Code is increasingly cheap, which means the barrier is becoming ideas rather than time. The Fantasy Hub does not need millions of users, a subscription model, or a roadmap for an average customer. It only needs to help me understand one league better than I did before. And if it helps me win the league again, that would be useful too.