Product Vision

High Noon Organized Play

The free, self-serve tournament platform bundled with the High Noon retail game. Every store that stocks High Noon can spin up its own branded, in-store league in minutes — a live leaderboard, a cinematic TV scoreboard, and a store-defined prize — turning a game on the shelf into recurring in-store events. Organized Play is the retention engine that ships with the product: it drives foot traffic, repeat play, and repeat sales, the same flywheel that powers every serious tabletop IP.

What's Live

Shipped, deployed, and running in production today.

Live

Multi-Tenant League Engine

Every store gets its own isolated, branded league

A single codebase serves unlimited stores. Each league is fully isolated — its own players, scores, settings, logo, and admin password — routed by slug at /[slug]. This is the backbone that makes a per-store retail product possible.

multi-tenantper-storeisolated dataslug routing
See how it works
Live

Live Player Leaderboard

The public board players watch during an event

Real-time standings with gold totals, three-tier ranks (Buckaroo / Outlaw / Maverick), a live countdown clock, animated progress bars, and a QUALIFIER splash when a player crosses the gold threshold. Auto-refreshes so the room always sees the current state.

publiccountdowntiersqualifierauto-refresh
See how it works
Live

Cinematic TV Scoreboard

Big-screen 16:9 showpiece for the booth

A dedicated /[slug]/tv layout built for a television at the table: High Noon logo, tournament title, live countdown, prize box, scan-to-join QR, and dramatic top-5 rows. One-tap fullscreen hides the browser chrome entirely. This is the in-store centerpiece that draws a crowd.

16:9fullscreenQR joinbooth display
See how it works
Live

Store Admin Console

Run the whole event from one panel

Per-league admin at /[slug]/admin: quick score entry, add/edit/remove players, a +/- gold toggle for corrections, and tournament settings (title, location, end time, prize, QR). Each store has its own password — it can never see or touch another store's data.

scoringplayer mgmtgold +/-per-store auth
See how it works
Live

Redis Data Layer

Always-fresh reads, no stale-data disasters

Upstash Redis backs all mutable state. Reads are always current — no CDN caching, no eventual consistency. This replaced a Vercel Blob layer that caused a mid-convention 'league not found' outage. Battle-tested live at HMGS-South.

Upstashfresh readsproduction-hardened
See how it works

In Progress

Real working code shipped to production, but phases still on the build queue. Each card lists what's done and what's left.

In Progress

XP Network Delivery Driver

Real achievements + XP written straight into XP Network

When a player earns an achievement in a High Noon event, our server writes it directly into XP Network (the league/XP system of record) and the reward XP pays out automatically. Players link at join by entering their XP Network handle, which we resolve to their account. Bootstrapped against the org-owner API instead of XP Network's enterprise tier.

XP Networkachievementsauto-linkinglive driver
ShippedLive REST delivery driver that unlocks achievements and pays out XP (verified end-to-end with real grants). Auto-linking that resolves a player's XP Network handle to their account. Join-form handle field. Retry-with-backoff for flaky venue wifi. Daily token-expiry monitor. Deployed to production.
Left to buildAutomatic in-game earning triggers so grants fire from match results, not just manual entry. Hardening toward a durable service token to retire the 30-day org-owner bearer. (The operator UI for manual grants is its own module — the Bounty Board, now In Progress with its core surface live.)
See what's left
In Progress

Bounty Board

Retailers & Brand Deputies grant achievements from a phone at the table

High Noon is played on a table, so a human still has to say 'this player earned that.' This is the tool that makes the manual step effortless: a mobile-first console where a Retailer or Brand Deputy pulls up the event, finds the player, taps an achievement, and it's granted — the XP Network delivery driver does the rest. Bottom-anchored and thumb-reachable so it works one-handed at a game table, and just as clean on a laptop.

mobile-firstretailer / deputyone-tap grantbatch award
ShippedLive mobile issuer surface (/[slug]/issue): tap player → tap achievement → grant. Achievement bottom sheet with one-tap common grants + searchable long tail. Table-wide batch grant. A cancellable send window as an honest 'undo' (no revoke endpoint exists, so the network write is held, not faked-reversed). High-value-grant confirm. XP-linked vs unlinked player badges, with honest per-grant feedback (granted / already-had-it / not-linked). Grant + roster APIs on the proven delivery driver. WebAuthn Face/Touch unlock gating the device-saved token, with access-code fallback. PWA manifest for home-screen install. Deployed to production.
Left to buildGrant history / audit per event so a store can see what was awarded and by whom. Suggested grants surfaced from match results (tap-to-confirm instead of hunting). Role-scoped auth split (Retailer own-store vs Brand Deputy cross-event) — today both use the league admin code.
See what's left

What's Next

Designed, documented, and on the build roadmap. No production code yet.

Coming Soon

Self-Serve Store Onboarding

A store owner spins up their league with zero help

A public onboarding page: the store owner enters their name, contact, picks a slug, sets an admin password, and uploads a logo — then lands directly in their own admin console. No Dwight in the loop. This is the single feature that turns a booth tool into a self-serve retail product.

self-servepublic signupno-touch provisioning
Read full vision
Coming Soon

Freeform Store-Defined Prizes

The prize is whatever the store wants it to be

Prizes stop being a hardcoded dollar amount. A store types anything — '$100 cash', '$50 store credit', 'a High Noon booster of your choice', even 'a Pokemon booster box'. The leaderboard, admin, and TV board all render the store's own prize text.

custom prizecash / credit / productstore choice
Read full vision
Coming Soon

Sponsored Event Program

Stock a qualifying package, get a sponsored day

Retailers who order a qualifying High Noon stock package receive a sponsored tournament day — flagged and provisioned by us. Everyone else self-funds. Built on the same infra; 'sponsored' is a flag on the league that unlocks a badge now and fulfillment logic later.

retail tie-instock packagesponsored flag
Read full vision
Coming Soon

Regional & Season Rollup

Store qualifiers → regionals → a national championship

The v2 hook that makes stores care: store-level events feed regional qualifiers and a national High Noon championship across seasons. v1 ships the data sockets (region, season, event history) so this layers on later with no migration — the bones are in from day one.

v2regionalsseasonsnational championship
Read full vision
Coming Soon

Retail Tournament Kit

What the physical retail SKU points to

The packaged product side: a physical Tournament Kit whose QR code drops a player straight onto their store's board, plus the rules, prize structure, and setup a store needs to run High Noon Organized Play out of the box.

physical SKUQR to boardretail packaging
Read full vision

Tech Debt

Known issues and cleanup work, tracked so nothing gets forgotten.

Ledger

Tech Debt Ledger

What we know is broken, half-done, or worth cleaning

Anything flagged as worth cleaning up later lives here. Items are filed the moment they're found so they do not evaporate into chat history.

View open items

Building High Noon Organized Play into a packaged retail product — the roadmap kept honest, module by module.