Behind the scenes of Nubank's Customer Support

Proximo! — (“Next!” in Portuguese) shouts an employee in any regular bank branch asking for the next customer in line to step up and be served.
Story of my life

Lines are one of the simplest and fairest ways to organize supply and demand. On one side, you have anxious customers demanding to be served and, on the other, a limited supply of well trained employees. Balance those two well and you’ll get happy customers and fulfilled employees but, if you fail, angry customers and a burned-out team starts to show.

In a growing fintech such as Nubank, this is an ongoing challenge. Banks in Brazil are well known for their poor customer experience and we wanted to challenge that: we wanted to offer an experience that would WOW our customers while being highly efficient. That is the main mission of the “Customer Support Design” squad, or CSD as we call it. When designing customer support for Nubank, we looked at the experiences available out there and came up with some principles we wouldn’t compromise when designing our customer support experience.

Be simple

Fighting complexity is core to our values, so we wanted something as simple as a line/queue. A platform in which our support agents could just say “Next!” and the next customer would pop up in one’s screen. It should also be simple to customers. No extensive menus, IVRs or protocols. Just state your problem and someone will help you shortly.

Be fair

It’s infuriating when someone else cuts in front of you for no good reason. That’s just not fair! We wanted to create a fair experience, so people waiting longer would be served first, unless, of course, there’s a good reason for cutting the line. You had your card stolen and the person in front of you has just a simple question? Well, then you should probably be served first, so we must be prepared for cases like that too.

Be efficient

Waiting in line sucks, but nothing is worse than jumping through hoops and be sent to other people again and again until you reach someone that can finally help you. That’s a hard problem to solve and after looking for all different tools out there, we couldn’t find anything that suited us.


Proximo is a queue management system created at Nubank to help us accomplish what we believe to be important when it comes to customer support. Its main purpose is managing several different queues. Each queue represents a specific problem domain. For example: doubts about your bill? We have a queue for that. Problems in a transaction? Another queue. Lost your card? A third queue. You get the idea…

For each queue, we have trained agents that know everything there is to know about that problem domain. We call them Xpeers, and they’re the heart of our Customer Support Operation. Xpeers have badges according to their skills, so if an Xpeer knows how to handle chargebacks, then he or she will get a badge for that. Learned how to reissue a card? You get another badge… Those are digital badges, of course, and they are linked to queues as a way to tell Proximo which skill is required to work on a particular queue. Seasoned Xpeers have multiple badges, meaning that they can help customers with different types of problems. New Xpeers have fewer badges, usually for simpler problems, so they can start learning safely without frustrating customers.

A nice thing about this design is that we can use Proximo not only for customer support but also to organize back-office tasks in general. So we created an important concept along with it called job. A job is a Proximo task. It can be a customer asking for support via email, a chat session to be attended, a back-office procedure an Xpeer must accomplish (like validating documentation for a disputed transaction) or performing a quality assessment for a teammate.

Xpeers sign up to Proximo so it knows who’s able to work on each queue based on their badges. We developed a back-office WebApp called Shuffle that brings to one screen all the data and actions Xpeers need to perform their tasks. After opening Shuffle, they just have to click on a button called “Start” and the next job related to their skills will pop up on the screen with all relevant information about that customer. When they’re done, just click “Finish” and the next job pops up on their screen. Proximo guarantees the fair ordering of the line and makes sure that jobs are being served by only one Xpeer at a time.

Shuffle brings all information and actions needed to support customers to one single screen

Seems pretty simple but to actually make it work we have a few challenges to overcome:


Getting customers in the right queue is a huge concern. Get it right and customers are served by the right Xpeer, problems are solved at first contact and satisfaction is guaranteed. Miss it and Xpeers might have to manually send that customer to another queue to solve the problem.

Transfers are bad in two different ways: customers get annoyed by being sent across different agents and our team sizing gets compromised since we’ll need more agents in one particular queue just to understand the problem and send customers to the correct one.

To solve the routing problem we use several techniques, but AI and machine learning are core to our approach. By learning how Xpeers categorize each customer question, our Data Scientists created models that learn how people ask questions. These natural language and keyword models are complemented with contextual models that use customers’ recent information to infer the type of problem they are having. A stacked model finally combines these algorithms to come up with a prediction.

Our first task is making sure each type of problem goes to the right queue.

That way, whenever a customer writes to us, our platform tries to figure out what they’re talking about considering his or her context and places the customer in the best possible queue. We still have a long way to go, of course, but it gets better and better the more we use it. Today our AI models get it right 75% of the time!


Dimensioning is another challenge and a classic supply vs demand problem. As a simple goal, we need enough Xpeers working in the queues so customers don’t have to wait too long. For each queue, we track the median “first response time” (or FRT), how long it takes for a customer to be served. FRTs should always be “under control”, meaning it should not be either too low (our Xpeers like talking to customers!) or too high (customers waiting for too long).

Being able to balance those two levers is tricky and is a full-time job tackled by a team of Analysts here at Nubank. Their job is to figure out how many people we need for each queue at any given time of the day, week and month (seasonality matters!). They come up with Xpeers allocation, training requirements and hiring plans.

To support that task, we make sure Proximo provides as much data as possible for them to work with, so we gather a lot of information about the jobs we do everyday: how many of them are sitting in queues waiting to be done, how many were solved, how long it took to solve them, for how long did a job need to wait, etc.

We need to balance supply and demand.

Our Analysts use that data to build dashboards that are visible all over the squads (we really do like big TVs around here) and help managers keep track of queue sizes and adjust dimensioning on the spot if needed. They are also used to feed our hiring models, so we know how many new Xpeers we’re going to need in the future.


So, at this point, we’re sending customers to the right queues and have enough Xpeers working on each one of them so they can be served in a timely fashion, right?

But are the customers’ problems being solved? Are they being served thoughtfully and with care? To make sure of that, we invest a lot in training, but we also use technology to help us check how our Xpeers are doing. For that, we developed a new job type inside Proximo called Atenta.

Checking samples

Atenta is a quality control job only selected Xpeers have badges to. It chooses previous customer support cases at random and shows them to this team for review. The reviewers check the conversation history and give feedback regarding the procedure and “tone of voice” used by the Xpeer. Additionally, once a customer support job is finished, we ask customers for feedback. That is a key metric to keep track at all times.

So, what’s Next!? (pun intended)

Today, Proximo manages almost 200 different queues and routes nearly 60,000 jobs to hundreds of Xpeers every single day. It has become a core tool to help make our award-winning Customer Support a reality, but there are still many things we’re working on in CSD.

Improving Self-Service

As we grow, Customer Support grows with us. The more customers we have, the more Xpeers we need to hire and that becomes more challenging by the day. Hiring people is hard, takes time and requires more physical space. Besides, onboarding and training new people puts a lot of pressure on the amazing team we already have.

To really unleash our growth we need to be able to handle more customers without growing our support team as much. And for that, we strongly believe in empowering our customers through our app and educating users so they can solve most problems without needing to contact us. That’s what we call self-service and it’s a core goal of CSD squad.

Self-service means avoiding tickets whatsoever.

We improve our app continuously to make it even more intuitive and simpler. There are several efforts we work on to improve our self-service initiatives while preserving the great customer experience our users grew accustomed to. We have some thoughts to share on this front but that’s a subject for another post.