Skip to content
← All work

Case study 01 / 04

Web app2025Live

Cubicle Cup

The office World Cup, played to win.

Cubicle Cup landing page — a globe of national flags behind the headline “The office World Cup, played to win”

Cubicle Cup replaces the office sweepstake spreadsheet with a private prediction league. An organiser sets it up in under a minute, colleagues join with a code, a display name and a PIN, and the leaderboard rescores itself the moment a match ends.

Role
Design, engineering and product — solo
Timeline
2025 — present
Platform
Web
Pricing
Free
Status
Live

01The problem

Every office runs a tournament sweepstake, and every office runs it badly — a shared spreadsheet someone has to police, scores typed in by hand, arguments about who predicted what, and one person quietly doing all the admin. The obvious alternatives all want an account, an install, and in most cases a bet.

02The approach

The whole design is built around removing reasons not to join. There is no account creation and no email verification: an organiser creates a league, shares one code, and a colleague is playing thirty seconds later with nothing but a display name and a PIN. Fixtures and results sync from football-data.org on a schedule rather than being entered by hand, predictions lock themselves at kickoff so nobody can be accused of a late pick, and the standings recompute automatically. The stake is deliberately a free-text field — "a 6-pack each", "lunch on the loser" — because the app handles no money at all and says so plainly.

03The outcome

The organiser stops being an administrator. Setup is a minute, joining is a code, and the scoring, locking and standings run themselves for the length of the tournament.

04What I built
  • 01Private per-company leagues, fully isolated from each other
  • 02Join by code or link — display name and PIN, no account
  • 03Predict every scoreline; picks lock automatically at kickoff
  • 04Configurable scoring: 3 points exact score, 1 point correct result
  • 05Fixtures and results sync from football-data.org every 30 minutes
  • 06Organiser tools: stake, members, join-code reset, manual result override
  • 07Live leaderboard plus a "who picked what" reveal after kickoff
  • 08Five languages, server-rendered from a locale cookie
05Built with
  • Next.js
  • TypeScript
  • React
  • PostgreSQL
  • Vercel