Cue Contact Pro

mobile app web app
Cue Contact Pro hero screen
Cue Contact Pro statement background

The sport of pool deserved
better software. We built it
from scratch. Logo to app
store. Wireframe to wallet.

The Brief

Pool is a serious sport. Millions of players. Organized leagues. Real money changing hands after real games. And the software supporting all of it? Embarrassing.

No unified platform. No verified rankings. No way to find local opponents, challenge them, set a wager, play the match, and get paid - all in one place. Players were texting each other on WhatsApp, settling bets in cash, and arguing about results with no record of anything.

The client came to us with a clear vision and a hard problem: build the platform that pool actually deserves. Not a hobby app. Not a social network with a billiards skin. A real competitive infrastructure - with ELO ratings, wagered matches, tournament brackets, verified results, and a wallet that moves real money.

We said yes. Then we got to work.

Cue Contact Pro brief image
What We Built

A full competitive ecosystem for pool
players. One app. Everything inside.

  • Find players
  • Challenge them
  • Set the wager
  • Play the match
  • Get paid

That loop sounds simple. Building it
correctly is not.

Cue Contact Pro product ecosystem
The Logo

Before a single screen was designed, we solved the brand.

Pool is a sport of geometry, precision, and tension. The logo needed to carry all three. We landed on a mark built around the cue and ball at the moment of contact - the exact instant the game is decided. Clean lines. High contrast. Works at 16px on a notification badge and at 200px on a splash screen.

The name Cue Contact Pro does real work. It signals the sport, the moment of action, and the level of player being addressed - Pro isn't aspiration, it's a filter. This platform is for people who take the game seriously.

Color palette: deep forest green anchored by clean white and dark backgrounds. Not the neon-and-chrome aesthetic of fantasy sports apps. Something calmer, more confident - like a well-maintained pool hall that knows it's the best one in the city.

Cue Contact Pro logo sphere
Cue Contact Pro logo mark
Cue Contact Pro interface detail
Wireframing the Machine

200+ screens don't happen by accident. They happen because you map every path before you draw a single pixel.

We started with a full user journey audit. The user types from day one: authenticated players and guests. Every feature had to account for both states - what a guest sees, what they're offered, and exactly where the friction is designed to convert them into registered players.

Cue Contact Pro wireframes

The complexity surface became clear fast: a match between two players isn't just two people agreeing to play. It's a challenge sent, a challenge received, a wager agreed upon, a venue selected, a time confirmed, a result reported by both sides, and money moved accordingly.
Each of those steps has a counterparty. Each counterparty has their own screen state. Each state has edge cases - no-show, dispute, reschedule request, cancellation with penalty, expired challenge.

We mapped it all before Figma was opened for design. That discipline is why the final product has no dead ends.

Wireframe modules completed:

  • Sign Up + Onboarding
  • Create Challenge
  • Notifications
  • Wallet Setup + Payment Rails
  • Match Info (all states)
  • Calendar
  • Home Dashboard
  • Leaderboard
  • Profile + Settings
  • Find Players (List + Map)
  • Tournaments
  • Help Center
  • Player Profiles
  • Messages
  • Guest Mode
The Design System

Dark mode and light mode. Both built properly. Neither an afterthought.
The design system anchors on forest green (#1A3A2A range), clean whites, and deep blacks - with a single high- energy accent (bright green) reserved exclusively for primary CTAs and active states. Color does real work here. Green means go. Red means stop or warning. Yellow means caution. Users learn the language in the first session and never have to think about it again.

Cue Contact Pro design system screens
Forest Green Grass Green White Swamp Gray Forest

Typography:

Clean, legible sans-serifs throughout. Headlines have weight. Body copy breathes. Nothing competes with the interface data.

ComponentArchitecture:

Clean, legible sans-serifs throughout. Headlines have weight. Body copy breathes. Nothing competes with the interface data.

The "Propose New Time"Flow Alone

Required a full calendar component with time picker, confirmation states, acceptance/ decline states, and countdown displays. That's more UX work than most entire apps.

Cue Contact Pro design accent
Feature Deep-Dive

Authentication & Onboarding

Eight screens minimum before a user reaches the home screen - and none of them feel like a chore.

  • Start
  • Sign Up
  • Email Verification (4-digit code)
  • Profile Photo
  • Theme Selection (light/dark)
  • Wallet Setup
  • Age Verification
  • Location Verification
  • Home

The wallet setup and age verification are load-bearing from a regulatory standpoint. We designed them to feel like milestones, not interrogations. By the time a user hits the home screen, they've set up everything needed to participate fully - payment method, verified age, verified location. No friction later.

Guest mode runs in parallel. A guest can browse the app, see the leaderboard, view player profiles, and understand the full value proposition before committing to registration. The guest profile screen has one job: "Build your player identity." It converts.

Cue Contact Pro onboarding screens

Home Dashboard

The home screen answers three questions immediately:

  • 1. What's your current record?
  • 2. What matches do you have coming up?
  • 3. Where do you stand on the leaderboard?

Stats widget: wins, losses, ELO rating, total earnings. Leaderboard preview: top players with ratings. Upcoming Matches feed: next games with countdowns. And if the wallet needs attention - a persistent prompt to add funds before an opportunity is missed.

Dense, but never cluttered. Information hierarchy designed to reward the experienced user while remaining legible to someone opening the app for the first time.

Cue Contact Pro home dashboard
Cue Contact Pro wallet screen

Wallet

Real money. Built accordingly.

The wallet handles two rails: card payments (full card entry flow with Visa/Mastercard/Amex) and digital wallets (Apple Pay, Google Pay). Deposits and withdrawals both fully designed - custom amount entry, preset amounts ($30, $50), withdrawal to bank account.

Transaction history shows every movement: wager wins in green, losses in red, deposits and withdrawals clearly labeled. Every transaction has a detail view.

The wallet setup flow includes age verification (date of birth entry) and location verification (native iOS/Android geolocation permission with a proper "why do we need this?" explanation screen). These aren't legal checkboxes - they're trust signals. We made them look like it. Empty wallet state has one purpose: get the first deposit. The CTA is clear. The path is short.

Find Players

Two views. One purpose: find someone to play.

List View: Players ranked by ELO with location and availability. Search. Filter by range, skill level, availability. Each player tile shows their record, rating, and a direct Challenge CTA. One tap to initiate.

Map View: The same player data rendered on a real map with player pins and venue markers. Filter by distance. Tap a pin to see the player card. Tap "Challenge" directly from the map. Pool halls visible as venue markers - so you can find a player and a venue in the same view.

The keyboard and filter system is fully built out - not a placeholder. Multi-select filters, sort logic, persistent state across sessions.

Cue Contact Pro find players screens
Cue Contact Pro create challenge flow

Create Challenge

The most complex form in the app. Also the most important one.

  • Step 1: Select opponent (from Find Players or direct search)

  • Step 2: Choose game type

  • Step 3: Set wager amount (custom keypad, no preset limits)

  • Step 4: Select date (full calendar)

  • Step 5: Select time (time picker with AM/PM)

  • Step 6: Choose venue (map view with venue pins, or list view)

  • Step 7: Review & Send

Every step has a back path. Every step has validation. The wager keypad handles edge cases - no negative numbers, no amounts exceeding wallet balance, clear error messaging when funds are insufficient with a direct path to deposit. The challenge arrives to the opponent as a notification. They see the full terms before accepting. If they decline, the challenger is notified immediately. If they don't respond, the challenge expires - and both parties see the expired state with a "Send New Challenge" option.

Match Info - All States

This is where the engineering of the UX shows. A match
between two players can exist in more states than most apps
handle in their entirety.

Scheduled:

Countdown timer. Match details.
Venue. Option to Propose New
Time or Cancel.

Propose New Time:

Full calendar + time picker.
Request confirmation sent.
"Proposed Change" with Accept/
Decline. Reschedule Accepted/
Declined fully designed.

Cancel Scheduled Match:

Cancellation policy display.
Penalty selection (who pays).
Confirm Cancel. Match Cancelled
confirmation with refund detail.

Awaiting Acceptance:

Challenge sent. Waiting for
opponent response. Timeout
state if no response.

Cue Contact Pro match state screen

Completed:

Result reporting. Both players
submit their score. Disputed result
flow. Result confirmed - money
moves.

Opponent No-Show:

Report No-Show flow.
Confirmation required. Admin
escalation path. Resolution states.

Incoming Challenge:

Opponent view of a challenge
received. Full terms visible. Accept
or Decline. Cancellation of a
received challenge fully handled.

Opponent View:

Every match screen has a
counterparty version. We
designed both. The UX works
correctly from either side of the
match.

Match Expired:

Challenge expired without
response. Clean state. New
challenge CTA.

Cue Contact Pro match accent

Leaderboard

Multiple leagues. Multiple filters. ELO ratings visible at all times.

Leagues tab: Local League, Challenge League, Gold Tier League, Western League, Legend League. Each with its own ranking and prize pool display.

Rewards Info screen: what each tier earns, how ELO is calculated, what actions move your rating.

Filter by region, league, skill tier. The leaderboard isn't just a vanity screen - it's the motivation engine. Seeing your ELO number is why players open the app every day.

Cue Contact Pro leaderboard screen

Tournaments

Built for organizers and participants equally.

Tournament Listing:

Upcoming tournaments with prize
pools, entry fees, player counts.
Filter by entry fee range, game
type, date.

Create Tournament:

Name, game type, entry fee, prize
pool structure, date/time, venue.
Full form with validation.

Live Tournament View:

Real-time bracket with live match
indicator.

Tournament Details
& Join:

Full bracket preview before joining.
Entry fee shown. Prize pool
breakdown. "Joined successfully"
confirmation. Insufficient funds
state with deposit option.

Cue Contact Pro tournament phone

Single Elimination
Bracket:

Bracket works across all rounds.
Players advance visually. Current
round highlighted, completed
matches dimmed. Most
technically demanding UI - it
works.

Cue Contact Pro messages screen

Messages

In-app messaging with match context.

Message threads show player avatar, name, and last message. Active conversation view with full message history. Image sharing supported. Each conversation is anchored to a player relationship - the challenge and match history are always one tap away from the conversation.

Notifications

Categorized notification center: Challenges, Matches, Tournaments, Friends, System.

Every notification type designed: Challenge Accepted, Challenge Declined, Match Reminder, Result Submitted, Friend Request, Tournament Starting, Funds Received, Withdrawal Processed.

Notification detail view with direct action - accept a challenge from the notification without opening the full app.

Cue Contact Pro notifications screen
Cue Contact Pro calendar screen

Calendar

All matches in one view.

Month calendar with match indicators. Tap a date to see that day's matches. Guest mode shows an empty calendar with a sign-up prompt. Logged-in view shows scheduled, in-progress, and completed matches with status indicators. Profile avatar visible on match dates - small detail, high polish.

Player Profile

The public-facing identity layer.

Stats: wins, losses, ELO, total earnings. Match history. Social links. Follow/Challenge CTAs. The profile is both a reputation signal and a conversion point - viewing someone's profile and challenging them is a two-tap flow.

Referral Program: Earnings display, referral code, share mechanics. Total earnings from referrals visible on the profile alongside winnings. Guest Profile: Dedicated state showing a placeholder identity with "Build your player identity" and "Sign Up" CTA. No dead end - always a path forward.

Cue Contact Pro profile screen

Settings

Every setting a competitive platform needs:

  • Update Profile (photo, name)
  • Privacy Settings
  • Notification Preferences
  • Payment Methods (add, remove, set default - Visa, Mastercard, Apple Pay, Google Pay, PayPal)
  • App Settings
  • Help Center
  • Terms of Service
  • Logout

Payment method management is fully designed - add card flow, remove card confirmation, set as default. No partial implementation.

Help Center: Categorized FAQ structure. Account, Wallet & Payments, Match & Gameplay, Tournaments, Challenges, Advocacy & Fairness. Each category expandable. Direct support contact path at the bottom.

Cue Contact Pro settings scene
Tech Stack
Cue Contact Pro technology stack
Layer Technology
Mobile FLUTTER (IOS + ANDROID, SINGLE CODEBASE)
Backend NODE.JS / EXPRESS
Database POSTGRESQL
Real-time WEBSOCKET (SOCKET.IO)
Payments STRIPE + APPLE PAY + GOOGLE PAY
Push Notifications APNS + FIREBASE CLOUD MESSAGING
Location NATIVE IOS/ANDROID GEOLOCATION APIS
Storage AWS S3 (PROFILE PHOTOS, MATCH MEDIA)
Authentication JWT + APPLE SIGN-IN + GOOGLE OAUTH
Hosting AWS

Why Flutter: Native-level performance on both iOS and Android from a single codebase. For an app with this many interaction states - match countdowns, real-time leaderboard updates, bracket animations - Flutter's rendering engine outperforms React Native in consistency. Every screen looks exactly as designed on every device.

App Store & Google Play Submission

Shipping to production is where most studios hand off and disappear.
We don't.

Cue Contact Pro App Store icon

iOS App Store:

  • App Review guidelines compliance audit - wagering category requires specific metadata handling
  • Age rating: 17+ (gambling/wagering category)
  • Privacy policy and terms of service linked from store listing
  • App Privacy nutrition label completed (data types collected, linked to user identity)
  • Screenshots: 6.7" iPhone, 6.5" iPhone, 12.9" iPad - all generated
  • App Preview video: core loop demonstrated (find player → challenge → accept → result)
  • Keywords optimized for: pool app, billiards, cue sports, wagering, competitive pool
  • First review submission: approved
Cue Contact Pro Play Market icon

Google Play:

  • Real-money gambling policy compliance - financial features disclosure
  • Target API level compliance (latest Android requirements)
  • Permission declarations: location (precise, for player discovery), camera (optional, profile photo), notifications
  • Store listing: feature graphic, screenshots across device sizes, short and long descriptions
  • Data safety section completed
  • Content rating questionnaire: Interactive Digital Media → Gambling → submitted and rated
  • First review submission: approved

Both platforms live. Zero major post-submission issues.

Cue Contact Pro production metrics background
The Numbers
Leaderboard 200+
User Flows Mapped: 40+
Post-Submission Issues: 0
Match States Handled: 12
Feature Modules: 15
Payment Integrations: 3 (Stripe, Apple Pay, Google Pay)
What Made This

What made this hard a lot of things. But three stand out.

The Escrow Problem.

When two players agree to a $100 wager, that money needs to be locked the moment the challenge is accepted - not when the match starts, not when the result is reported. Building the escrow logic correctly, handling edge cases (cancelled match with penalty, disputed result, no-show), and ensuring the money always ends up in the right place required careful backend architecture. We got it right.

The Bracket Renderer.

A single-elimination tournament bracket that renders correctly at every round, updates in real time as matches complete, and works on mobile screen - this is a genuinely hard UI problem. We solved it with a custom recursive rendering approach. It works. It's fast. It looks exactly right.

The Dual-Perspective UX.

Every match screen exists twice - once for the challenger, once for the challenged. The same match, the same data, different context and different available actions. Designing and building both perspectives for every state without inconsistencies or dead ends required rigorous system thinking. We mapped it, we designed it, we built it.

Cue Contact Pro result screens
Result

Cue Contact Pro is in the market on iOS and Android. Pool players can find opponents, set wagers, play matches, report results, and get paid - all inside one app, all with a verified record attached to their name.

The sport deserved software at this level. Now it has it.

Designed and build with care by Improvs.com

Visit the website