Real referees. Official stats. Every run.

Open League is a basketball-first operations platform. An organizer creates a game and requests a Fairness Guard, a verified referee. Nearby referees receive the offer, the first to accept takes the assignment, checks in courtside, and runs the live scoreboard from their phone. When the game settles, the final score, stats, and ratings publish to a Record anyone can open.

Live at openleague.net

Open openleague.net

The Fairness Guard loop.

One dispatch loop turns any pickup run into an officiated, trusted, settled game, and a Record worth sharing.

  1. CreatePost the run: where, when, and whether it's free, a trial, or paid. Players nearby can find it and join.
  2. StaffRequest a Fairness Guard. Offers go out to verified referees nearby, and the first to accept takes the assignment.
  3. Check inOn game day the referee checks in at the court. The check-in is verified by location, so everyone knows the whistle has arrived.
  4. ScoreThe referee operates the official scoreboard: score, clock, possession, fouls, and timeouts. A Stats Guard can keep the book, recording who did what, without taking authority from the referee.
  5. SettleThe officiating payout is handled in-app. No cash, no group chat, no chasing anyone after the game.
  6. PublishThe referee certifies the box score, the stats become official, and the Record is ready to share.

The result: less coordination for organizers, stats that count for players, and trusted paid work for referees.

Official or casual. Never confused.

Open League keeps a hard line between a score someone typed in and a score a referee ran. Only Fairness Guard games produce official stats, and only after the referee has certified the box score and the game has settled.

A pending game is a normal step, not an error. The Record says so, plainly, until it finalizes.

  • CasualA game without a Fairness Guard. The score is recorded, and it stays casual.
  • PendingAn officiated game that hasn't settled yet. Stats are recorded and clearly marked as pending.
  • OfficialCertified by the referee and settled. These are the stats a player's record is built on.

The Record.

Every completed game produces a Record: the final score, the box score, who officiated, and whether the stats are official. It's built to be shared, and it's built from an append-only log of everything that happened in the game. A correction adds a line to that history. It never rewrites one.

That's the artifact the whole loop exists to produce. If people remember one thing about Open League, it should be the Record.

Less chaos for organizers. More meaning for everyone.

Organizers

Run a better game without becoming a full-time coordinator.

Post the run, staff the court, and close the loop, with game state, roster, referee, and payment status obvious at every step.

Players

Play in games that count.

Find games nearby, watch the live board, read the box score, and build a durable Record of what you've actually done.

Referees

Turn trust into work.

Receive nearby offers, check in courtside, run the game, get paid for verified assignments, and build a reputation that follows you.

One account can hold all three roles.

Training Day: coming to iPhone

Practice has a record now.

Training Day turns an iPhone on a tripod into your practice bookkeeper: on-device vision watches the rim, a friend confirms every bucket, and the session lands on your Record as practice.

  • Video never leaves the phone. Detection runs on the iPhone itself. Nothing is uploaded to be watched.
  • A person backs every count. A friend confirms each make and miss. The model assists; the friend decides.
  • Honest next to official. Practice sessions publish to the Record as practice, clearly separated. Official stats are still earned only in Fairness Guard games.

Where it's live.

Web app
openleague.net
In production since
August 20, 2026
Launch market
San Francisco and Oakland
Native iPhone app
In development. It ships with Training Day.
Policies
Privacy policy and terms of service

Built like infrastructure.

Open League is engineered so the record can be trusted. The server is the only source of truth for scores, check-ins, payouts, and finality. Location questions such as nearby games and eligible referees are answered by the database itself, not approximated in an app. Referee dispatch is race-safe, so exactly one referee wins an offer. And every game is an append-only log, which is what makes the Record auditable.

Under the hood: Kotlin and Spring Boot on the server, GraphQL as the single client contract, PostgreSQL with PostGIS, Stripe Connect for referee payouts, and native SwiftUI on iOS, all deployed on Google Cloud.

Bring order to the court.

Create the game, staff the whistle, and publish something worth remembering.

Talk to us about Open League