By 2016, the active audience of 4 biggest messaging apps has exceeded the active audience of 4 biggest social networks.
Yes, you’ve heard it right. Messaging apps are now bigger than social networks. Over 2.5 billion people currently have at least one messaging app installed. Facebook Messenger and WhatsApp, which are the biggest players on the market, are nearing one billion users monthly each.
One of the practical implications of this growth is that people are now proactively using messaging apps to connect to brands. These interactions cover all stages of communication between customers and vendors, including marketing, sale, and post-sale customer support.
So it’s not surprising that the popularity of chatbots is growing too. For starters, chatbots are computer programs with which you can communicate in a human language using a messaging app to get help with performing various operations, from ordering pizza to making recommendations on building an investment portfolio.
The question now is whether chatbots can bring any value to technical documentation and enhance the way customers work with products.
Chatbots are useful when there is no an explicit answer to your question in the documentation, and the answer has to be assembled from scattered pieces of information. Therefore, it’s easier to ask your question in a natural human language than trying to translate it to the terms of the metadata model built by the product’s vendor.
For example, if you want to know how to replace a filter in your washing machine, you don’t need a chatbot. There is a good chance that your washing machine’s user guide includes a topic called Replacing a Filter, and you can quickly find it just by looking at the table of contents in a printed user guide or by running a simple faceted search in an online knowledge base.
The situation gets more interesting when the information you are looking for is dispersed among multiple topics, so it has to be retrieved and assembled into a single process by your request.
Let’s say that you are a software developer who needs to use your company’s CRM to retrieve a list of customers who have birthday in this month in order to send them a birthday card. Most likely, the developer guide provided with the CRM does not have a dedicated topic that would address this specific goal. The developer guide likely contains some generic information about available functions, but you need to understand how it can be used in your particular use case.
Now imagine a conversation with a chatbot like this:
By asking questions, the chatbot retrieves information related to your specific needs and puts it together so you can easily understand what to do. Instead of going back and forth through the developer guide and trying to understand how it relates to your specific goal, you get a description of the process that covers the use case you described. The retrieved information can be also personalized based on your preferences. For example, if you are are programming in C#, then code examples in Java would be hidden.
To understand how it works, let’s see how a chatbot recognizes the natural language and matches the information requested by the user with the content stored in the content repository.
In our days, there is a wide variety of platforms that provide API for natural language processing. This inlcudes Wit.ai from Facebook, Watson from IBM, Api.ai from Google, LUIS from Microsoft, and many others. The capabilities that they provide may vary, but they all are based on several fundamental concepts (the terminology might vary depending on the platform):
If we get back to the example above when the user says “How can I retrieve a list of customers who have birthday in this month?”, here’s how the chatbot can deconstruct this phrase to identify the intent and entities:
This is how this question would be translated into the machine-understandable language:
But the chatbot is still not ready to start searching for the information because the user needs to provide some details to make the request more specific. From the chatbot perspective, there are some slots that need to be filled out. So the chatbot keeps asking questions until all of them are filled out. Each user’s answer is structured as in the example above.
In the end, all required information from the user is gathered and represented in a well structured form:
On the content repository end, content is semantically structured both on the level of entire topics and within topics. Now, it’s the matter of matching the structured conversation data received from the chatbot and content metadata.
To improve the quality of recommendations that the chatbot gives and to help the chatbot effectively build the process the user should follow, the relationships between topics can be also marked up. For example, createHelloMessage() that displays the customer name cannot be called before you get the customer name using getFirstName(). Or a topic about getFirstName() function may include a “see also” reference to getLastName().
The matching engine assembles the relevant pieces of information together and sends them to the chatbot that uses a response mechanism to display the answers.
It’s true, however, that the quality of the semantic markup of your content is critical. A good news is that the same machine learning algorithms that are used for chatbots can be also used for the matching engine. For example, if the metadata model you initially created does not fit user requests (the user thinks in completely different terms, markup is missing where it needs to be in order to address user’s requests, more metadata categories needs to be added, etc.), machine learning can be used to improve the content markup and close the gaps. I’m going to write about it in one of next posts.
Whether chatbots can bring an additional value really depends on the goals that the user wants to achieve. If the user has a simple request for which a direct answer exists in the documentation, then probably a well-organized user guide or a knowledge base with a metadata-based search will do the work. Writing a chatbot that will just do the same search that the user could do manually would be an overkill.
However, if there is no an explicit answer, then chatbots can help the user dynamically assemble the answer and tailor it to the specific user’s needs. In these situations, it might be easier to ask the question in a natural human language than trying to translate it to the terms of the metadata model built by the product’s vendor. Chabots can be especially useful because their interface is a messaging app so the way you communicate with a chatbot to get technical information about the product is very similar to your experience with talking to real human beings through the same messaging app.
Adding learning capabilities to both chatbot and the matching engine can lift limitations imposed by various flaws in the initial semantic markup of the content.