Match tracking on Cue Quest, today
Score a single game, promote it to a race-to-7, share the result with your opponent's permission, and watch your weekly streak hold. Here's what match tracking actually does right now.
The schema essay lays out why the match tracker is built around the series instead of the rack. This post is the other half of that conversation: here's what that schema actually lets you do today.
Most pool apps treat every game as unrelated to the previous one. Cue Quest tracks both single games and race-to-N series, ties them into your weekly play streak, publishes the result to your feed, and — only if both players opt in — auto-shares it to the @cue.quest Instagram. None of that is hypothetical anymore. Here's what match tracking on Cue Quest does right now.
Starting a match
The flow lives at /matches/start in the app. You pick a venue, you pick
an opponent, you start logging.
Two things to call out in that flow. First, the opponent doesn't need an account. You can type a name — "Mike from Tuesday league" — and the match sticks to that name. If Mike signs up later you can connect the dots; if he never does, the match still counts toward your own history.
Second, the venue picker actually knows the difference between a venue Cue Quest tracks and a Google-only suggestion. Tracked rooms render with a Cue Quest pin and a distance-from-you readout; Google-only suggestions render with a generic pin so you can tell at a glance which side of the line they're on. Spots outside the iOS check-in radius are disabled with a short "Too far to check in" note instead of silently failing later.
The first time you land on the create-match surface, you'll see a one-time timezone confirmation and an opt-in dialog for Instagram auto-share. Both are off by default. After you answer them once they stay out of the way. A separate push-notifications prompt fires the first time you land on the matches inbox.
Single games and the series promotion
Every match starts as a single game. Break, run, somebody wins, log it. Done.
If the night turns into a session, you can promote that single game into a race-to-N — 3, 5, 7, 9, or 11 — and the rack you just played counts as rack 1. The match becomes a proper series with its own scoreboard, its own win/loss state, and a rack-by-rack record underneath.
That last part is the one that matters later. Because each rack is its own row, a comeback from 1-3 to 4-3 isn't just a number in a column — the arc is queryable. The pivot rack, the rack where momentum flipped, exists in the data instead of in everyone's memory. The rivalry breakdown ("you lead the set count, I've won the last three") is something the system actually knows, not something you have to mentally reconstruct.
Edits work at the rack level. Either participant can request an edit or a deletion; the other side approves or rejects via push or email. If you click an edit-approval link a week after the fact and the edit has already been resolved, you land on an explanatory empty state rather than a confusing redirect.
The streak, the feed, the leaderboard
Every completed match counts toward your weekly play streak, alongside check-ins and reviews. Streaks award milestone XP at 4, 8, 12, 26, and 52 weeks — those show up in the streak detail drawer on your profile header, so you can see what's next without hunting for it.
The feed side has two layers. Each completed match publishes a private feed item to both participants' personal feeds automatically — your match history isn't just a list on a settings page, it's part of the timeline you scroll. That's the unconditional half.
The public half is more careful. The everyone/discover feed doesn't fire a card per match; that would flood the place on any night somebody played a long set. Instead, when an actor crosses two or more completed matches in a 24-hour window, a single daily roll-up card lands on the public feed: "Joe played 3 matches at 2 venues today." One card, one actor, one day. The signal-to-noise on the public feed stays on the right side of the line, and individual matches still live in your personal feed for anyone who follows you closely.
Leaderboards pull from the same data and honor the same privacy rules as the feed, which is the next thing.
Privacy and sharing
A private opponent is rendered as "A private player" on every public-facing surface — feeds, leaderboards, match cards, the Instagram auto-post, the per-venue match list. The gate is one gate, applied once, in one place. If you've marked yourself private, you can play matches all you want without your name appearing in a feed item someone else scrolls past.
Auto-sharing to @cue.quest on Instagram is off by default and requires both players to opt in. When they have, the completed match posts a card on the account. Volume is governed by centralized cross-trigger rate limits — the same rate limits that keep match cards, weekly digests, and milestone celebrations from stepping on each other — so even on a heavy week the account doesn't turn into a firehose.
That's the whole share story, in two sentences: opt in on both sides, or it doesn't go out.
Where this is heading
A few things are in motion, in roughly the order I'd bet on them landing.
Bigger leaderboards is the closest. Monthly per-city leaderboards already run on Instagram; pulling them onto the app surfaces is mostly a UI question, not a data one.
Rivalry breakdowns are the natural next step now that series are first-class — "you against this opponent over the last six months" is a query the schema already supports.
Tournament mode sits behind both of those. There's an RFC on the app repo for it; brackets are just nested races, so the foundation is there, but the bracket state machine and the seeding UI aren't small projects. It's deferred for now, not abandoned.
I'm deliberately not making commitments on timing. The list above is the order of work, not a roadmap.
The short version
Log a game. Promote it to a series if the night got serious. Edits and deletions go through the other player. Privacy is one gate applied everywhere. Auto-share to Instagram is opt-in by both sides. Streak credit is automatic. The public feed gets one card per actor per day, not one per match.
If you want the longer story about why the schema is shaped this way, the match-tracker essay covers it. If you just want to log a match, the app's at app.cue.quest — pick a venue, pick an opponent, break.