Onward Rides

PYTHON

SQL

MACHINE LEARNING

RECOMMENDATION SYSTEMS

During my time as a Data Science and ML intern for Onward Rides, I had one goal in mind: to humanize the technology we used to improve user experience. I worked on improving their recommendation system to better match riders and drivers, enabling the model to factor in rider preferences, not just absolute filters.

DATA SCIENCE & ML INTERN

JUNE - SEPT 2026

1 ENGINEER, 1 PM, AND ME:)

ONWARD-DASHBOARD.JPG

001 THE PROBLEM

Recommendation systems need to be humanized.

THE PROBLEM: Rigid, one-size-fits-all filters

Onward Rides is a rideshare company focusing in non-emergency medical transport. However, traditional dispatch matching use hard filters over optimizing for more human factors, like behavior.

RIDER

DRIVER

ABSOLUTE FILTERS

THE ISSUE:

All riders, with and without history, are treated the same.

So what?

Riders felt mismatched with drivers who didn’t meet their preferences (i.e. language, gender, etc).

Rider Experience

Without personalization, high-quality drivers weren’t being matched to the riders who valued their skills most.

Driver Utilization

The one-size-fits-all approach slowed bookings, reduced retention, and limited trust in Onward.

Business Impact

002 SOLUTION OVERVIEW

The two-pathway approach:

THE SOLUTION: A learning system that adapts over time

Although rider Susie may not have previous ride history, maybe rider Tom does, or rider Ana and so on, and so forth. I realized that we could find general patterns in the preferences of each of the 400K rides completed. Using this, I could create a general formula that we could apply to new riders to create a more accurate, tailored recommendation.

THE SOLUTION:

DRIVER

GENERAL

PREFERENCES

RIDER

W/OUT HISTORY

DRIVER

LEARNED

PREFERENCES

RIDER

WITH HISTORY

New riders are matches using broad preferences

As history builds, matches get smarter and more personalized

Riders without history become riders with history after 1 ride, creating a cycle that gets smarter with each ride.

THE IMPACT: Smarter matches. Happier riders. More efficient operations.

003 FEATURE ANALYSIS

Let’s break it down.

The end goal was to determine whether a rider preferred their driver. Riders were treated as satisfied if they tipped, favorited their driver, or gave a 5 star rating- which pointed to three feature groups worth exploring.

Rider Context

Language

Gender Preference

Comfort Needs

Driver Attributes

Rider x ride count interaction

Vehicle year

Vehicle make

Operational Factors

Distance

Availability

Capacity

A combined target riders who favorited, tipped, or gave 5 stars, then compared feature means.

Context

Ignoring Biases

Matching language, matching gender, and a higher number of rides are the most influential parameters.

Findings

I had to be careful when accounting for things like weight, vehicle year, or ethnicity. I had to make sure that the traits we picked to prioritize would not be regressive or exclusive to new drivers.

004 THE RESULTS

The model gives “boosts” to drivers that align with rider preferences.

Sophia orders a Spanish-speaking driver. Before, Driver 5 was buried in the queue despite a near-perfect language and comfort match. After: he moves to the top, and the ride happens.

1.

1.

BEFORE

Driver 1 (F)

1.

English | 4.9

Driver 2 (M)

2.

English | 4.8

Driver 3 (M)

3.

Mandarin | 4.9

Driver 4 (M)

4.

Spanish | 4.8

Driver 5 (F)

5.

Spanish | 4.8

Driver 5 (F)

5.

Spanish | 4.8

Driver 2 (M)

3.

English | 4.8

Driver 1 (F)

2.

English | 4.9

Driver 4 (M)

4.

Spanish | 4.8

Driver 5 (F)

1.

Spanish | 4.8

Driver 3 (M)

5.

Mandarin | 4.9

AFTER

THIS IS SIGNIFICANT BECAUSE

In the current model, Driver 5’s alignment score of 0.68 kept him buried in position five, despite matching Sophia’s language and gender preference. In the new model, that alignment score directly boosts his rank- increasing the odds Sophia gets a ride she’s comfortable in (and would likely rebook).

ACCURACY OF

MODEL

REDUCTION IN BOOKING TIMES

DATA

RECORDS

ANALYZED

005 REFLECTION

Working on this project has given me one of the most meaningful applied learning experiences I've ever had and has given me more perspective in the field. I came into the role with a basic understanding of data science and a very surface-level recognition of machine learning, but I had limited real-world exposure to converting data into something meaningful. Learning how to transform incomplete, biased data and create a working ML recommendation model from it was such a fulfilling experience, and it taught me how technology can be used to humanize. Matching riders and drivers on preferences like language meant walking a line between personalization and bias, and getting that line wrong would have meant a model that quietly discriminated. Working through that taught me that the technical part is rarely the hard part; the judgment calls around it are. I left this project far more interested in that side of the field, and I can't wait to learn more!


Thanks for staying awhile, until next time!

LIKE WHAT YOU SEE?

Let’s connect.