Win your March Madness bracket with this Expo app
Users••11 minutes read
Tyler Williams
Guest Author
Learn how the team at WalterPicks built a React Native application with Expo to help you win your March Madness bracket.

This is a guest post from Tyler Williams who is a software engineer working on WalterPicks and is one of the core maintainers of MobX-State-Tree.
•••
Over 50 million people make and submit a March Madness bracket every year. Nobody, that we know of, has ever filled out a perfect bracket.
For those who don’t already know, March Madness is the name of the annual college basketball tournament in which 68 different college teams try to win their way through the field, to the championship.
Filling out a bracket is a common practice at offices, schools, and amongst families and friends. In 2014 Warren Buffet created a challenge for the employees of Berkshire Hathaway companies: if anyone correctly predicted all the games of March Madness they would win $1 billion dollars.
If anyone at Berkshire Hathaway (or anyone else who wants to win their bracket) is reading this, you should check out WalterPicks - an app built with Expo to help you win your bracket.
What is WalterPicks?
WalterPicks is a fully personalized, AI-powered sports insights platform, designed for fantasy managers and sports bettors. We’re building the most powerful Fantasy and Betting insights platform in the world. Our mission is to help fantasy managers win their leagues by making the most informed, intelligent, and responsible fantasy decisions and level the playing field for sports bettors by providing them with the most powerful insights, data, and information - everything the sports books don't want them to have.
Our advice, insights, and recommendations are available through a mobile app available on both the App Store and Google Play. At the time of writing (March 2024), our current focus is an AI-powered March Madness bracket tool which combines advanced statistics, AI insights, and a really easy to use autofill feature to help you win March Madness brackets this year.
Our team is a group of sports and machine learning enthusiasts who deeply care about our audience and their outcomes. We’re always playing fantasy sports and looking for high value betting strategies. We understand what makes these activities fun: choice. Our goal is not to prescribe one path based on some opaque AI. Rather, we provide you with a range of outcomes for different choices. We’re pioneering the balance between data-driven insights and the freedom of managing your fantasy team and bankroll like a human.
How WalterPicks works
We have a variety of machine learning algorithms guided by a projections team of humans who bring nuance and a coherent point of view to our statistical analysis.
At a high level, we incorporate millions of advanced stats into our models, generate projections, and then make those available to users in an ergonomic, cross-platform mobile app. Once those projections and insights get to a user’s device, we integrate with their actual fantasy and/or betting platforms, and surface only the relevant insights. There’s a lot of data out there, so we’re working to make it easy to navigate and discover the most useful insights for each individual user based on their personalized use-case.
AI and mobile development challenges
At WalterPicks, we face almost every digital product challenge you could think of in the AI and mobile app space: We spend a lot of time sourcing and cleaning our stats, since good inputs are the key to great outcomes. We have to figure out how to incorporate human intervention efficiently, and we have developed in-house integrations for our sources, human oversight, and cloud deployments of our data processes.
Once we’re happy with those projections, we have to store the data for the long term so we can backtest and improve our processes. We’re accomplishing that with a mix of AWS (using tools like Athena and Glue), GCP (using some cloud storage), and BetterStack and Segment for logging and analytics. (this looks like lots and lots of logs, and plenty of big data tools in the cloud to make sense of them).
Getting that data to users is also an exercise in efficiency. We have massive datasets, and we generate insights for almost every player in our supported sports, along with every matchup across each season. We’re constantly updating that information. So we have to make the data available through our CDN, and figure out how to manage our caches and bandwidth in the cloud in a cost-effective way.
That brings us to the user experience. Once users get into the app and get that data loaded, our next challenge comes down to design and user experience. We’re very sensitive to user bandwidth and battery life, so we have worked hard to improve our in-app data loading processes. We also make sure the massive data set is segmented and presented in a digestible way. And since we integrate with user data across platforms like ESPN, Yahoo, Sleeper, PrizePicks, Fanduel, and DraftKings - it can get pretty complex to keep the user experience simple while maximizing utility.
These challenges are compounded by our rapid growth. We’ve found strong product market fit, and our year-over-year growth has been exciting, but it comes with a greater responsibility to be efficient and mindful of our scaling practices. Last draft season we hit the top 3 in the Apple App Store for the sports category. We’ve architected our systems to manage that rapid growth, and they also need to be able to scale up and down, since our periods of high activity follow major sporting events, and don’t generate a consistent level of traffic.
How WalterPicks builds with React Native and Expo
When our CTO, Joseph O’Shea, first wrote the app, he chose React Native because of his existing expertise in JavaScript / React / React Native. He was convinced (and I believe he was right), that React’s declarative UI is the best way to build apps. With that mindset, the goal was to build to native platforms for distribution and excellent user experience, but also get to market quickly.
That set of requirements led him to choose Expo as a starting point. This was in 2020, so we eventually had to “eject” (back when that was still the term for it) to the bare workflow when we wanted to update some native dependencies. But even after moving to the bare workflow, we follow Expo’s SDK. Here’s how we think about it:React Native is the best cross-platform framework for us because we have deep experience with JavaScript. It gives us access to the innovative JS ecosystem, so we can use things like TanStack Query for really good async state management (and caching!), TypeScript for the best static typing system in the world, and MobX-State-Tree as our view-modeling tool of choice. The React Native community is also large, diverse, and welcoming (if you’re looking in the right places like the Infinite Red community slack or Expo’s Discord server).
We think Expo is the industry leader in React Native developer tools. So to make the most of React Native and stay up to date (but stable!), we follow Expo’s lead and use the Expo SDK as a north star for our own adoption of new React Native features. Once Expo releases new SDK versions, we adopt them, along with any React Native improvements that come along for the ride. Even in the bare workflow, we get to benefit from Expo’s expertise.
And of course, we use libraries like React Navigation, @expo/vector-icons, expo-splash-screen, and many others to make our lives much easier.
Writing React Native along with Expo lets us move fast on new features, iterate on UX, and ship as fast as possible. It’s awesome.
Other tools we love at WalterPicks
We love Firebase. We use Firestore, Firebase Realtime Database, and Cloud Functions for Firebase. Firebase is great because their pricing scales with our usage, and we can have huge spikes in user activity (like, by many orders of magnitude) without worrying about auto-scaling. And when traffic falls back to baseline, we don’t end up over-provisioning and over-paying. Their cloud function tooling is also the most ergonomic experience across any of the big cloud players.
When it comes to distributing our data at scale, we rely a lot on Sanity. I think many people think of Sanity as a CMS system, and we do use them for some CMS functionality. But Sanity serves as an awesome CDN tool, and it gives us value on speed and scalability. Much like Firebase, we trust Sanity to handle our traffic spikes.
We’ve also been exploring serverless PostgreSQL with Neon, and the early results are quite promising. It can be tough balancing a traditional relational database with the kinds of distributed systems problems that come with shipping a mobile app.
Advice for other developers
The most important thing is to ship value to users. My advice to developers is: you have to ship fast and choose tools that allow you to do that. For us, it’s React Native, Expo, Firebase, and a variety of other technologies that allow us to move fast, learn from our community, and iterate on the product.
I think diverse tools are important for an overall healthy ecosystem. So if you are more comfortable with other tools, use them! Do whatever it takes to ship as often as possible, learn from your users, and add value to the world around you. Software is one of the most exciting things to build because of the rapid pace of innovation and iteration. Embrace it!
What's next for Walter?
We’re always working to expand our offerings to more audiences - through new sports, new game types, or improved user experience. If you’re a sports fan, we’re going to be working to make your life better through technology. We’re talking to our users more and more every day, so I hope folks reach out with questions, concerns, and ideas. You can find us in the app store at https://get.walterpicks.com/s5lg/expo. Download the app and start filling out the first perfect March Madness bracket.

