Start ordering with Uber Eats

Order now

Architecting Uber Support with Customer Obsession Engineering

November 20, 2017 / Global

As Uber grows at scale, addressing support issues for riders and drivers quickly and with as little friction possible is foundational to our ability to create more magical experiences for our users. With this goal in mind, Uber’s Customer Obsession Engineering team is dedicated to improving this element of the Uber experience by developing in-app support, self-service flows, and other technologies that make ticket resolution faster and more seamless.

In this article, we discuss our motivations behind building these solutions, share how we built them, and highlight the ways in which they led to increased customer satisfaction on our apps.

Accelerating resolution times

A common grievance of customers navigating any support process is the length of time it takes to resolve an issue. The traditional approach to customer support across many industries involves the customer writing in about an issue via email or through a text field on the web or a mobile device.

However, the free-form nature of requesting support creates additional challenges for organizing support staff around issue types or enabling users to reach the correct agent right away. Often, this can lead to additional back and forth via email before issues can be addressed appropriately. The extra time it takes to collect information and determine how to act on it can make for a less than expedient experience. While effective for smaller companies, Uber’s scale and scope makes this approach ineffective in providing a quick and efficient customer support experience.

As a result, Uber’s Customer Obsession team built for the Web and an in-app support framework for users on mobile. With both tools, the user goes through a tree of issue-types when submitting their issue. While this may add a few seconds to the experience in the short term, it shaves off hours of resolution time by providing all the necessary information to our support agents from the get-go. Additionally, we built a custom content management system that allows Uber’s local teams to customize help forms and FAQ articles by city, country, and region to further expedite ticket resolution.

Figure 1: Uber’s customer support flow on presents users with an intuitive and easy-to-use UX that highlights trip details and suggests issue types to help with routing.


Gathering context was only the first part of our solution. The second step was to make all of this background available in one centralized place. To address this, we developed an in-house platform integrated with Uber’s existing tech stack that provides relevant trip information and additional context needed by the support agent to resolve a given issue. Built with Node.js, React, Redux, and Flux on the front end, the platform is supported by over 30 back-end services, following a service-oriented architecture composed of a custom RPC protocol powered by Thrift and TChannel.

By 2016, this tool was used across the company as a one-stop shop for messaging-based support at Uber. In addition to making support ticket resolution 55 percent faster, the new platform also saved the company tens of millions of dollars in productivity gains. In 2017, this platform is the foundation of all of Uber’s customer support solutions, providing capabilities such as agent management, site management, real-time analytics, and other features that help us make customer support decisions.

Ticket resolution speed, however, matters very little if the overall experience is not easy-to-follow. Next, we discuss the self-service technologies and multi-channel approach we have applied to make the support process more seamless—the second part of our equation for improving customer satisfaction.

Designing a more seamless experience

The first self-service support technology we developed was related to a very specific task: looking up user ratings. Towards the end of 2015, there was a large influx of tickets filed by riders who wanted to know their Uber rating. This was a simple task for agents, but could be handled much more quickly when put in the hands of the rider. To address this, we created a self-service flow that made it possible for riders to look up their own rating in the app. Like other users, celebrities Ashton Kutcher and Jimmy Kimmel were excited about this feature. (This is now available in the hamburger menu of the rider app).

Following the success of our first self-service flow, we launched several others, including a feature that makes it easier for the rider to submit an issue with a cancellation fee. In this scenario, the app asks the rider for a reason why they thought the fee was inaccurate or unfair. When they choose their response, our systems check against a fixed set of rules (e.g., the driver did not reach their pickup location even after a long wait) and determines if the amount should be refunded, leading to a faster response. Not only did these self-service flows increase customer satisfaction, they also drove  down the number of support tickets each agent needs to address so they can spend more time on high priority issues. The success of the self-service support model paved the way for several of our future customer support innovations.

Figure 2: Launching self-service flows for cancellation fees and bad routes decreased our incoming support ticket volume.

A second way we created a more seamless flow was by offering customers more channels to request support beyond the Web and mobile. Once our in-app messaging platform was rolled out globally, we began to focus on other channels, starting with our Greenlight Hubs, locations where drivers can receive in-person assistance from Greenlight Experts. We extended our platform to power Uber’s 600+ Greenlight Hubs around the world via in-app appointment scheduling, queueing systems, and other tools required for a more positive customer experience.

Figure 3: Users can make an appointment to meet with experts at our Greenlight Hubs in the driver app. Once in this flow, users must specify their concern and then pick a time to meet. They will then be presented with the nearest Greenlight Hub locations and available appointment times at each one, leading to faster customer support resolutions.


Collaborating on customer satisfaction

Despite the initial success of our customer support solutions, there was still more to be done. Since our team’s mission is to make Uber’s customer support experience as magical as the trip itself, we quickly realized that we needed more than just the people on our the Customer Obsession Engineering team to achieve this. So, we asked teams across the company to think about the support issues riders and drivers might face while using their features by making support implications a critical section in feature engineering documents. This approach helps inform early technical decisions that will later have a big impact on the customer experience.

Keeping with this theme in 2017, we launched several other feature-centered customer support solutions. First, we deployed a schema-based UI framework that allows feature teams to imbed UI widgets into the context pane of our customer support platform, adding additional context to help support agents quickly resolve feature-specific issues.

Next, we launched the Self-Service Support Platform, a new framework that allows engineers on feature teams to build self-service support workflows geared toward their specific use cases. It also enables cross-collaboration by facilitating the sharing of components and back-end infrastructure among engineering teams to make leveraging the Self-Service Support architecture easier and reduce technical repetition. Teams have already used this framework to launch self-service flows for mistimed trips, fleet partner changes (in international markets), and other scenarios as part of our commitment to making driver lives easier.

Figure 4: A driver can use the mistimed trips self-service flow to correct their fare on their own when they forget to start or end a trip on time.


Both of these tools allow teams to build new support features without being dependent on or blocked by Customer Obsession Engineering, helping our thousands of engineers seamlessly plug-and-play with our platform and craft better support experiences across our products.

However, quick, seamless, and collaborative support resolution is only useful if our responses are high quality and helpful to the user. So, last but not least, we kickstarted an effort to significantly improve our ticket routing engine. To boost response quality from an engineering perspective, we worked with machine learning teams at Uber to develop models that help our routing engine determine where best to direct specific tickets. In this process, if an agent receives consistently positive customer satisfaction scores on tickets of a certain issue type, our routing engine will direct these tickets to this agent and others who have scored well when resolving them.

Engineering the future of customer support at Uber

The customer is always top of mind for Uber’s Customer Obsession Engineering team.

In this article, we offered just a snapshot of the types of solutions Customer Obsession Engineering is working on to increase customer satisfaction. In the coming months, we will venture further under the hood of these and other  customer support technologies.

If building and launching products like the ones described above excites you, check out our open roles or reach out to us at Join us as we write the next chapter of Customer Obsession Engineering at Uber!

Harsh Shah is a software engineer on Uber Engineering’s Customer Obsession team, based in San Francisco. When not obsessing over how to improve the customer experience, you can find him trying out new restaurants or on a quest to find hidden swings in the city.