PinPoint League Analytics

  • Consumer & Web
  • 120 daily active users

PinPoint League Analytics

Solo Velocity

Sector
Sports / League analytics
Platform
Mobile web
Era
2025–present
Team
Solo
Role
Solo Designer & Builder Founder, Play Pit LLC
Audience
Pinball league players and captains

What if one designer built the tool every captain in the league was secretly building by hand?

  1. A passion project that became a real product

    Originally built to help my pinball team make better choices and to learn vibe coding. Now it's a paid product.

    Private to my team for six months. Opened to the league after other players started offering cash to get in early.

  2. Designed from what I watched and heard

    The big decisions came from watching people use it or talking with other players.

    I switched scoring from mean to median after another player mentioned he'd done it in his own spreadsheets. Every time I handed someone my phone, they searched for themselves first. I flipped the Dashboard from team-first to self-first that evening. Dark mode by default because arcades are dark.

  3. One designer + a system I built to run the build

    I prompted, Claude Code built. Backlog Buddy, a Trello workflow I designed, ran the project.

    Backlog Buddy handles priority taxonomy, list flow, user-feedback intake, and grooming patterns. The portfolio site you're reading runs on a port of the same workflow.

    How I AI

The league

Seattle's Monday Night Pinball runs 34 teams and 336 active players, with 1,400+ in the historical record. Weekly matches across the city, ten-plus seasons of data, all of it living on a desktop website that was never built for analytics.

The league runs on strategy as much as performance. Each match night has four rounds. Each player plays three times. On every round one team picks machines and assigns players, the other team responds. Knowing which machines your opponents are strong on, and which ones they aren't, is the difference between a confident pick and a guess.

I'd been a pinball player since I was nine, and started playing MNP in 2021. By my second season I was captain of a team. What I noticed as captain was how much of the week went into research. Open the team page. Click into every past match. Find each opponent's scores per machine per round. Repeat across every previous match in the season. Average them by hand in a spreadsheet. Two to four hours a week, every week, just to know what we were walking into on Monday.

Every captain in the league was doing the same thing. Every captain in their own spreadsheet. None of it covered earlier seasons.

That's what PinPoint replaced.

The team

Solo build, force-multiplied by AI

Matthew Greene

Solo Designer & Builder Founder, Play Pit LLC

  • Design
  • Engineering
  • Product
  • Ops

The stack

Goals

  • Walk into every match knowing what we're up against.
  • Make pick-or-respond calls based on data, not gut.
  • See whether the work is actually paying off.

Before and after

Scouting before PinPoint meant doing it by hand. I'd aggregate opponent scores into a spreadsheet that grew with the season into head-to-head comparisons, venue-specific cuts, and color-coded evaluations.

PinPoint replaced the workflow.

Before PinPoint

Evolved spreadsheet. Head-to-head opponent comparison across all venues plus a per-venue cut at Georgetown Pizza & Arcade, with a color-coded evaluation column flagging Major gap, Strong matchup, or Familiar ground on each machine.

  • Hours of clicking, copying, averaging
  • Current season, one team at a time
  • Team-wide averages, one-size-fits-all
  • Desktop spreadsheets

After PinPoint

Recon Report on mobile in dark mode. Side-by-side comparison between two teams on each machine at the venue, with EXCELLENT PICK callouts on the strongest matchups.

  • Open PinPoint
  • Configurable scope and sort
  • Picks based on your scores
  • Mobile-first, dark mode, at the venue

Live demo

Below is PinPoint running on a credentials-free demo deployment.

Loading demo

Try it yourself

Pick a flow to load it inside the phone.

The work

What players see

Early on, the Dashboard led with team info on the first screen after sign-in. I'd hand my phone to another player to show them PinPoint and the same thing happened every time. They searched for themselves. People wanted to see their own stats before anything else. That evening I flipped the Dashboard. Personal stats lead. Team context follows.

The match-night huddle

Between picks, the team huddles. PinPoint's Match Night Live view shows the opponents' picks the moment they go in, with each picked player's typical score on the chosen machine.

The huddle conversation gets concrete:

"Alright, they picked Cactus Canyon and they're putting up 6.7m and 2.1m — who thinks they can beat that?"

Players raise their hands. The captain and co-captain assign the responses.

Median over mean

The first version of the Recon Report ranked machines by arithmetic mean. I was talking with another team's captain about scoring methods and he mentioned he'd switched his own spreadsheets to median to flatten outlier spikes. He was right. A single off-night was distorting the recommendation. Strong opponents looked weak after one bad game, weak opponents looked strong after one fluke. I rebuilt the engine on median scoring, with a TYPICAL badge surfacing performance that resists outliers and a "Strong–You" lens that flips the comparison to show your own edge against an opponent on each machine. The math re-weights per scope (Last 3 Seasons, League-wide, Current Season) with sparse-data fallbacks.

Claiming an identity

PinPoint has an onboarding problem most consumer apps don't have. The user already has an identity in the league record. A player named "M. Greene" already exists in MNP's database with a decade of game history, and only one person can be them. The claim flow handles three cases distinctly. An unclaimed match (confirm and proceed). A contested claim (a dispute workflow with status badges on both sides while I review as platform admin). And no current-season match (a Historical Player Search lets returning players reach back into past-season rosters). Onboarding state persists across browser refreshes but auto-expires after seven days so a half-finished claim from three months ago doesn't block a real one.

Captain tools as their own surface

The Captain tier isn't "more data." It's tooling for the role of running a team. The headline tool is the Sub Finder. When a captain has an absent player on match night, PinPoint surfaces affordable substitutes ranked by POPS at the night's venue, validated against MNP's actual rules (IPR budget ceilings, IPR-6 restrictions, current-season roster filtering, last-played-date eligibility). It's a constrained optimization UI shaped to the league's rules, not a generic player-search view. Hypothetical Recon (test a lineup before committing), pick-frequency analysis, and full team game history round out the tier.

The subscription model

PinPoint's pricing went through a real pivot. The original plan was token-based. Buy a bundle of tokens, spend them per recon report or per player lookup. I socialized it with players. They said please don't do that. I scrapped tokens and moved to tiered subscriptions.

The tiers are cumulative. Each unlocks everything below it.

TierWho it's forWhat it unlocks
FreeAnyone curious about the leagueExploration baseline matching MNP.com
PersonalPlayers tracking their own careerPersonal dashboard, game history, upcoming-match recon, personalized picks, doubles partner recs, performance visualizations
CaptainCaptains running a teamTeam game history, team recon, pick-frequency analysis, Hypothetical Recon, Sub Finder
All AccessPower users and analystsLeague-wide game history, cross-team recon, league-wide pattern analysis

Two billing cadences (monthly and annual) and two upgrade paths (in-product UpgradePrompt or the direct subscription page) cover the full purchase intent.

Three subscription sources sit beyond standard Stripe checkout.

  • Gifted subscriptions. Designed in from the start. Admin-granted complimentary access for early supporters and seed users.
  • Founder team access. Free Captain access for my own team, scoped through a founder-team relationship rather than a paid record. Clean separation between owner and customer.
  • Team Bundle. $349 a year for two Captain seats and eight Personal seats, with an optional $99 All Access add-on. Designed so a captain can pre-pay an entire team's analytics for the season and assign seats from a single dashboard.

The Team Bundle was always in the backlog. Joshua Francis (arguably the best player in the league) accelerated it. He saw an early version at a tournament, offered me cash on the spot, and within his first week as a public user requested an All-Access Team Bundle for his team. I shipped it.

Not every player loved the prices. One prominent player said he'd only pay $2 or $3 a month. He wasn't dismissive about the value. As he put it, it's just pinball after all.

Accessibility, deliberately

PinPoint runs in dark mode by default, and not for the aesthetic. Captains use the app at the venue, in dim arcade lighting, on phones, between balls. Dark mode is the workflow.

Every data-visualization component (the Pick Frequency Chip, performance heatmaps, score-progression charts) is pre-computed to maintain WCAG AAA contrast ratios (7:1+) across the full saturation range. Color encodes the strong / weak / neutral signal. Each component's contract publishes its color ramp, luminance values, and compliance status. Accessibility wasn't a post-launch audit. It's the component contract.

AI-accelerated build

Material UI → Figma + Figma Make → React → Claude Code → Next.js → Vercel

Design tokens, one source. The visual language started in Material's Theme Builder. I configured the palette, exported the JSON, and used it in both Figma and Claude Code. A color decision in Figma is a color decision in production. No translation step.

Most of the build happened in code. Early on I'd sketch a layout in Figma, push it through Figma Make, then hand the output to Claude Code. After a few rounds of that I stopped using Figma Make entirely. Now I prompt layouts directly into Claude Code and only return to Figma for complex compositions I want to design with my hands.

A lot of that prompting happened in arcades. I was playing pinball tournaments most weeks, and the five to fifteen minutes of downtime between required plays became build time. Players gave me feedback on features I was building that hour. Some of them became early users.

Backlog Buddy ran the project. It's the Claude Code workflow I designed for the build. Trello holds the cards. BB handles priority taxonomy, list flow, grooming patterns, user-feedback intake, and session-start sync. The portfolio site you're reading right now runs on a port of the same workflow.

Instead of pushing pixels that do nothing, I direct a system that responds.

More on Backlog Buddy and the whole workflow.

How I AI →

What players said

The product hit early access during alpha. Feedback came in unprompted, in DMs, in person, at venues.

  • I'll pay for this right now. How much?
  • You're a genius!
  • This is so cool.
  • Aside from having great data, it looks stunning!
  • This is the sexiest thing I've seen in a while.
  • I ❤ PinPoint.
  • I love stats. Nice work. 💯
  • What's your Venmo?
  • My mind is positively blown.

Not everyone. Some players said they'd rather trust their gut. Others had their own system. Overwhelmingly, those who use it love it.

Releasing to the league

The product was Discord-locked to my team through the fall of 2025. We used it during practice and in the huddle every match night. After a season of that I knew what worked. Most of the team loved it. The rest preferred their own systems. I asked the MNP commissioner and chief technologist in person for permission to use league data in a paid product. They said yes, granted access to the open-source MNP data archive, and signed up for lifetime All Access accounts. We chat about PinPoint when we see each other at tournaments.

The flip to public happened in steps.

Facebook teaser from October 11, 2025. "Seattle MNP players, this one's for you" with phone mockup and JOIN THE WAITLIST AT PINPOINT.LOL.
Oct 11, 2025

Waitlist teaser to ~350 Seattle pinball followers on my personal Facebook. PinPoint's product page had no audience yet.

Facebook sneak-peek post from October 21, 2025, marking the 50th waitlist reservation. Three product screens (NEXT MATCH AT-A-GLANCE, PLAYER DETAILS, MACHINE PERFORMANCE).
Oct 21

Sneak peek of three product screens once the waitlist hit 50 reservations.

Facebook launch-date announcement from November 26, 2025. Bold yellow type, "LAUNCHING 01-19-26 TWO WEEKS BEFORE SPRING 2026 SEASON" over the PinPoint MNP Analytics logo.
Nov 26

Launch date announcement. Launching 01-19-26, two weeks before Spring 2026 season.

Facebook launch-day post from January 19, 2026. "NOW LIVE! CLAIM YOUR PLAYER AT PINPOINT.LOL" alongside a phone screenshot.
Jan 19, 2026

Public launch on Facebook. PinPoint v1.5.0 had shipped to production two days earlier; everyone on the waitlist got an early-access message by hand.

The first three post-trial conversions landed on January 24, seven days after launch. Conversions came in one to four every day or two through January and February.

Outcomes

120 DAUCaptains opening PinPoint daily
$144 MRRReal recurring revenue from real captains, growing
First 7 days post-launch3 trial conversions on January 24, 1 to 4 every day or two after
MNP commissioner + chief technologistLifetime All Access accounts

The numbers are small by SaaS standards. Pinball's a tiny TAM. By the metric that matters (whether the product has changed how captains approach matches), yes.

What's next

PinPoint MNP is the league surface. Play Pit LLC, the company behind it, operates as a small studio with a three-person board, a structured incubation playbook, and a portfolio of products in progress.

The next product is PinPoint Scout, a tournament-analytics surface for IFPA, MatchPlay, and Pindigo players. Different audience, different routes, same foundations. Both products share auth, billing, brand, the OPDB machine registry, the PinballMap venue registry, and a shared score/performance data layer that gets richer with each new product. A Jaws is a Jaws everywhere.

Play Pit's board approved the expansion build on March 22, 2026 with a scorecard of 7.3 out of 10 (the highest in our portfolio). The OPDB integration shipped on April 16, mapping all 325 MNP machines to cross-platform canonical IDs. The PinballMap venue identity foundation shipped the same day. Scout's tournament surface goes live at the Northwest Pinball & Arcade Show on June 3, 2026, where Play Pit has a booth.

PinPoint is becoming the destination to track a complete competitive pinball career, not just MNP.