Bev Fantasy

Case Study

A historical record book and engagement engine for three fantasy football leagues I run. It holds every season in league history and gives sixteen old friends, former teammates, and rivals across eight states a reason to keep the trash talk flowing all year.


Role
Design, Develop, Maintain
Status
Live - BevFantasy.com
Timeline
3 years, on and off
Five seasons of the keeper league, with an open ballot pushing itself into view.

Fantasy leagues are competitive group chats

Fantasy football is the thing that kept sixteen friends talking after everyone began to scatter across the country, and it is now, besides weddings, the only reliable way to get everyone in the same room.

The problem is that a fantasy platform is built around the season you are currently in. It is not built to be a filing cabinet or to keep a group chat active year-round. Once a season ends, group chat activity dies down as we return to the mundanity of adult life. Records, rivalries, the trade everybody still argues about, all of it survives in the memory of whoever tells the story loudest and least accurately.

Optimized for Being Shared

I optimized for things worth screenshotting. Every feature had to survive one test before I built it: Would somebody paste this into the group chat to make fun of a friend?

Feedback from the league shaped nearly every feature: what people wanted to see, how they expected it to work, and what was not worth keeping. That process turned the site into a frequently used league repository, visited not only by league members but by their friends and families.

3
leagues on one codebase
5
seasons of history
16
people, across 8 states
100+
trades, filterable

Act one

The record

A full ledger of the entire league history, somewhere it can be found and argued about.

The equity curve immediately became group chat ammunition.

Money, in the language they already speak

Most of the league members work in finance. So instead of another standings table, everyone got a ticker. The earnings page is modeled after an exchange, a scrolling tape of the most recent year's results, a lifetime graph showing earnings, and a detailed ledger of every financial transaction for full transparency.

The ledger runs back to 2021 and nets every buy-in ever paid, which is the number most of them would rather not look at. Mine is $WILL, and you'll notice it's at the top.

Four years later, the trade was still being called a fleece.

Every Trade, Easily Findable

Every time a trade goes down, the whole league calls it a fleece, regardless of what it contains. Down the road, I want to add a Fleece Score so every trade carries a rating for just how lopsided it was.

Trades are the best content a league produces and the hardest thing to pull up in an instant. Every trade argument in our group chat starts the same way, with somebody reconstructing a deal from memory and getting the details horribly wrong.

Initially, I pulled in all trades, from most recent to oldest, separated by year, and figured folks could ctrl+F to find the trade they were looking for. Despite using it myself to locate a few trades, it didn't see much use until I got feedback from a few users and added the filter bar.

What people wanted this tool to solve was not seeing a list of every trade, but answering the important questions, like "how many times have I fleeced Adam?"

Ammunition

Head to head gets screenshotted more than anything else on the site. It was also the first and least sophisticated thing I built. Unsurprisingly, I built it to settle an argument.

What people came for is discovering the interesting matchups. Finding out you're undefeated in a rivalry going back six years, or that you've only beaten someone once, is a delight. It also surfaces the closest game the two of them have ever played, and a stat I called Certified Hater: the player on the other roster who has personally scored the most points against you. I built it to prove Kyren Williams had a grudge against me, and instead found out, embarrassingly, that Justin Fields is my true archenemy.

Now you can ensure pre-game trash talk is backed by verified data, which makes it all the more delicious.