← Back to Work Live on Web, iOS & Android · 3 USPTO Patent Filings
FrontRow Sports (Co-Founder & Product Lead) · Consumer Mobile & B2B2C Live Venue Gaming · iOS, Android & Web

FrontRow Sports: TakeSide & FrontRow Fans

Designing two products across a startup pivot and 3 USPTO patent filings: TakeSide (500,000+ takes made · 30,000 peak active users · App. 19/737,090) and FrontRow Fans Live Sports Bingo (Nonprovisional App. 19/810,956 & App. 64/116,335 · Material 3 design system).

See it live Apple App Store Google Play Store

500K+
Takes Made on TakeSide
30,000
Peak Active Users
+25%
Session Retention Lift
My Role
Co-Founder & Product Lead
Timeline
2018 – 2024
Collaborators
Co-Founders & CTO Randall M. Anderson
Core Stack
Figma, FigJam, Material 3 Design Kit, iOS & Android, WebCard, Apple/Google Wallet, Sportradar, Mixpanel, Mixpanel MCP

1. Making Social Play Around Live Games Feel Effortless

At local sports bars, people always have their phones out on the table while watching a live broadcast of a game overhead. Yet when my friends from Phillips Academy Andover, our CTO Randall M. Anderson, and I started FrontRow Sports, we realized how fragile social play around live sports actually is. Group chats were full of arguments about fourth-quarter calls and player stats, while traditional sports apps treated fans as solitary box-score readers.

Over the life of the company, my co-founders and I designed and built two products from scratch to help friends play together before, during, and after live games—resulting in three pending USPTO patent filings (19/737,090, 19/810,956, and 64/116,335):

  1. TakeSide (500,000+ Takes Made · 30,000 Peak Active Users · USPTO App. 19/737,090): We designed TakeSide as a mobile-first iOS and Android game where friends challenge each other on live ~50/50 sports storylines. Early on, watching fans use the app in dining halls and local bars showed us that complex stat cards slowed down the banter happening around the table. By removing as much visual noise as possible through fan interviews and Mixpanel funnel analyses (Project Simplification), we turned each storyline card into a 3-second mobile interaction—lifting session retention by 25%, reaching 30,000 active users, and driving 500,000+ takes across the NBA season. Behind the scenes, we invented a friend rivalry graph and AI prompt system (filed under USPTO App. 19/737,090) that tracks head-to-head history and live game swings to spark friendly competition.
  2. FrontRow Fans (livesportsbingo.com · iOS App Store · Google Play · USPTO App. 19/810,956 & App. 64/116,335): Because licensing real-time league data feeds (~$30K per league) is unsustainable on a free consumer app without becoming a sportsbook, we pivoted to B2B2C venue gaming—helping local sports bars, breweries, and restaurants host live multiplayer sports bingo that keeps guests at their tables for the full broadcast. Playtesting live sessions in venues taught us that the hardest moment in social play is when a friend arrives late to a table: they want to scan a code and be playing in the same round within seconds from their mobile browser without losing their place. To make joining a friend effortless, I designed our Material 3 design system, custom iconography, and a cross-surface web-to-mobile handoff architecture filed under USPTO App. 64/116,335 and USPTO App. 19/810,956, iterating continuously with live Mixpanel MCP telemetry.
FrontRow Fans latest release screens: Checked-in venue home at Brewhaha Pub, 5x5 Live Sports Bingo board, and expanded Jaden Hardy player stat modal
Fig 1.1 — FrontRow Fans latest release: Checked-in venue home (Brewhaha Pub), the 5×5 Live Sports Bingo board (CLE vs. LAL), and the tap-to-expand player stat modal.
TakeSide iOS App Store screens showing Close-Call matchups, Live Gameday NBA Feed, and Fan Leaderboards
Fig 1.2 — TakeSide on the iOS App Store: Close-Call team matchups, the live gameday prop feed, and community leaderboards.

2. TakeSide: Patent-Pending Interactive Storylines, Social Rivalry Graph & LLM Prompt Generation

Traditional sports media publishes static box scores and articles; social media asks fans to compose posts from a blank text box. Through USPTO Nonprovisional Application No. 19/737,090 (Systems and Methods for Rapidly Generating Original, Timely, and Tailored Content, where I am First Named Inventor alongside Rand Anderson), we invented a social publishing and generative AI content loop:

  • Automated 50/50 Storylines: Our backend ingested historical and real-time league data to automatically generate a Storyline—selecting uncertain, ~50% probability outcomes (e.g., whether a player hits 5+ three-pointers) that combine an upcoming matchup, recent performance trends (Last 3 Games), and an argument-worthy premise (24 Points?, More Assists?).
  • The "Take" & Social Rivalry Data Graph: When a fan swiped right (Support) or left (Challenge), that single gesture published a "Take" into a dual data graph tracking user interests (supported/rival teams and players) and friend relationships (head-to-head challenge history, win/loss records, and a Personal Rivalry Score).
  • Contemporaneous LLM Prompt Generator & Generative AI Content (19/737,090): A contest scheduler tracks Pre-Game, Game Play (including halftime, early leads, comebacks, and chokes), and Resolution windows alongside each user's habitual time-of-day engagement patterns. While a contest is still unresolved, our Prompt Generator traverses the Generated Data File (GDF)—combining live game stats with friend challenges—to prompt generative AI models (such as Claude, DALL-E, and Midjourney) to create real-time humorous rivalry banter, interactive halftime mini-games (e.g., puzzles), and contextual sponsor rewards/coupons distributed to the user and their social network.

Four Take Archetypes & 26 Governed Elements

To turn variable-length sports storylines into cards a fan could read and react to in three seconds, I created high-fidelity visual specifications across four core Take archetypes—each containing 26 total elements (11 textual elements + 15 visual elements):

  1. 1P1S (One Protagonist, 1 Stat — Standard Headshot): A single player prop ("LaMelo Ball: 24 Points? AVG: 18.7") paired with a 3-game stat strip (11 PTS, 20 PTS, 27 PTS) so fans could swipe right (👍 Yes) or left (👎 No) with full context on the card.
  2. 1P1S (One Protagonist, 1 Stat — Full-Bleed Action Shot): High-drama court photography ("Luka Doncic: 34 Points? AVG: 29.7") with a translucent dark stat pill on the right and the Last 3 strip anchored above the vote bar.
  3. 2P1S (Two Protagonists, 1 Stat — Head-to-Head / Mismatch / Close-Call): Side-by-side player or team comparisons on a single stat ("Kawhi Leonard 26.3 PTS vs. Steph Curry 38.2 PTS — More Points?" or "Giants 212 HR vs. Cubs 187 HR").
  4. GO (Game Outcomes): Full matchup winner picks ("PHX vs. MIL · 9:15 PM — Who Wins?") where fans swiped the team card toward their side.
1P1S No Action Shot archetype: LaMelo Ball 24 Points card with swipe left reaction and Last 3 games strip
Fig 2.1 — 1P1S (Headshot): LaMelo Ball 24 PTS with swipe overlay & Last 3 strip.
1P1S Action Shot archetype: Luka Doncic 34 Points full-bleed action card
Fig 2.2 — 1P1S (Action Shot): Luka Doncic 34 PTS with right-aligned stat column.
GO Game Outcomes archetype: Phoenix Suns vs Milwaukee Bucks swipe card
Fig 2.3 — GO (Game Outcomes): PHX vs. MIL head-to-head winner swipe.
2P1S Two Protagonists 1 Stat Mismatch card: Kawhi Leonard vs Steph Curry
Fig 2.4 — 2P1S (Two Protagonists, 1 Stat): Kawhi Leonard vs. Steph Curry scoring average comparison.
Visual specification redlines protecting vertical and horizontal sightlines across 26 card elements
Fig 2.5 — Visual QA redlines auditing spacing and protecting vertical & horizontal sightlines across iPhone X and Samsung Galaxy viewports.

3. Project Simplification, Path-to-Value Analytics & 500,000+ Takes Made

After our beta launch—where 95% of SurveyMonkey participants asked us to expand beyond NBA into MLB and NFL (leading us to raise the capital needed to license Sportradar live feeds during the NBA bubble)—our Mixpanel funnel telemetry exposed a critical drop-off on the path to value: new users were downloading the app, clicking through our tutorial, and hesitating before ever reaching their first value moment (Take Made).

Alongside our 33-fan survey and 22 recorded 1-on-1 discovery interviews (ET100), I sat down with 50+ sports fans across campus dining halls, locker rooms, and local bars to watch them open the app for the first time. Our qualitative synthesis revealed why both casual home-team supporters and die-hard fantasy players wanted TakeSide: unlike season-long fantasy leagues that demand heavy weekly time commitments, fans wanted a low-effort, "table-setting" visual take they could react to in seconds and send via DM to spark friendly head-to-head competition with friends. Watching them use the early card build exposed two immediate UX flaws blocking that experience:

  1. Direction chevrons (< / > and ^ / v) looked like navigation instead of a prediction: On our early cards (Fig 3.1), fans thought the arrows scrolled to the next story rather than locking in "Over" or "Under," and our micro-animation feedback was too subtle to confirm their vote.
  2. Nobody reads a demo tutorial before they play: Forcing people through a multi-screen walkthrough before they could touch a live game card delayed the value moment and made the app feel like homework.
Legacy Giannis Antetokounmpo 33 Points card with confusing left and right chevron arrows at the bottom
Fig 3.1 — Before: Legacy card using abstract chevron arrows (`<` / `>`) that new users mistook for carousel navigation.
Over/Under card redesign replacing chevrons with explicit Under and Over (+21 PTS) buttons
Fig 3.2 — After (Project Simplification): Explicit Under / Over (+21 PTS) buttons and thumbs-up/down swipe stamps so no tutorial was needed.
Project Simplification goals: make the purpose of TakeSide hit-you-over-the-head simple
Fig 3.3 — Project Simplification design brief after interviewing 50+ sports fans.
Day 0 Profile onboarding specification with 10-take unlock and 7-day leaderboard toggle
Fig 3.4 — Day 0 profile spec: giving new fans a 10-take unlock goal and a 7-day leaderboard where anyone could win the week.

Measuring Meaningful Active Usage Across Frequency, Breadth & Depth

We paired the simplified cards with an arcade-style rapid-fire prediction minigame and SeasonPass (an 8-punch loyalty card aligned to our gameday product usage interval that rewarded streaks with prize checkpoints). Rather than tracking passive logins, we segmented our users behaviorally across Frequency, Breadth, and Depth into Casual, Core, and Power cohorts:

  • Meaningful Active Usage & Retention (+25% Session Retention · 30,000 Peak Active Swipers): Removing first-card friction so new users hit their first value moment within seconds—and giving them a 10-take Day 0 unlock goal plus an 8-game streak loop—lifted session retention by 25%, scaled TakeSide to a peak of 30,000 active users who swiped and interacted with takes, and generated 500,000+ total takes made across the 2021–2022 NBA season.
  • Gameday Usage Interval & Cohort Velocity (31–57 Takes / Active User / Day): Because live sports follow a natural gameday rhythm, we measured engagement across gameday intervals. On peak NBA nights like December 29, 2021, 254 daily active users generated 7,996 takes in 24 hours (~31.5 takes per user), with earlier cohorts averaging over 50 takes per active user per day (4,209 takes across 83 active users on Nov 11; 4,182 takes across 73 active users on Nov 13; 4,810 takes across 132 active users on Dec 6).
  • Power-User Depth & Organic Growth Loops (2021–2022 NBA Season): Our top Power Users demonstrated extraordinary season-long depth across multiple leagues and card archetypes—led by ADRankings (~40,000 takes), Cmill (~20,000 takes), jimgking (~12,000 takes), and lakersfan7 (~10,000 takes)—and became our strongest organic acquisition channel through head-to-head friend challenges.
SeasonPass 8-punch loyalty card states from first punch to completed pass
Fig 3.5 — SeasonPass 8-punch loyalty card states across active, checkpoint, and completed passes.
Automated Slack analytics report showing 215 new users, 254 active users, and 7,996 takes made in one day
Fig 3.6 — Daily automated Slack report after shipping Project Simplification: 7,996 takes made across 254 daily active users on Dec 29, 2021.

4. FastLane Journey Audit, Mixpanel MCP Telemetry, Continuity Routing (64/116,335) & Probabilistic Bingo (19/810,956)

As we expanded into sports bars and pubs with Live Sports Bingo and Venue FanClubs, patrons entered by scanning a table tent QR code on their phone (FastLane). Before redesigning the live game interface (RIUI), I combined a 5-stage UX audit (Awareness → Consideration → Acquisition → Service → Loyalty) with live telemetry queries through the Mixpanel MCP server—connecting our FrontRow Sports Mixpanel project directly to Claude and Cursor so I could inspect path-to-value funnel drop-off, New, Retained, Resurrected, and Dormant venue cohorts, and tile-expansion depth while iterating in Figma. That data-driven feedback loop shaped both our RIUI interface and two additional USPTO patent filings: USPTO App. 64/116,335 and USPTO Nonprovisional App. 19/810,956 (co-invented with Rand Anderson, claiming priority to 63/883,365).

5-stage FastLane User Journey Map auditing User Actions, Goals, Feelings, Pain Points, and Opportunities
Fig 4.1 — The 5-stage FastLane user journey map auditing actions, goals, sentiment, pain points, and opportunities from scanning a bar QR code to redeeming a prize.
9-screen FastLane Join Flow from QR code scan to phone verification, location check-in, and BrewHaHa game lobby
Fig 4.2 — The 9-screen FastLane QR join sequence, where Mixpanel MCP funnel analysis pinpointed iOS geolocation prompt drop-off—solved by adding plain-language location privacy copy before triggering the system prompt.

State-Aware Participation Continuity Architecture (USPTO App. 64/116,335)

Our Mixpanel funnels showed that ordinary QR systems lose patrons on the path to value whenever they force a cold App Store download at the bar table or drop browser session state when cookies clear or tabs close. In USPTO Provisional App. 64/116,335 (State-Aware Participation Continuity System for Routing Users Across Browser, Wallet Pass, Messaging, and Native Application Channels), I designed a server-centric continuity system built around our patrons' real usage intervals and lifecycle states (New, Retained, Resurrected, and Dormant):

  • Smart Routing Layer (SRL) & Multi-Path Resolution: Evaluates table-tent QR codes, NFC tags, and packaging triggers using OS universal/app-link resolution, browser continuity tokens, and server-side phone lookup to dynamically route the same QR scan into a Native App Path, a Returning WebCard Browser Path, a Messaging-Assisted Identity Path (prefilled JOIN SMS/RCS + OTP verification with zero web forms), or a Re-Authentication Recovery Path.
  • Phone-Linked Identity Anchor & Geofence Presence Proof: Uses OTP-verified phone numbers as a universal cross-surface key and validates browser geolocation against a venue geofence (with unverified participation mode and manual venue-code fallbacks) to bind campaign-tagged venue memberships across both on-premise and off-premise entry.
  • Dynamic Wallet Pass & Rhythm-Aware Lifecycle Routing: Issues and updates an interactive Apple/Google Wallet pass carrying venue identity, next relevant game, streak count, ticket balance, rank, badge, and deep links back into an occasion-aware WebCard (pregame, live-game, postgame, offday, or crew-coordination mode). Rather than prompting every patron identically, our rhythm-aware next-action engine adapts to whether a user is New, Retained, Resurrected, or Dormant—only triggering the Apple/Google Wallet Pass → Native App conversion gate once a patron hits their 2nd Bingo card within an 8-day usage interval (Fig 4.3).
Bingo v2.6 logical flow chart showing Pregame vs Live Game forks, 5-9 minute SMS compliance delay, 20-minute post-game SMS win recovery, and 2nd card in 8 days Wallet Pass vs App Store conversion gate
Fig 4.3 — Bingo v2.6 logical state machine (split view: entry & gameplay on the left, post-game SMS recovery & progressive "2nd Card in 8 Days" Wallet Pass / App Store conversion gate on the right).

Probabilistic & Temporal Live Progression Engine (USPTO Nonprovisional App. 19/810,956 — First Named Inventor)

Replacing random bingo numbers with live sports statistics creates a mathematical challenge: discrete sports stats have small ranges (e.g., moving from 1+ Hit to 2+ Hits cuts probability by more than half), and a bar promotion fails if zero patrons reach the value moment, too many win at once, or everyone hits bingo in the first quarter. In USPTO Nonprovisional App. 19/810,956 (Systems and Methods for Operating a Live Sports-Themed Bingo Game, First Named Inventor: Rolando Rabines), we designed a two-level control system:

  • Bayesian / ML Tile Engine & Impact-Zone Board Topology (Z2/Z3/Z4): Computes tile-level Expected Achievement Probability (EAP), Expected Achievement Time (EAT), and pairwise correlation metadata, then maps tiles onto a 5×5 grid weighted by combinatorial line participation—Zone 4 (Z4) center tile (4 winning lines), Zone 3 (Z3) corners/diagonals (3 lines), and Zone 2 (Z2) edges (2 lines)—iteratively replacing/repositioning tiles until card-level Expected Bingo Probability (EBP, e.g., 20–30%) and Expected Bingo Time (EBT, e.g., 77.8%–100% of game time / 7th–9th inning or Q4 climax) meet target ranges under our Configuration Resolver (Sport Profile, RoundGen Recipe, CardGen Recipe).
  • Closed-Environment Cohort Diversification & Live Mid-Game Tile Swaps: Scales per-card EBP dynamically to the venue's player pool size, enforces cross-card diversification along winning lines so cards don't cluster, tracks real-time cohort progress (2 Away, 1 Away, Bingo bar), and offers targeted in-game tile swaps when live EBP/EBT drift—steering the live bar cohort back to the target winner count and late-game finish, followed by post-round ML calibration.

5. FrontRow Fans Latest Release: Designing Live Sports With Zero Logos or Team Colors

"What if a team could feel unmistakably like itself, with no logo, no official colors, and no license?"

Without league or team licensing, we could not use official team logos, official team colors, or player headshots. When those came out in our baseline pass (L0), what was left was a black-and-white board that felt lifeless in a bar.

Working with FrontRow Sports CTO Rand Anderson and our co-founding team on the FrontRow Fans latest release, we co-designed the updated live game interface and I built our Material 3 design kit (internally codenamed RIUI, for rights-independent UI)—rebuilding the visual hierarchy, tile anatomy, and motion language from the ground up using dark venue surfaces (#0B0D13), high-contrast sunset-orange fills (#EF4E00), and rights-safe geometric crests.

7-screen temporal progression of a Live Sports Bingo card from Board Loading and Pre-Game to Live Q1, Q2, Q3, B-I-N-G-O Row Fill, and You Hit Bingo Claim Modal
Fig 5.1 — 7-stage temporal progression of a 5×5 Live Sports Bingo card (CLE vs. LAL at Kingfish Pub): Board Loading → Pre-Game (7:30 PM) → Live Q1 (0–0) → Live Q2 (40–38) → Live Q3 (68–52) → Row Fill B-I-N-G-O (100–102) → "You Hit Bingo!" Claim Modal (24 Prize Entries).

1:1 Measured Anatomy: The 71×78 Grid Tile & Converged 340×221 Expanded Modal

Fitting 25 live player and team prop tiles onto a 375px phone screen so they're legible at arm's length in a bar required strict rules for what lives on the tile face versus what moves into the tapped modal:

  • Upper half is WHO (59×12 at 11pt w800): Player last name (ALLEN, HARDEN, JAMES) or team tri-code (CLE, LAL), paired with a 13×16 geometric shield (Filled Shield = Home, Outlined Shield = Away).
  • Lower half is WHAT (59×12 at 11pt w600 + 56px progress bar): On the L1 grid tile, a 56px progress indicator along the bottom inside edge (y=72 of 78px) replaces the noisy live fraction—so your eye can scan all 25 tiles at a glance and immediately spot which props are almost full.
  • One converged Expanded Tile (340×221 r24) across WebCard and App: Tapping any tile opens a single shared any/bingo/tile-expanded modal (collapsing 12 separate web and native frames down to 6). It uses a 4-step type ramp (104pt · 32pt · 16pt · 12pt) with a 104pt #8 jersey watermark in the background and the full fraction (12/12 POINTS) spelled out clearly.
1:1 measured anatomy of the 71x78 RIUI Live Sports Bingo grid tile
Fig 5.2 — 1:1 measured anatomy of the 71×78 prop tile: Protagonist ("Who"), Home/Away shield crest, Stat row ("What"), and 56px bottom progress bar.
1:1 measured anatomy of the converged 340x221 RIUI expanded tile modal
Fig 5.3 — The converged 340×221 Expanded Tile modal (`L1/any`), collapsing 12 web and native frames into 6 with a 104pt jersey watermark and 4-step type ramp.
6-screen matrix of RIUI L1 expanded player and team tiles in filled and unfilled states
Fig 5.4 — All six states of the converged Expanded Tile modal across Player, Home Team (filled shield watermark), and Away Team (outlined shield watermark) in both filled (ember) and unfilled states.

6. Motion & Keeping Web and Mobile in Sync

For the live game experience, we also designed how the board moves and stays in sync between the mobile web card and the native app:

  • Shared screens across Web and App: Whenever a screen was identical on the web card and the native app, we designed and maintained a single shared version in Figma—only splitting out the header where the native app needed a back button.
  • Five key animations for live play:
    1. Pregame Entrance (3000ms): 25 tile stats stagger in (350ms + index × 35ms, cubic-bezier(.16, 1, .3, 1)), followed by 25 accent progress lines drawing via stroke-dashoffset.
    2. Card Resume Linear Wipe (2500ms): Top-to-bottom linear wipe and glow pulse when a patron unlocks their phone mid-game.
    3. Row Fill → B-I-N-G-O Flip (3400ms): Four-phase win sequence—winning tile confirm (0–500ms), left-to-right row ripple (550–970ms) while non-winning tiles dim to 30%, unified row pulse (1100–1450ms), and B-I-N-G-O letter flips (1550–2750ms).
    4. Bingo Win Overlay & Confetti (2285ms): Spring modal scale (80% → 100%) with 30 non-blocking confetti particles and iOS haptic feedback.
    5. Loading Shield Pulse (2400ms loop): Four-stop gradient SVG badge breathing to scale(1.04).
1:1 measured anatomy of the 375x812 Live Sports Bingo card screen from the RIUI Design Atlas
Fig 6.1 — Full-screen 375×812 anatomy from the RIUI Design Atlas, generated directly from our Figma board (`kJro9ioRRoDID8tf84Npwx`).
TAKE/SIDE Game Picks tab, YOU HIT BINGO claim modal with confetti, and Stark Brewing Company post-game recap
Fig 6.2 — The rest of the L1 venue loop: TAKE/SIDE Game Picks, the "You Hit Bingo!" confetti claim modal (24 prize entries), and the post-game venue recap with native app upsell.

Compiling the Figma Board Against Live Code

Because our team named every frame and element on the Figma board systematically, our CTO's compiler (build_board.py) could check our Figma deliverables directly against the live codebase before engineering started building. That compile caught 7 places where the live app had drifted from the spec, 4 design decisions that had quietly disappeared between versions of the board, and 1 stray licensed team logo that had been layered over a headshot in an earlier release.

Below is the live WebLSB preview build (lsb-dev.fanclub.games) running the RIUI tile grammar on a live NFL game (BUF 27 vs. 27 LA in Q4)—where reviewing the real build also let us flag final design QA fixes for engineering (like preventing long surnames such as MUMPFIELD and HERNÁNDEZ from wrapping mid-word, and keeping 341/290 TOTAL YARDS from clipping on the compact tile face).

Live WebLSB build running NFL BUF vs LA Q4 board, tapped Los Angeles Rams team tile with shield watermark, and post-game recap
Fig 6.3 — The RIUI system running live NFL data on `lsb-dev.fanclub.games`: Q4 board with ember fills and progress bars, tapped Los Angeles Rams team modal (`341/290 TOTAL YARDS`) with the rights-safe shield watermark, and the Final `17/25 Filled` game recap.