operatorlab.ai
← All shipped systems
Real-Time Productshippedauth gated

Upper Decker

Real-time NCAA March Madness snake draft platform with AI analytics and tournament operations.

Upper Decker March Madness snake draft homepage showing active draft actions and platform stats
Upper Decker live product surface

Context

Upper Decker is a real-time fantasy sports platform for NCAA Men's Basketball Tournament snake drafts. Users create or join drafts, pick teams in alternating order, and compete as the tournament unfolds.

The public production app is beta-gated through login, waitlist, and invite flows.

Problem

March Madness pools are social, time-sensitive, and chaotic. A snake draft format adds another layer: turn order, timers, auto-picks, standings, chat, and tournament score updates all have to stay synchronized.

This is the kind of product where state consistency is the experience.

What Shipped

  • Snake-style drafting with alternating pick order, turn management, and auto-pick timers.
  • Real-time Socket.io updates for picks, chat, countdowns, and standings.
  • NCAA tournament data integration, bracket views, scoring, and background updates.
  • Premium AI features: team previews, matchup probabilities, draft strategy advisor, and pick suggestions.
  • Stripe subscriptions, admin dashboard, invite codes, waitlist, beta access, and role-based controls.
  • XSS-sanitized chat and REST fallback for connection issues.

Architecture

The frontend uses Next.js and Redux Toolkit. The backend uses Node, Express, TypeScript, Prisma, PostgreSQL, Redis, and Socket.io, deployed across Vercel, Railway, and Supabase.

The platform separates frontend interaction from backend draft authority, which matters for idempotent pick handling and real-time state updates.

Key Decisions

  • Keep the draft engine deterministic. AI can advise, but the backend owns picks, timers, standings, and scoring.
  • Use WebSockets for the live room. Draft picks, chat, countdowns, and standings need immediate updates for the product to feel alive.
  • Add REST fallbacks. Real-time systems need recovery paths when sockets fail or users reconnect mid-draft.
  • Gate beta access. Tournament products face spiky demand, so waitlists and invite codes help control rollout risk.

AI / Workflow Layer

The AI layer is premium analysis rather than core game state. It supports team previews, probability estimates, strategy suggestions, and pick advice while the deterministic draft engine remains responsible for the rules.

That separation keeps the fun AI-assisted without letting AI own the parts that must be exact.

Sample Artifact

A strong user-facing moment is a draft pick recommendation that explains:

  • current roster composition
  • available teams
  • seed and matchup profile
  • risk/reward tradeoff
  • why the recommended pick fits the user's draft position

The AI advice is useful because the live draft state is trustworthy.

Constraints

  • Draft picks must be transactional and idempotent.
  • WebSocket state needs REST fallbacks.
  • Tournament traffic is seasonal and spiky.
  • Premium AI usage needs caching and subscription gates.
  • Admin operations need enough control to recover from real user issues.

Tradeoffs

  • Real-time state creates a more compelling product, but it raises the cost of correctness.
  • AI analytics make the premium tier more interesting, but they have to stay separate from authoritative scoring.
  • Beta gating limits growth, but it protects the platform during a time-bound tournament launch.

What I Would Improve Next

  • Add shareable post-draft recaps.
  • Expand the tournament model beyond the men's NCAA bracket.
  • Add push or email reminders for turn alerts and draft starts.

What It Proves

Upper Decker shows full-stack execution under real-time product constraints: live state, user roles, paid AI features, admin tooling, external data, and event-driven product operations.