Helpshift Custom Bots

Helpshift, 2017 - 18

Context

Helpshift Custom Bots are a series of conversational steps. These steps are defined by Customer Support Admins to automate repetitive parts of a support conversation with a user, and free up human agent capacity to solve better problems. These interactions with the user could look like asking them a series of questions to troubleshoot their problem.
Back in 2017, when we launched Custom Bots, they had limited capabilities. They could just ask the user a series of questions and save the response. This could be later used by a human Support Agent to help the user.
At that time, Bots weren't capable of having more nuanced conversations with the user, like changing the conversation flow based on user's reply and retrieving information from 3rd party systems and relaying it to the user. A very common example of this type of interaction is telling the user their order delivery status.
We knew we wanted automate as much part of the support conversation as possible. This would require our bots to be able to:
  1. Make decisions based on the user reply and other user information
  2. Retrieve data from 3rd party systems and relay it to the user


My role

After Bhargava (Design team lead) had set up the foundation of the Custom Bot Builder and the basic bot steps, I was tasked with expanding the capabilities of Custom Bots so that they are able to have more nuanced conversation with the users and handle use-cases more complex than just collecting user's info.

During the time I worked on this project, I was the sole designer working on Bots. I teamed up with a PM and a team of 5 engineers to deliver this project.

Foundational Blocks

We had already set the foundation of the lego blocks of Helpshift Custom bots. There were three types of Bot Steps that had a specific purpose in the conversation flow.

Send a message: Sends a message and proceeds to the next step.

Get information from user: Prompts the user to provide some information in order to proceed with the conversation.

End conversation flow: Makes the bot to stop interacting with the user, takes follow-up actions on the conversation, and then exits the conversation flow.

Introducing Branching to Custom Bots

Bots would be able to have more nuanced conversations with users if they could decide the next step or the next question to ask based on the user's response to the current question. Basically we wanted to enable bots to alter the route of the conversation based on user reply.

Getting information from the user

Since the user reply is received at the "Get Information from User" step, it only made sense that the branching of the further conversation must start from this step.

We wanted to start with building branching on more deterministic user responses like number, date and an option selected from a list of options.

Branch from a list of options

We phased out the project to keep a steady momentum and broke the releases down based on independent capabilities.

The simplest kind of decision making ability we introduced to Custom Bots was branching from a list of options. Basically, asking the user to select an option from a list and proceeding to the next step based on the user's selection.

Branch Based on User Reply

The next progression of branching the conversation flow was to enable branching for user reply formats that had more absolute values, like number and date, instead of plain text.

Earlier, Admin could just add a new step to an already created bot step.

I designed a new capability specifically for number and date data-types: Branch Based on User Reply.

Here, the Admin can create rules on the user reply by comparing it again a set value. An example of this could be a Liquor Brand restricting users to use its services based on their age. The rules are executed in the order they are saved in.

I am a huge advocate of re-using existing components in the system. For branching rule creation, I used the existing "Logic Builder" component that was already being used on Helpshift dashboard for setting up automations. This helped us flatten the learning curve for the Support Admins as they were already familiar with these interactions.

Once the rules are set, a module is added to the "Get information from user" step that provides more starting points to branch out the conversation. Admin can now add different steps and send interact with the user differently based on their response.

Adding further capabilities

Expanding on the branching capabilities I designed into Custom Bots, I went on to design two more types of Bot steps that do not interact with the end-user but can still branch out the conversation based on other factors-

  • Branching Based on Custom Issue Fields: Branches the conversation flow based on the meta-information about the user stored into the system. This information could be their mobile OS platform, language, subscription type, etc.
  • Make an API Request: Triggers an API request to retrieve information from a 3rd party system. A very common example of this step is retrieving user's order delivery status.

Within 3 years since launch, Helpshift Custom Bots have helped automate ~60% of total customer support issues for Helpshift's customers. This has tremendously helped Helpshift customers to scale their support operations.

Introducing branching in the conversation flow and relaying 3rd party information to the users unlocked new use-cases that have allowed Helpshift customers to achieve a higher level of automation of support conversations.

This was one of the most information dense and one the biggest projects I worked at Helpshift. This gave me a great understanding of designing a system with multiple moving parts and designing modular solutions to complex problems.

This was just a part of the work I did on Helpshift Custom Bots. I wanted to give a glimpse of my work without overwhelming you with too much information. However, if you would like to know more about my work and the process, please don't hesitate to reach out. I'm always up for a chat.