International Expansion
After Lyft acquired FREENOW, the goal was one app: a Lyft rider lands in Europe and gets a ride without downloading anything new. I build the roaming backend that makes that ride work end to end, from the offers a rider sees through payment and tracking.
By the numbers
- 12+
- European cities live in the Lyft app beta as of Q2 2026
- 180+
- Cities across 9 countries on the network Lyft acquired
- 2027
- Target for one unified global Lyft app
The problem
Roaming means one company's rider on another company's network. Nothing lines up for free. Pricing, payment authorization, ride states, notifications, and receipts all have to be translated between two platforms built independently, across currencies and regulatory regimes, and the rider should never see the seam. A ride abroad has to feel like a ride at home or the unified app isn't worth shipping.
Approach
The work runs through the whole stack rather than one service: the schema definitions that form the cross-platform contract, the roaming service that owns the translation, the trips layer, the notification path, the GraphQL the app reads, and the dashboards we watch it with. I take features across all of those layers rather than handing off at a service boundary, which is what a rider-visible flow needs to actually land.
My contribution
I've built roaming features end to end since the program started, taking each one from the cross-platform schema through to the dashboard we monitor it with.
Ride offers and ride creation
Built the calls that fetch available offers in a European city and create the ride on the partner network. These are the two requests every roaming trip starts with, and the foundation the rest of the features sit on.
Payment authorization
Owned the epic integrating the billing platform's authorization and fraud checks into ride creation, so a ride on a partner network is held to the same payment guarantees as a domestic one.
Scheduled rides in Europe
Owned the epic bringing scheduled rides to EU roaming, including request routing at the edge and the mobile empty states for cities where scheduling isn't offered. Shipped to production.
Post-request features
Past rides, ride status notifications, tipping, and receipt handling are built but not released yet. More on this once they ship.
What we built
Request a ride in a European city from the Lyft app you already have
Payment authorized and fraud-checked before the partner ride is created
Scheduled rides, with clear empty states where a city doesn't support them
Post-request features built but not yet released
Next
AI-Assisted Engineering
Changing how a backend org works with coding agents: shared context standards, an evaluation to prove they help, and tooling other teams picked up.
Learn more โ