Before I start — Why should you read this? Well, I have engineered the UX of more than 15 bots and know a thing or two about consumers preferences. Apart from this, I am part of a team which is developing a platform for developers to make chat-bots and have tested over a 1000 bots for the same.
There are two aspects to each (good) bot— Flow and AI/ML based Intent & Entity Extraction
- Flow — Everything in this world has a flow — when you book an Uber, you choose your start location, end location, type of cab & then book. You do not just pay for the cab and then choose the type of cab to be booked. This is not just the case with human & business interactions, but is also equally true for human & human interactions as well! For eg. If I started by writing this sentence, you probably would have taken me for a fool. So, there is no doubt that each and every developer should focus on building bots with proper flows.
However you may think of flow, it is nothing new and many have tried to talk about it, they call it ‘context’. I think that context is something that is broader (more like infinite, if you start accommodating for it in your chatbot with the existing technology) and largely depends on the end-user and his/her moods so, I urge you to focus on flow because if you understand the end-user’s step-by-step actions while availing your services, you can limit the context to something a single developer or a group of developers can handle and accommodate for.
- Intent & Entity Extraction — You have to use Natural Language Processing, Artificial Intelligence & Machine Learning to do this part properly (you can also implement phrase matching, but that isn’t a good solution). Intent and Entity extraction is for making the computer understand what the user wants. This is very important as humans think in natural language and if I can get stuff done by blurting out my thoughts, then thats great convenience (especially if it is voice commands).
Now, let’s see what happens if we use only one of the above aspects to build a bot —
1. AI Only — From my experience, building a bot without any flow and only with Intent and Entity extraction (however good it is) is a very bad idea because it leads to users getting lost during the conversation. The result is bad conversions and customer dissatisfaction. For eg. You were ordering a pizza and had already selected one from the carousel menu, now, the bot asks “What size do you want?”, the user replies with “What all sizes do you have?” and the developer did not handle this, so the bot says “Sorry, I couldn’t get that”. This is a dead end, will confuse the user and will force him to start the conversation all over again (refer pic 1).
2. Flow Only — I have seen many bots which do not handle the basic intents and are completely based on flow using carousels, lists, quick replies, etc. — The result is almost always devastating because when end-users enter simple phrases like ‘order pizza’ & your pizza bot replies with ‘Sorry I couldn’t understand that’, it leaves a bad taste and constraints the user. Also, as a thumb rule, we all know that end-users will adopt any new service if it increases convenience or in simple words — shorten our path to availing that service. Now, I have observed that generally ‘only flow’ bots tend to increase the path length for attaining the goal and hence create huge barriers to mass end-user adoption. For better understanding, let’s take an example — I say “order a medium farmhouse pizza”, the bot understands and processes (refer pic 2) Vs having to do this over 5–6 steps (clicking on menu->pizza->veg->farmhouse->medium) where the bot asks questions and I answer using Quick Replies & carousels suddenly becomes too many clicks and the experience is bad as compared to an app/website thus, hindering adoption.
So, how to build great bots? Create a bot while giving equal focus on both ‘flow’ & ‘AI’. Basically make sure that you are always giving cues to your user (using buttons, quick replies) and helping him reach the end-point while giving enough flexibility to browse. For this, make two categories of intents — browsing & definite. Inside browsing intents, users get enough flexibility to move around freely and change categories/sub-categories by typing or clicking (be sure to include Quick Replies to enable changing categories/sub-categories in browsing intents) for eg. if he/she is browsing the pizza menu, let him skip to dessert menu and back and forth. Definite intents will be far less flexible, require user to give some particular information like — time of reserving a restaurant table, time of pizza delivery, etc. and will prompt him/her again to give the required information if he/she tries to deviate (refer pic 3).
When the bot asks “what size of pizza do you want”, it will also give quick replies to help the user finish the step quickly and prevent him from getting lost.
Powerful bots will be made only with the amalgamation of Flow & AI and this is exactly what we are hoping to provide to the developer community. We are developing a powerful platform where flow and AI can be married very easily. We will be launching a private beta soon & anyone who wants early access can fill out this form.
In the next post, I will go into deeper nuances of building bots — small things to make sure that user reaches the end-point seamlessly.