← Back to work
Moober · Tiered Search

Finding rides that were already there

Nearly half of Moober’s rides drove empty while riders who wanted those seats searched, saw nothing, and left. I redesigned how the platform matches riders to drivers.

RoleProduct Designer
TimelineSpring 2026
Team2 PMs, 1 PD (me), 1 GD
1 PMM, 4 SWEs
Visit Moober ↗
moober-hero
Moober tiered search

A rideshare app that couldn’t connect its own users

Moober is UC Davis’s student-only rideshare. Students carpool home for breaks or split the drive to the airport.

I owned one problem: the search matching riders to drivers. It was quietly failing both sides of a live product I couldn’t rebuild from scratch.

On the platform2,000+ students
WhereUC Davis only
StatusLive & in use
The solution

Match on the whole route, not just the city.

BeforeSearch Fresno. Nothing.
moober-search-before
Before: searching Fresno returns nothing
AfterSame search. Seven rides, tiered.
moober-search-results
After: the same search returns seven tiered rides

Search reads the driver’s actual route and sorts every result into three honest tiers, from perfect match to near miss.

Tier 01
Direct match

The driver’s destination is the rider’s destination. These sort to the top.

Tier 02
On your route

The rider’s city sits minutes off the driver’s highway path, never more than the driver allows. A prompt nudges riders to message their exact drop-off.

Tier 03
Nearby

The ride ends within the rider’s search radius. The badge shows the mileage gap, so the last mile is a decision, not a surprise.

+2 MI

Every search ends somewhere now.

The problem

The rides existed. The riders existed. The search kept them apart.

Search matched on exact city name. Nothing else. A student living between Davis and a driver’s destination was invisible, even when that driver was about to drive right past them. Search your city, get nothing, close the app.

What the data said
44%
of rides ran with zero passengers.
PostHog · April 2026
What riders told me
A rider in Fresno, right on the Davis–LA route, saw nothing. He drove to LA to catch a ride that passed straight through his city.
A first-year assumed no one was heading their way after a single empty search.
One dead end was usually enough. With nothing to request or save, riders left for Facebook or Amtrak for good.

44% wasn’t a supply problem. It was a search problem.

What makes it work

Two sides had to change: what riders see, and what drivers allow.

The rider’s side
moober-search-results
The tiered search results screen, annotated 1 2 3 4
01Radius slider

Riders widen the net themselves, up to 30 miles.

02Never zero

The same Fresno search now surfaces seven rides.

03Tier badges

Every result says what kind of match it is. No pretending.

04The whole route

Cards draw the driver’s full path, with the rider’s stop on it.

The driver’s side
moober-search-toggle
Driver flexibility toggle in action
Drivers set how far off their route they will go.
The callDriver sets the limit

5, 15, or 30 minutes off route. They carry the cost, so they hold the dial.

Ruled outRider-requested detours

Wrong person doing the asking, and booking turns into a negotiation.

The constraintPaid calls where they earn it

On-route matching needs a routing API call per search, which costs money. Nearby only needs distance between two points, which is free.

Measuring success

How we’ll know it’s working

The feature is in build, so this is the bar I set for it.

North-star metric
Rides completed per active user, each quarter.
Signal
Search-to-result
How often a search returns something usable.
Signal
Toggle adoption
Whether drivers opt into detours.
Signal
Search-to-booking
Whether the new matches actually convert.

The bar is simple: rides that actually happen.

What I took away

01

Designing inside what already exists

A live product, a real codebase, real constraints. The interesting work was fitting a smarter system into an interface students already knew.

02

Honesty is a feature

The tiers could have hidden their weaker matches. Labeling them plainly, mileage gap included, trades a little polish for trust. That matters when someone is planning a real trip.

03

Next: ship it

The designs are done and handed to engineering. Next is launch, then watching whether the empty-seat number moves.

The team behind it

A startup is mostly its people. Ours: the team, a trip to SF, and a thoroughly unserious promo reel.

The Moober team
The Moober team
A team trip to San Francisco
A team trip to San Francisco
Our (very serious) promo reel

Thanks for reading.