Skip to main content
Akhil Dakinedi
HomeWorkPlayBlog
Akhil Dakinedi
LinkedInMediumBlueskyInstagramDribbble

© 2025 Akhil Dakinedi. All rights reserved.

Redefining support messaging at Lyft

Design-led vision for Lyft's AI-powered chat experience

2021

Cover image showcasing the redefined Lyft support messaging experience

I pitched and led this vision to redefine support messaging at Lyft from first principles across the rider, driver, and support agent experiences. I was the sole designer leading team brainstorms and creating the vision, after which I successfully pitched it Lyft’s Support & Safety leads. The work eventually culminated in Lyft's AI partnership with Anthropic where Claude became the integral backbone of Lyft’s support chat experience to enable the automations and smart objects showcased in the work.

Background

If something went wrong with a Lyft ride, you were already frustrated with how the platform had failed your expectations. The best thing Lyft could do in that moment was to quickly address the situation and get you back on track. Lyft had pivoted to chat as the primary support channel in an effort to streamline costs. But contacting Lyft through support chat was a nightmarish flow that required navigating through a dozen screens to even get to a point where you could begin a conversation with another human being.

Flow of how many screens it took to get to the Lyft support chat
To contact Lyft Support as a driver, you had to go through dozens of screens just to get to the chat with an agent, where you were often left hanging with no response

Even if you got a support agent on the line, they were extremely slow and unresponsive. If you’re a Lyft driver, you were actively losing income waiting around for an agent to get back to you. Many would give up and just go back to driving, only to come back to the chat hours later and see multiple messages from the support agent asking for information you had already provided. The chat would then either end due to inactivity or you would get transferred to another agent who would then repeat this loop again. Well over a third of chat support interactions ended like this.

Journey map of the actions a driver took to contact Lyft support and how they were feeling at each stage
An emotional journey map of how a driver felt when going through the process of contacting Lyft support

From end-to-end, it was an extremely frustrating experience to have something go wrong, reach out to support, and wait for a resolution. Much of this didn’t show up in our data because most users wouldn’t even bother to contact support when they had an issue because of how painful it was. They suffered silently without ever reporting it. Over time, this eroded trust in the Lyft platform. I felt that design can be a true differentiator in the experience here.

Conversational design strategy

I wanted to translate the entire support chat flow from one that felt transactional and robotic to one that felt assistive and personalized. I believed that the best way to achieve this was to leverage the existing mental model of a back-and-forth chat conversation that users were already familiar with a strong foundation of conversational design principles built on top of it.

“How can we make the act of getting help feel more conversational?”
Graph of assistive and personalized support framework with examples in each quadrant
A personalized and assistive chat-based support experience is one that is aware of user context, adapts to their needs, and takes action to serve their needs

A very common use case was a Lyft driver checking the status of their fee for a cancelled ride (where a passenger didn’t show up). A truly personalized and assistive interaction would fully understand the context of the query, provide a helpful summary as a response, and suggest the next best action for the user to take.

While search-based experiences are great at capturing precise inputs, they fail when it comes to identifying nuances. If the issue you were experiencing didn’t map 1:1 with how Lyft’s support articles were setup, you were out of luck. Automated conversations with large language models were far better at shortcutting the friction with direct responses and could help us build towards an agentic world where it could autonomously complete tasks for the user.

Example timeline of how Lyft would eventually get to contextually assistive support
The strategy was to offer self-service via conversational intake as a starting point, culminating in a vision where the trust between the user and agent was strong enough for it to take actions on behalf of the user

Getting here wouldn’t be easy. It required evolving from a database of static Help articles to a fully context-aware system that could process user intent and surface summarized results using natural language processing with relevant actions in a chat interface.

The chat framework

I began focusing on what the end result for users should feel like. I came up with three foundational pillars that I felt were absolutely needed to nail this experience for users that were rooted in the principles of conversational design.

Core pillars of the foundational design framework
The agent should be able to identify a wide range of issues reported by riders and drivers while picking up on nuance and proactively suggest actions

The three core pillars of the design were for the chat to feel:

  1. Human: The agent needed to continually monitor the severity and urgency of the issue throughout the conversation and adapt accordingly
  2. Nuanced: We needed to be able to detect user intent based on their description and understand what they were trying to say
  3. Proactive: The best support experience is never needing to contact support. An agent that could proactively identify tasks for the user to complete would result in fewer support contacts over time
Example of how a single threaded conversation would chain together across automated conversations and human support agents
The automated conversation would capture basic info that would preserve across the entire chat. Handoffs would be nearly invisible as the segments of the chat chain together in one unified surface

A core focus for me was to make sure that the conversation felt like one dynamic surface that evolved as the issue evolved in complexity. If you started by asking simple questions about a scheduled ride, the same chat would evolve and escalate into human agents as the nuance in the query evolved beyond the automated chat’s response boundaries.

The design vision

I led a co-creation brainstorm with the entire XFN team to pinpoint focus areas for us to center the conversational design strategy around. I created multiple journey maps of the experience like the one for not receiving a no-show fee and asked the team to go broad with ideas to simplify the experience.

Example output of a team brainstorm grouped by key themes
Outcome grouping of key themes that emerged from the co-creation brainstorm I led with the broader XFN team

The team came up with several ideas that coalesced into key themes. I used these to ground the vision into viable concepts and sell how conversational design can lead the way to the future of Lyft support.

1. Build a stronger shared contextual understanding

Support agents repeatedly asking riders and drivers to confirm the details of the ride they were contacting support about pointed to a major inefficiency in the system. My concept was to embed smart objects in the chat that let users select the relevant option like a ride or payment method through a visually rich and distinctive interaction.

Smart objects embedded in the chat simplified the intake flow and eliminated ambiguity between the rider and support agent

Beyond just streamlining the intake flow, this made the interaction error-proof. A rider or driver didn’t need to recall details of the ride or remember their credit card number. They could just directly select it from the carousel and confirm details in the chat, reducing miscommunications and misunderstandings between end users and support agents.

2. An adaptive resolution surface that can escalate as needed

If the rider or driver selected a safety issue as a reason for contacting support at any point in the chat, the surface would dynamically evolve to offer a direct phone call option to Lyft’s critical response line. Community safety was a core Lyft value, and phone calls with trained safety agents were way better at capturing the nuance of sensitive safety incidents than chat ever could.

A context-aware conversation that evolved to offer phone support for critical safety issues based on the severity of the issue being reported

When reporting safety incidents about specific individuals, it could often be difficult to recall exactly who that person was. Embedding profile photos into the chat options and reminding the user about who they were helped with recall greatly, especially for drivers who often gave 20-25 rides per day and needed to report something about one of them at the end of a long day.

3. Reduce user effort when describing issues

The suggested responses were an option, but users weren’t limited to them. At any point, they could type into the chat input with a freeform response or description of any issue. The chat would detect user intent and immediately begin the relevant resolution workflow, offering options to continue with the automated conversation or speak with a human agent.

Users could always type a freeform response in the chat input if the suggested responses didn't match their intent, building on the conversational context and reducing friction

The goal here was to let users report issues by typing it in how they felt they should describe it. The previous method required a very high cognitive load to figure out where your specific problem lived in Lyft’s often long and convoluted lists of support issues spread across dozens of screens. This chat input was a shortcut to all of that complexity where users could type in anything and have the conversation understand exactly what they were trying to say.

4. Automate simple resolutions for common questions

A lot of the support conversations I had looked into didn’t really need a human agent. It was usually just a rider or driver reaching out to clarify something about a feature they were confused about, or check the status of some pending payment. These kinds of problems were perfect for an automated conversation that could scrape our existing Help articles and articulate a response.

Users self-resolving common questions by directly interfacing with the automated conversation, eliminating the need to wait around for a human agent when it comes to simple queries

Self-service resolutions had the potential to greatly improve user comprehension, greatly increase support chat efficiency for Lyft, and allow human support agents to focus their time more on resolving actual support and safety issues. I saw this as a core use case that the automated chat platform could tackle and solve really well across a wide range of scenarios.

5. Proactively help users before they even reach out to us

The best kind of delight is one where the system finds a problem and solves it for you before you even knew it existed. When a rider or driver contacts support, it’s often when something has already gone wrong. I felt that there was massive untapped potential in proactively flagging the issue to let users self-resolve it before it ever became a problem.

Tapping into the details of a regular notification also triggers the start of a chat, allowing users to freely interact with the conversation about that topic or build on it for other questions

Our in-app notifications hub was severely underutilized, and I wanted every notification to be a trigger point for a new chat conversation. The chat would give the user a few more details about the notification and ask users to take action to avoid adverse outcomes down the line. The user could drive the conversation from that point on, allowing it to organically evolve into whichever direction they wished to prompt further on, all in the same chat surface.

The future of Lyft Support

The Support & Safety team at Lyft was accountable for quickly and efficiently resolving issues for users at a high level of quality, all while operating at an immense scale. I truly believed that messaging was the surface to invest in as it did everything: automations, escalations, smart objects, resolutions, deeplinks, freeform inputs, suggested responses, and so much more.

One-tap access to chat directly from the homescreen allowed users to ask anything about the platform, while any issues with moderate to severe complexity got seamlessly handed off to a human agent

By allowing users to access this chat surface directly from the homescreen, the conversation became an evergreen assistant that always had context on your issues and needs. It would directly empower Lyft riders and drivers to leverage the infinite knowledge in the chat surface and only ask for human agents when they felt like the chat couldn’t solve their issue.

I created this vision in 2021, well before LLMs became available for companies to deploy at scale. The core team at Lyft was spiritually aligned with this long-term direction to pursue and had began building a first version of it. Some time shortly afterwards, Lyft partnered with Anthropic to integrate Claude directly into support chats, paving the way for achieving everything outlined in the vision.

Screenshots of Lyft's AI integration with Claude to build out the vision
The first version of Lyft's Claude integration with smart objects as the full vision gets built out

The first version of Lyft’s Claude integration featured smart objects, suggested responses, and dynamic status indicators. As LLMs continue to get better, Lyft’s support chat will continue to become more assistive and more personalized to fully undertake agentic actions on behalf of riders and drivers, ensuring that drivers stay focused on earnings, riders get from point A to point B, and support agents spend their energy on complex issues that they’re best suited to handle.