Skip to main content
Akhil Dakinedi
HomeWorkPlayBlog
Akhil Dakinedi
LinkedInMediumBlueskyInstagramDribbble

© 2025 Akhil Dakinedi. All rights reserved.

Improving Lyft's driver deactivations

Providing clarity & transparency about account blocks

2021
Cover image for the blog post showcasing the final designs for deactivated drivers

I was the lead designer on this project working with a cross-functional team over a course of fifteen weeks to fully overhaul the Lyft driver deactivation experience with a transparent, empathetic, and actionable design that scaled to all critical notifications. This resulted in big metric wins for Lyft’s business as well as positive feedback from drivers about the clarity and level of detail shown in the updated screens.

Background

If you were a Lyft driver that had just dropped off a rider, you could suddenly and unexpectedly be kicked off your shift, resulting in lost income for drivers and fewer drivers on the road for Lyft. The in-app message you received was a pop-up alert on the homescreen that was vague, unclear, and didn’t have much information about what happened or why.

A Lyft driver's typical experience getting deactivated where they drop off a rider and suddenly get taken offline with a generic message

After dismissing the message (which drivers often did by mistake), there was no way to see it again. Once gone, it was gone forever. The affected drivers received a boilerplate email from Lyft Safety, which was frequently missed because most drivers weren’t actively monitoring their email for communications from Lyft. This design completely failed at communicating the urgency of the issue and resulted in drivers filing multiple support tickets with Lyft over phone, email, and chat to figure out what happened to their account.

Examples showing pop-up alerts in the Lyft Driver app of multiple critical alerts that trigger for different reasons
Examples of many different pop-up alerts in the Lyft Driver app that stacked on top of each other with no governance or guidelines on how multiple critical alerts interact. This was a platform-level problem that I decided to tackle as part of this work.

This kind of pattern was all over the app. Every critical message that Lyft needed to send to drivers showed up as a blocking alert on the homescreen without any framework for why and how it showed up. These were account-level blocks that prevented you from earning on the platform but looked like a generic dialog and totally disappeared when dismissed. Drivers got into the flow of dismissing these dialogs out of habit and completely missed crucial information that Lyft was trying to communicate about their account. There was a clear design problem to solve here.

Flowchart of Lyft's existing deactivation process that was unfriendly to drivers
Lyft's existing deactivation process was not friendly to drivers: safety agents were told to temporarily suspend drivers while they verify rider reports

Lyft’s Trust & Safety policy required that safety agents temporarily suspend drivers on account of rider reports, a policy that favored the rider’s word unless contested by the driver. Understandably, drivers did not like this as they never had a chance to explain their side of the story until Lyft reached out to them about it. Tackling this problem required diving deeper beyond the surface-level UI. It necessitated that the process and system design to evolve in a way that was fairer to drivers.

The deactivation process

There were many different reasons for why a driver could be kicked off the platform, some temporary and some permanent. It was overwhelming to tackle them all at once, so I decided to start with the most common and most painful flow.

Map of Lyft's deactivation types with Drunk driving highlighted as the focus area
Different types of deactivations at Lyft, all triggered through individual mechanisms. I decided to start with the Drunk driving as the focus area since it was the most egregious example of our system failing to do right by drivers

When we looked at the data, non-compliance deactivations were the highest volume deactivation reasons. But digging deeper, I found that the Trust & Safety deactivations had a higher reactivation:deactivation ratio, indicating that many of these were false reports or wrongful deactivations. Drunk driving reports in particular were the most extreme, with 95% of drivers getting reactivated after having been temporarily suspended. I wanted to figure out why this was so high.

The rider flow for reporting a drunk driver. It was a one-tap process that was almost too easy with no additional details required to report an allegation as severe as drunk driving

It was easy for a rider to report a driver for drunk driving. Too easy. It was by-design a low-friction flow to make it easy for a rider to report a severe incident in a Lyft ride. But the extreme ease with which you could submit a drunk driving report about your driver made it ripe for potential abuse and misuse by bad faith riders. A Lyft agent did try to follow-up with the rider about their report, but the riders would often be unresponsive, leaving the case hanging for days or weeks while the driver was suspended without the ability to earn an income on Lyft.

To make matters worse, the way in which Lyft agents attempted an outreach to drivers was broken and filled with process friction that made it impossible for a driver to get a clear idea of what was happening. This showed me how much waste and inefficiency there really was in our process.

Flowchart showing how Lyft agents reached out to drivers across multiple channels, leading to extreme inefficiency in the system
Lyft's process for reaching out to drivers was messy and confusing, resulting in missed interactions and a paper trail of information across multiple channels that agents had to collate together. I proposed an updated flow that unified all deactivation outreach to the chat channel

Lyft agents would attempt a driver outreach based on the channel they were trained on (which was often inconsistent). Drivers would completely miss some of this on the phone or never bother to check their email. They would then attempt to contact Lyft again again later resulting in even more missed connections due to how the support system was setup.

I believed that unifying this into a single chat channel was the way to go here. I had worked on a feature to persist chats in the app where drivers could have a continuous thread to keep the conversation going, so I felt that this was the most efficient path forward to reduce work for Lyft agents while ensuring drivers had a single surface to make their case.

Design explorations

Before diving into the UI, I wanted to figure out what drivers actually wanted to know about the process. We couldn’t change much of how Lyft’s Trust & Safety policy worked, but we could be transparent about what was happening and provide clear next steps. I worked closely with our researcher Carolyn Buehler and our content designer Meghan Shagam to define a messaging framework.

A messaging framework that informed the design of what drivers needed to know at each stage of the deactivation process
This framework informed the design process of what drivers needed to know at each stage of the deactivation process

This in turn informed the design principles that I set for the work:

  1. Transparent: Provide details about case status to maximize clarity
  2. Empathetic: Acknowledge the situation and provide reassurance
  3. Actionable: Give clear next steps about how to resolve the issue

I intentionally wanted to avoid principles like surface-level delight here, because this is an extremely sensitive policy and it was appropriate to treat it with the seriousness and urgency it deserved while being clear about what was happening. The main thing to figure out from here was where to communicate the status and resolution of deactivations to drivers.

Placement options displaying alternative paths for where deactivation messaging could be displayed in the driver app
Low-fidelity wireframes showing three placement options considered for displaying deactivation messaging following the messaging framework. Of all these, the homescreen of the Lyft Driver app felt like the most appropriate surface

The homescreen was a natural choice because it was right there when you opened the app and blocked actions that you couldn’t take anyway like going online or viewing incentives. The Help or Account screens (accessed from the side menu in the Lyft Driver app) were also considered, but were eliminated because they required a higher level of friction for drivers to navigate to it just to find out the case status.

I questioned the value of seeing the map on the homescreen with the Lyft Driver design team. If you were deactivated, there really was no purpose to it. I ultimately decided that taking over the entire homescreen was the best path forward as it clearly highlighted the urgency of the issue while removing surfaces irrelevant in the moment like the map and incentives to go online. Importantly, we would preserve the important entry points to the side menu, earnings, and notifications with the full-screen takeover.

Low-fidelity wireframes showing how the full-screen takeover framework scaled to multiple issues and long lines of content
Stress testing the full-screen Driver Home takeover framework with multiple issues and content design that resonated with Lyft Drivers

I also needed to make sure this solution would scale to multiple types of issues, so we stress tested this extensively with content variations. I wanted to not have a massive wall of text info-dumping a ton of legalese onto Lyft Drivers, so many of the design explorations here attempted separating distinct content with visual affordances like cards or separators.

The new driver deactivation experience

After concept testing and iterating on the designs over a couple of rounds, we had the designs for how the full-screen takeover would work for the Drunk driving deactivation reason and scale to any Trust & Safety deactivation.

Final designs for Trust & Safety deactivations at Lyft
The final designs showcased a detailed timeline while keeping a neutral gray for temporary suspensions. Stronger warning colors like a red takeover were reserved for permanent deactivations.

Unifying the deactivation outreach to the chat channel, simplifying the comms into the messaging framework, and using a fullscreen takeover strategy on the Lyft Driver app’s homescreen collectively resulted in big metric wins when we shipped:

  1. Reduced time to reactivation by 18%
  2. Reduced time to first response (from drivers) by 10%
  3. Increased Driver Hours
  4. Increased Driver Sentiment
The final deactivation experience for Lyft Drivers, with a pulsing dot to indicate the current step and draw attention to that step while it dynamically updated as the resolution continued

Driver sentiment is an odd metric to measure because no driver is going to say that being deactivated is a “good” experience in the first place, but we did get lots of positive feedback in qualitative research about the updated design:

“It is good that it’s right there when I open the app. I like that it clearly explains the steps as to what is going on. I will have a chance to provide my side of what happened”

Beyond the MVP

After we scaled our solution to all Trust & Safety deactivations, the same framework worked for Non-Compliance deactivations like background checks, ID verifications, and DMV checks.

Examples of how the deactivation messaging scaled to multiple different types of deactivations and for multiple issues
Scaling the deactivations framework to other types of deactivations. Not all of them required a timeline since they relied on third-party vendors to verify information. The solution also scaled well to multiple issue types

I worked very closely with our Comms Platform and Design Systems teams to create reusable templates for this fullscreen takeover that we could leverage across a variety of scenarios. The design is now being used as a foundation for all critical messaging in the Lyft Driver app.

Lastly, I’m proud of the fact that we were also able to make improvements in the rider reporting flow for specific issues like reporting a driver for drunk driving. Now, riders would have to provide a required description before submitting the report, capturing more nuance about the rider’s actual experience and, in most cases, eliminating the need for the safety agent to attempt reaching out to the rider for follow-up details.

The updated flow for a rider reporting a driver for drunk driving, now requiring a description field that intentionally added friction to the reporting process

Introducing friction like this in a flow where our goal was to capture every safety incident that happens on the platform is always controversial, but it needed to be done here to create a fairer platform for both riders & drivers. Shipping this dropped the rate of wrongful drunk driving allegations from riders and lowered the reactivation:deactivation rate for drunk driving reports, which signaled that a higher percentage of the allegations were accurate and not false positives.

I enjoyed working on the people and process aspect of this project. There were so many micro-improvements to the deactivation workflows and efficiency gains from unifying disparate steps which all came together to deliver big wins. I had to work across the rider, driver, support, safety, and operations teams at Lyft to get this over the finish line and am proud of how we were able to ship a meaningful improvement for Lyft drivers.