
- Consumer & Web
- 120 daily active users
PinPoint League Analytics
Solo Velocity

Solo Velocity
What if one designer built the tool every captain in the league was secretly building by hand?
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.
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.
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 →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.
Solo build, force-multiplied by AI
Matthew Greene
Solo Designer & Builder Founder, Play Pit LLC
The stack
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.
Below is PinPoint running on a credentials-free demo deployment.
Loading demo
Pick a flow to load it inside the phone.
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.
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.
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.
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.
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.
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.
| Tier | Who it's for | What it unlocks |
|---|---|---|
| Free | Anyone curious about the league | Exploration baseline matching MNP.com |
| Personal | Players tracking their own career | Personal dashboard, game history, upcoming-match recon, personalized picks, doubles partner recs, performance visualizations |
| Captain | Captains running a team | Team game history, team recon, pick-frequency analysis, Hypothetical Recon, Sub Finder |
| All Access | Power users and analysts | League-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.
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.
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.
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 →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.
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.
Waitlist teaser to ~350 Seattle pinball followers on my personal Facebook. PinPoint's product page had no audience yet.
Sneak peek of three product screens once the waitlist hit 50 reservations.
Launch date announcement. Launching 01-19-26, two weeks before Spring 2026 season.
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.
| 120 DAU | Captains opening PinPoint daily |
| $144 MRR | Real recurring revenue from real captains, growing |
| First 7 days post-launch | 3 trial conversions on January 24, 1 to 4 every day or two after |
| MNP commissioner + chief technologist | Lifetime 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.
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.