Everyone needs a rating before they can get one
I joined a pickleball league where almost no one had a rating, and you could still see the skill gaps from across the court. That distance — between what's obvious in person and what the system actually knows — is the thing I keep turning over.
By Andrew Pyle
I joined a pickleball league recently, and the first thing I noticed wasn't the pickleball. It was that almost nobody had a rating — not a real one, not a DUPR number, the thing that's supposed to say how good you are. And yet you could stand at the side of the court for ten minutes and see the skill spread plainly: the people who'd clearly played for years, the ones who picked it up last month, and everyone in between. The gap between what was obvious in person and what the system actually knew about us was wide, and it stuck with me.
DUPR is the rating that won. As of this year it's the one USA Pickleball and the pro tours have all settled on — a single number, roughly two to eight, that travels with you. That consolidation is a good thing; a sport should have one language for skill, and I have no interest in competing with it.
01The missing rung
The missing first rung
The trouble is what happens at the very bottom. To get a DUPR that means anything, you need a stack of logged matches against a variety of already-rated players — a dozen or two before the number is considered reliable. But a new player in a local rec league has none of that. They're playing the same handful of people, nothing's getting logged, and so the system just... doesn't have them. To get rated you need organized, recorded play; to get into organized play fairly, you more or less need a rating. It's a small chicken-and-egg, and a lot of people are stuck inside it. The ladder is real and it works — it just has no easy first rung.
The people running the league are stuck on that same rung from the other side. They've got to build teams that are fair and brackets that aren't lopsided, and they're doing it with almost no data — eyeballing skill, trusting self-ratings, running an impromptu skills day to guess where everyone belongs. It's the same missing piece the players feel, just from the organizer's chair. Nobody's being unreasonable; the tool for that first read simply doesn't really exist.
02A layer underneath
A layer underneath, not a rival ladder
That missing first rung is what I've been poking at with VolleyForge. Not a rival rating — a layer underneath the one we already have. The idea is simple, even if the building isn't: give a new player a low-friction way to get an honest first read on where they stand, and give a small league a way to produce that read out of the games they're already playing. And because DUPR is the standard, the point isn't to wall that data off — it's to let clean, grassroots results flow up into the rating everyone already uses. A bottom rung that feeds the ladder, not another ladder.
03The read falls out
The read falls out of the play
The mechanism I keep coming back to is boring on purpose: the read on skill shouldn't be a thing you go and collect, it should be a byproduct of running the league at all. So the data model underneath VolleyForge is just the shape of a season — a league has seasons, a season has teams and players, and every night of play is a set of matches, each split into the individual games that decided it. The standings are never a number anyone types in. They're derived: computed from the matches actually played, at the moment you ask for them, and stored nowhere. If two teams played, the record exists; if they didn't, there is nothing to invent.
League → Season → Team, Player, Match → MatchGame
# standings are computed from Matches at read time — never storedThe scheduling works from the same instinct. A new league doesn't wait for me to hand-draw a bracket; it generates a round-robin by the circle method, rotating the field so everyone plays everyone and an odd roster draws a bye. The seeded demo is exactly that — eight teams, sixteen players, twenty-eight matches — a full round-robin that exists only because the generator drew it. Run enough honest nights like that and a picture of relative skill ends up sitting there in the results, waiting to be read, without anyone having stopped to grade a single person.
04The plumbing
The unglamorous plumbing
I'll be honest that the interesting part, to me, isn't a cleverer algorithm. It's the plumbing — running grassroots leagues well enough that a trustworthy read on skill just falls out of the play as a byproduct. That's the part nobody's really taken, probably because it's unglamorous. It's the same thing I keep finding myself drawn to elsewhere: the quiet, structural work underneath the thing everyone actually looks at.
It's early — more an attempt than a finished thing, and I want to be clear about that. I don't know yet whether it becomes a real product or stays a sharp idea I chased for a while. What I do know is that the gap is real, because I stood in it: a court full of people with obvious, varied skill, and a system that couldn't see almost any of it.
05Refused to fake
The thing I refused to fake
There's a reason I'm allergic to a rating that rides on a platform that lies, and it's that the first version of this one lied constantly. It came off a no-code builder, and under the nice screens almost nothing was real: testimonials from people who never existed, a cheerful 'League Created!' banner that created no league, an admin panel you could unlock by editing a value in your own browser. Every button fired a success message and persisted nothing. The whole thing was a demo wearing the costume of a product.
So the rebuild had one rule I wouldn't bend: a success message has to be earned. Every write now runs through a single path that only celebrates once the server actually confirms it — it waits for a real ok, refetches, and shows you the new state; on anything else it surfaces the real error. And I don't trust a screenshot of an API call to prove the screen works — the only proof I count is driving the real button in a real browser and watching the record change after a hard refresh. A rating is worthless if the plumbing beneath it will cheerfully tell you a comfortable story, so I built the plumbing to refuse.
A number that says how good you are is only worth having if the system under it can't be talked into lying. Honesty isn't a layer you add on top of the product — it's the foundation, or the number is just decoration.
06A small problem
A small, honest problem
Mostly I think the appeal is that it's a small, honest problem. Nobody's underserved in a tragic way; it's just a bit of friction everyone in that gym had quietly worked around. But those are often the ones worth solving — the problems obvious to anyone standing in the room that nobody has gotten around to fixing.
I keep thinking about the spread of skill I could see that first night, and how strange it is that the easiest thing in the world to notice is the hardest thing for the system to know. The score of any single game was never really the point; the point was the shape of the players around it — the thing the room read in a glance and the record couldn't hold. If this ever amounts to more than an idea I chased for a season, it'll be because it closed that one small distance: between what a court full of people plainly is, and what the ledger is willing to admit.
Related
writing
From carrying a sample bag to shipping a platform
I spent years as a medical-device rep before I wrote a line of code that mattered. The path from there to here wasn't a bootcamp — it was a decade of solving the wrong problem until I found the right tool.
writing
Everyone's barbecue is the right barbecue
I grew up in Kansas City, certain ours was the best. Building a guide to everyone else's barbecue taught me the “best” argument was never really about the meat — and changed how I think about ranking anything.
writing
How a town keeps its own records
The most deeply lived sport in America is also its least documented. I grew up playing it in a Kansas town of a few thousand — and I'm building the record it never got.
writing
AI didn't make me faster. It made me freer.
Everyone frames AI as a race you're losing. I've come to think that's the wrong doorway — and that the useful question isn't how to keep up, but what it frees you to do.
writing
BBQ is a geography problem
Why the best barbecue in America is never where you expect it — and what that says about how regional food culture actually works.