NLP-based Customer Service Automation
Manual customer service can be a tedious task. Using automated preprocessing, natural language processing, sentiment analysis, and dynamic agent assignments, we helped the swiss utility provider ewb streamline their processes and modernize their customer support activities.
Each year, the Young Boys Bern football club hosts the YB Hackathon. Located in their VIP lounge
with an impressive view of the stadium, teams are given 24 hours to design and build
innovative software products which they then pitch to a jury. After we won the previous
hackathon in 2019 with our Augmented
Reality Beer Order System for Stadiums, we returned in 2020 to defend our
title.
This time, our original team consisting of Jonathan Külz, my brother Jan Carius, and me, was completed by my former
London flatmate Christopher Gudde. Unfortunately, due to the Covid-19 pandemic,
Christopher wasn’t able to travel from the UK to Switzerland, and I was stuck in
quarantine in Munich after a flight back from a high-risk area. Jonathan and Jan could
attend though, so we went with a half-on-site and half-homeoffice approach which worked
out really well and did not impact our team spirit at all. As you can see in the title
image, I even made it onto the team photo on my brother’s phone.
This year’s challenge set by the utility provider ewb
concerned their problems regarding the handling of customer support requests and
questions. Previous to the hackathon, support tickets would be either assigned to agents
randomly or a dedicated support agent would manually read the requests and forward them
to another agent with expertise in the corresponding area. This inefficient process led
to unacceptably long turnaround times because agents would loose time manually browsing
through their own service’s FAQs to find answers, thus rendering the customer service of
ewb an expensive undertaking that the company challenged us to re-think and improve in
the 24 hours we were given.
Here is an overview of what we build:
Our fully dockerized pipeline runs on the Azure cloud and receives incoming customer
support requests. The messages are automatically analyzed using Natural Language
Processing to categorize them by business units such as water, power, or waste
management. In addition, sentiment analysis determines whether the customer is
particularly angry or discontent to provide additional information to the support agents
and allow for dedicated strategies for dealing with unhappy customers. The machine
learning models for this step run on Google cloud services.
After the incoming message is categorized and analyzed, our system aims to automatically
find information that is relevant to the request. To this end, we trained a Neural
Network on the FAQ database provided to us by ewb. This allows our pipeline to match
incoming requests with FAQs that are likely to answer the question or contain relevant
information.
At this point, the service requests are assigned to customer support agents. Our system
dynamically adapts to the work shift schedule provided by ewb and assigns messages to
customer support agents based on their availability, their knowledge in the detected
business units affected by the message, and their current amount of service tickets.
Along with the raw message sent by the customers, our system provides the service agents
with information about the detected business units and sentiment of the customer as well
as suggested answers to the request based on the FAQ matching.
Our system radically simplifies and streamlines customer support processes for ewb: The support agents log into our web-app and are provided with a queue of tickets that have been assigned to them by our pipeline. Once they select a request, they are provided with the message, our sentiment evaluation, and our suggested answer, and can directly reply to the request within our web-app by either accepting the suggested answer, or modifying it manually before sending.
Due to our lack in frontend development expertise at the time of the hackathon and the limited time we had, our python flask-based web-app frontend ended up looking rather basic:
The system, however, is fully functional, and its looks could easily be improved by a
frontend developer putting in a few hours of work.
As a bonus, we also created a Telegram bot that allows customers to send support requests to ewb via Telegram. For the support agents, the process stays exactly the same, our web-app simply takes their response and sends it back to the customer withing the existing chat conversation.
After the 24 hours of hacking, we were able to demonstrate the system live on stage. Members of the audience sent in service requests by E-mail and Telegram which were automatically analyzed and displayed in the service portal in real-time. Even though our web-app wasn’t the prettiest, the functionality of our approach convinced the jury and we were awarded the second prize:
Der zweite Platz hat sich das Team "Halbes Hähnchen" geschnappt! Wir gratulieren euch ganz herzlich zu dem verdienten zweiten Platz und dem Preisgeld von CHF 1'500. Danke, dass ihr dabei gewesen seid und für euren Einsatz! | @BSC_YB | @isolutionsag | https://t.co/UeZLfUo34s pic.twitter.com/OGYs4T7Ris
— YB Hackathon (@ybhackathon) October 10, 2020