Not all chatbots are able to satisfy their users. For example, here is a March 2021 survey on the state of chatbots.
This 1-page guide gives you some tips for building successful chatbots.
Why chatbots fail
Many of my clients and the students I trained have reported that they were able to build a successful bot.
But not all of them are able to do it. One of the more spectacular examples was a client who came to me after their bot was already in a pretty bad state, refused to implement any of my (admittedly time-consuming) suggestions, and eventually gave up and said they were going to look for Dialogflow alternatives. So the time they spent building the bot to its current state had mostly gone to waste.
From my experience, here is the biggest reason chatbots fail: refusing to use a systematic approach to building and maintaining your bot.
On the one hand, it was a little too late to rescue their chatbot. On the other hand, a lot of the problems in that bot could have been avoided by merely following a more systematic process. But nearly all the mistakes had been made a long time ago, and fixing the bot required practically rebuilding it from scratch.
This article has a list of tips I would have recommended to them if they had come to me a year earlier.
In this article, I will focus on providing tips which will increase your odds of success. Each tip might provide only a small boost, but as you combine more of them you will find that the odds of building a successful bot will increase quite a bit.
There are many reasons why bots fail – the rest of this article gives you some tips to not just avoid failure, but also to improve the odds of building a successful chatbot.
But first: do you actually need a chatbot? These tips are all about the technical aspects of building a chatbot. But this article does suppose that you are building a chatbot based on an actual need. Only then you will be able to measure the accuracy. You should be able to inspect the user utterance and and ask yourself - "is this something my bot is supposed to handle?".
How complex is your bot?
Suppose N is the total number of training phrases in your bot, excluding the training phrases which are already in the Default Welcome and Default Fallback intents.
By the way, these are just rough numbers. For example, if your bot has exactly 51 training phrases, I would say that it is still likely to be a fairly simple bot.
|N < 50||It is unlikely that your bot’s success depends on whether you follow these tips|
|50 < N < 500||You would be much better off at least learning about these suggestions.|
|N > 500||Your bot is quite complex and you will need to follow these suggestions, plus you will probably need some tools if you want to build a successful bot.|
You cannot improve what you cannot measure
The best example of “earlier the better” has to be the problem of getting downloadable conversation logs in a simple format (such as CSV or JSON).
As it turns out, if you can get a hold of a downloadable copy of your conversation logs, it is much easier to calculate things such as the accuracy of your bot rather than using overpowered but not quite as useful conversational analytics tools like Chatbase. Not surprisingly, this was one of the biggest problems in the client’s bot. They had not instrumented it for measuring anything.
In fact, the first thing you should do when you create a Dialogflow agent (both ES and CX) is to enable StackDriver logging.
Here are the tips. They are not in any order.
1 Learn the basics
The old saying “a stitch in time saves nine” applies very much to learning and understanding how chatbot frameworks work. Take the time to learn the basics.
2 Design a flowchart
Apparently a US president once said “Plans are worthless, but planning is everything”. Although he didn’t exactly say those words.
In any case, creating a flowchart for your chatbot, even if you cannot keep the flowchart and actual bot in sync in the future, will greatly increase your odds of building a successful chatbot. I recommend using Mindomo.
Mindomo automatically re-arranges your flowchart and keeps it readable as you make changes (most important feature), provides a nice UI, supports the features you need for creating chatbot flowcharts, can be easily shared publicly and privately, and also allows you to create your first 3 mindmaps for free.
3 Understand the limits of no code
Slot filling makes for an amazing demo. It makes people think that all you need to do is to define the right required parameters, and you will be able to build any Dialogflow bot.
There is only a small problem – the slot filling feature could be a big reason your bot doesn’t work as expected.
Slot filling is a good example of the limits of no code – it looks amazing, until it stops working. 🙂
4 Understand (and design around) the limits of AI
Sometimes, despite your best efforts, your bot will not be able to understand what the user says. Instead of adding even more training phrases to fix the problem, I recommend taking a step back and asking if you can design around the limitations of AI.
If you are not familiar with the term, NLU stands for Natural Language Understanding. It is the fundamental technology which powers AI chatbot frameworks such as Dialogflow.
Recently, at the L3-AI virtual conference sponsored by RASA NLU, an AWS developer advocate explained this very well. In fact, I recommend watching the full video presentation – it will be one of the best investments of your time.
5 Avoid pro code (RASA NLU) for now
While RASA NLU is really good at what it does (powerful open source chatbot framework), it is a little too “pro code” for the audience of this website.
If you divide tools into no-code, low-code and pro-code, you will find that Dialogflow falls into the low code category. In fact, of all the NLU bot frameworks, it is probably the one closest to the no-code category.
In practice, you will find that Dialogflow ES and now Dialogflow CX offer the best tools for non-programmers to start from a conversation flowchart and translate it into an actual chatbot without asking the developer to do any NLU heavy lifting.
Unfortunately, in RASA NLU, the situation is currently inverted. It is quite hard to create a RASA bot to mimic what a Dialogflow ES bot can, unless you write a lot of custom code.
Just to be clear – there are some important reasons why people prefer RASA NLU. Most notably privacy. So I very much want to see RASA NLU succeed. However, now it is too code heavy to recommend to the audience of this website. I hope the situation improves sooner than later.
6 Understand training phrase collisions
You say “Turn on the light”. Instead of turning on the light, suppose your Google Home turns on the air conditioner. (To be clear, this is very unlikely). What has happened here is a training phrase collision.
Both intents (turning on the light, and turning on the air conditioner) share some words and phrases which are similar to each other. If the complete phrases are too similar, sometimes they will collide, and confuse the bot framework.
This collision is possible in all the bot frameworks. You need to understand how it happens in your specific bot framework and take steps to avoid it.
This has an interesting side effect. You shouldn’t blindly add a user utterance from your Training module into an existing intent. This will have the effect of increasing these training phrase collisions if you aren’t careful.
7 Don’t focus on the personality of your bot
Some people suggest that the reason why bots fail is because they don’t have a personality. I believe your bot is more likely to fail because it is not satisfying user needs. So I think you would be better off focusing on the functionality of the bot, while making sure it doesn’t sound too robotic.
On a related note, this is also why you need only minimal small talk phrases in your bot. Obviously the bot needs to respond to simple things like greetings, thanks and good byes. On the other hand, you can add more small talk phrases on an as-needed basis if enough users seem to expect it.
However, once you are certain that your bot is successful, then adding more personality to your bot would definitely be a good way to improve it.
8 Use a low code database if possible
If you are building a non-trivial bot, it needs to access a database. Now, you could just use a spreadsheet such as Google Sheets, but spreadsheets are not optimized for storing tabular data.
Instead I recommend using a low code database like Airtable. This is even more important if you are building a prototype chatbot first. At that point, the ease-of-use of a minimal tool like Airtable will let you quickly verify if your proof-of-concept can actually work.
9 Reduce NLU
The simplest way to improve your bot’s usability is to reduce NLU where you can. If you provide multiple buttons that the user can select from, it will immediately improve the accuracy of your bot instead of asking them to type out those same choices.
10 Prototype your voice bots first
Even as of August 2021, I don’t think voice bot technology is mature enough to build powerful voice bots. I recommend waiting until Dialogflow CX natively supports building voice bots.
However, if you don’t want to wait, I suggest creating a prototype first and asking some beta users to test it first. If you are satisfied with the speech-to-text conversion and the state management (especially NO-INPUT), then it would be less risky to build out the full voice bot.
11 Use quantifiable metrics
Of all the tips mentioned here, this is the most time-consuming to implement. This is also the step which the client I mentioned at the beginning really messed up.
Whether you are trying to improve the accuracy or the deflection rate of your bot, you first need to measure the current value. Turns out, there isn’t any simple and easy way to do it. Tools like Chatbase already assume that the intent mapping was accurate, which is often a pretty bad assumption.
Check out my free Udemy course: Zoho Deluge Script Quickstart for Programmers
This website contains affiliate links. See the disclosure page for more details.
"The magic key I needed as a non-programmer" The custom payload generator was the magic key I needed (as a non-programmer) to build a good demo with rich responses in DialogFlow Messenger. I've only used it for 30 minutes and am thrilled. I've spent hours trying to figure out some of the intricacies of DialogFlow on my own. Over and over, I kept coming back to Aravind's tutorials available on-line. I trust the other functionalities I learn to use in the app will save me additional time and heartburn. - Kathleen R Cofounder, gathrHealth