Building The Barstool Fund

Three years ago if someone said, "That's the Barstool Difference..." I'd cringe and know something was broken. Today, I couldn't be more proud to redefine that phrase, and nothing to date has done so as much as The Barstool Fund. At the time of writing, we are closing in on $20 million dollars raised for small businesses. Believe it or not, just two weeks ago thebarstoolfund.com was still up for grabs on GoDaddy. Within 24-hours the Barstool product & engineering team built and launched the Barstool Fund to the world. And just 48-hours after that set out to rebuild and relaunch the experience and backend management. All as the team swiftly neared closing out a year with a handful of proud accomplishments including:

  • Swiftly & seamlessly depreciated a subscription service of 50k paying subscribers to make the content free to everyone and refund customers at the start of the COVID-19 pandemic as people began to lose their jobs.
  • Replatforming our CMS from Wordpress to a homegrown solution that better served our business.
  • Replatformed our on-site commenting system.
  • Replatformed the entire BarstoolSports.com frontend infrastructure.
  • Replatformed our content recommendation provider.
  • Developed a multi-provider image & licensing management platform.
  • Developed a full-fledged video stack (fully replacing Brightcove in the process).
  • Developed a comprehensive data warehouse & data stack.
  • Developed pre roll ad insertion tech for podcasts.
  • Developed a freemium mobile app game (Answer The Internet).
  • Executed several successful pay-per-view events & replatformed the overall pay-per-view stack.

And much much more. All with just 8 engineers.

Origins

In order to understand how The Barstool Fund came to be, it's important to look at what Barstool has historically done to help those in need. For as long as I can remember, Dave and the Barstool team have sold merchandise or promoted existing fundraiser campaigns to help people get through some of the hardest moments in their life. However, not everyone wants to buy a shirt and some people want to donate thousands of dollars directly to a cause. So in December 2019 we made the strategic decision to partner with Donately and build an official platform for the Barstool team to launch fundraisers directly on BarstoolSports.com.

Our first fundraiser using our internal platform for the family of Detective Joseph Seals where Stoolies contributed $105k to the family in December 2019. Over the course of the next year the platform was used intermittently for a variety of smaller causes but we were confident that the platform would remain a strategic tool for the company’s various fundraising causes over time. The Barstool Fund was that big bang moment.

Day 1 - December 18, 2020

When we first received word that we would be raising money for small businesses, we knew the obvious choice was to launch pages on the same fundraiser platform we built and used over the prior 12-months. This would allow us to relatively quickly create campaigns for each business and publish them to the site so they could start raising money. But this model had a lot of drawbacks - mainly a difficult management experience for the content team and a disjointed experience for consumers when trying to find the business. The team knew of these shortcomings, but it wasn't until Sunday, December 20th at 6pm until it became official we would be making dramatic changes...

Day 3 - December 20, 2020

Truthfully, this isn't an atypical email for our team to receive. Given the nature of Barstool and how the rest of the company operates we're often tasked with 24 hour turn arounds that could take similar teams a week or longer.

That night, myself and one of our senior front-end engineers worked until 2am building a new backend API and site skeleton that could support many more businesses, and real time display of funds as they came in from 3 different providers. A key piece of the backend API was ensuring everything could be managed from our in-house CMS.

And the other wrinkle was that the entire company was on break from December 23rd through the new year. So it was crucial to have a fundraising management system that was fully self-service within our CMS by non-technical employees without needing engineers to step in as new businesses are added.

Day 4 - (Re)Build and Launch

Deciding how content is managed for our consumer products is a careful balancing act of ease-of-use and time to market.

For some parts of the site we control elements based on json config files. This has the benefit of being very quick to market because we don't have any front-end management components to build. Of course this has a major downside of needing someone who understands the file format in order to make changes. Although we have non-engineers on the product operations team who are comfortable editing these files, The Barstool Fund had too many moving parts to attempt anything of this nature.

By early morning on Monday December 21st - just 3 days after our first Barstool Fund product launch - we had data models and APIs in place for managing businesses on the site, now it was time to think through a management experience that could be built before our 6pm deadline to launch.

Without an in-house UI/UX design team it's often the responsibility of the engineering team to make UI/UX decisions for our in-house tools. Coming off a recent project that involved heavy management of our podcast infrastructure, one of our Senior Full-Stack engineers started taking components from that project to build out the management experience for the fund.

All of our in-house tools - including our CMS - are built in the latest version of React on top of the Base Web UI Framework. We call this product "Barstool HQ" and its increasingly become a sort of operating system for the company. Today, all employees use this platform to manage blogs, videos, photos, podcasts, data dashboards and more. It was the obvious choice to build the fund management experience on top of this same infrastructure.

By 5pm we could successfully create businesses, set their funding goals, videos, images and publish them to the site. The final hour before our deadline was a rush to match designs and ensure all the states of the businesses correctly displayed and all funding calculations were correct. We ultimately missed the 6pm deadline by 45 minutes and ended up fully launching by 6:45pm.

Day 5 - Future Proofing

Our primary goal for day 5 was to future-proof the site and management to ensure an entirely self-service experience over break for the non-technical content team members that would need to continue to populate the fund’s webpage. This included features like Top Supporters, inline merchandise via a Shopify API, custom funding management and more.

Furthermore we weren’t yet satisfied with the data latency of the funding values being updated on the page. Upon initial launch we were able to display funding updates every 20-30 min, but this was clearly subpar. People were making large donations and they wanted to see their contributions immediately reflected on the site.

The funding calculations were non-trivial to implement as the data was coming from 3 different sources (soon to be 4 after crypto was added as a donation option). Our first iteration involved getting all payment data into our Snowflake data warehouse. From there our data team built charts in Looker that we could query via API and asynchronously save to the fund. This job ran every 60 seconds, but we had limitations in how fast we could get the data into Snowflake and refresh tables in Looker. We felt 60 seconds was a fast enough refresh rate so we kept the same infrastructure for querying the data and saving to the fund, but reworked how the data was queried. Instead of relying on Snowflake as the only source of data, we also queried each platform's API independently and used the numbers that were more recent. This also allowed us to adjust how we accounted for ACH donations which were the largest donations coming in but also the slowest to process. With these updates we had some data updating in as little as 60 seconds and other data updating in as little as 5 minutes. Ultimately this proved sufficient especially as the volume of donations increased where it was no longer possible to tell one person's donation apart from another.

2021

It's never been a better time to build tech for Barstool. Over the past 3 years the tech team has grown from 2 engineers to 8, and we expect to add 4-6 more in 2021. Barstool has over 250 employees and just 8 software engineers. Given our scale (some of our API's handle 3k requests per second) its a remarkably small team that has their hands in all aspects of the company. The Barstool Fund is a textbook example of the work we regularly build and ship, at a quality level that I believe is unmatched by much larger teams. If you're excited by this type of work please apply, we're actively hiring senior full-stack, backend and front-end engineers: https://www.barstoolsports.com/jobs