upset is live on the app store

upsetbuilding in publicufcapp

Upset is live. It's at upsetmma.app or on the App Store.

It's a prediction tracker for UFC. You pick winners before the card, optionally call the method and round, and your accuracy piles up over time. Basically the group chat that actually remembers who said what.

I made it because I was tired of getting gaslit after every card. "I called that." "No you didn't." now we'll see.

what it does

  • Pick winners before the card, optionally method + round.
  • Accuracy tracked over time so the receipts exist.
  • Pick Parties — private groups, 6-character code, head-to-head as fights get graded.
  • Fighter profiles with UFCStats data pulled in. Rankings by weight class.
  • The social layer — follow people, talk trash, leaderboards.

Not a betting app. No money on the line. Just fight IQ.

pick parties

The part I'm most proud of. You create a group for an event, drop the code in your group chat, everyone picks, and then as fights get graded the leaderboard moves in real time. No spreadsheets, no arguments, no one claiming they "would've picked that if they'd remembered."

how it got built

A quick note on the stack. This is mostly me plus Claude Code. I've dabbled in code for years — rust, python, a little java — but I was never a "sit down and ship a full-stack mobile app" kind of coder. That's the part that changed. The model handles the plumbing. I bring the opinions about how it should feel and the domain knowledge about fights.

React Native with Expo. TypeScript throughout. Convex for the realtime backend and auth. RevenueCat for subscriptions. Sentry, push notifications, image uploads. A month of 11pm sessions after the kid went to sleep.

Not going to sell that part harder than it needs to be. If you've been meaning to build something you keep putting off, this is a good year for it.

try it

Free tier gets you 2 events to feel it out. Pro is $3.99/month or $29.99/year for the full thing.

If you watch fights, download Upset. Send it to the friend who always thinks they called the fight. Tell me what's broken.

— chemistoncampus



Subscribe via RSSAbout me