Context matters.
Most bots available on the market today are simplistic. They seem to offer services that are not all that sophisticated. Some bots let us enquire about the weather, some propose to assist us in ordering flowers. Some propose to deliver the news, or challenge us with a game of quiz.
The reason for this ever growing army of low octane bots is simple: it is not easy to build a useful bot. Before we look at the reasons why is it so complicated to build bots, let’s first look at the types of bots.
Types of Bots
I recently went through a hands-on exercise with building bots of various complexity. This exercise made me realize that we could divide bots into four distinct types:
Stateless bots
Semi-sateful bots
Stateful bots
Loyal bots
The whole reason of hiring a bot is to get it to engage with us.
Stateless Bots
These are the easiest bots to build. Most bots available today are stateless. The services these bots offer are quite frivolous. Their value is thus marginal, unless their main purpose is to bring entertainment value.
A typical example of a stateless bot is cleverbot. We can send some text to this bot and it will process it and send the reply back. We can then respond to the bot’s reply, and it will respond back. We can get the conversation going like that without reaching any definitive end goal.
We will notice after a while that the bot does not keep any memory of anything we’ve already messaged to it. The bot does not maintain the state of the conversation. Such bot is then called stateless bot. To such bot, every text message that arrives appears as if coming from a brand new user.
It’s not too hard to realize that stateless bots are quite useless. The whole reason of hiring a bot is to get it to engage with us. We then expect the bot to remember the details we have asked it to do. This is necessary in order for the bot to be able to learn from us. Stateless bots are not capable of any learning.
For developers: Contextual Chatbots with Tensorflow
Semi-Stateful Bots
Semi-stateful bots posses limited ability to keep track of the conversation. Semi-stateful bots do not process each message as if it is coming from a brand new, never before seen user. These bots persist the basic details about the user (i.e. user’s ID, or phone number, or user name).
These bots are definitely more useful than stateless bots. But their usefulness is still limited, because the state they maintain is quite shallow.
The best way to understand how these bots work is to compare them to automated phone menu systems. When we make a call that gets intercepted by such automated phone menu, it will ask us to choose a menu option. The choice is most likely offered as a number to press on the phone’s numeric pad. Or, it may be a voce-activated choice.
Upon making our choice, we may hear a sub-menu. Offering a few sub-menu choices is a demonstration of a semi-stateful conversation. The bot remembers our first choice, and based on that offers the next available set of choices.
This piecemeal refinement of our conversation with an automated service can keep unfolding. There could be many sub-menus to the already chosen sub-menu. Sooner or later, we will arrive at the desired option. All that happens thanks to the fact that the service keeps track of the choices we’ve made. The service persists the state of the conversation which enables it to limit the options.
Semi-stateful services are useful but could also feel clunky. We’re not sure while using such services whether we’d be able to correct any mistakes. That’s why semi-stateful bots are not that interesting nor attractive.
Stateful Bots
Stateful bots are more sophisticated than bots that behave like automated phone menus.
With stateful bots we can start offering more sophisticated services.
Semi-stateful bots limit their state to a single conversation session with the user. Once the user reaches their goal, the conversation ends. If that same user later on calls again, the conversation starts anew. No recollection of the previous conversation is present.
Stateful bots keep the entire history of each conversation they had with the user. They can recall what the user asked for before, and can adjust their response based on that. That way, stateful bots do not appear like they are some rigid, mechanical contraption.
With stateful bots we can start offering more sophisticated services. We can interrogate the user for their preferences. Remembering user’s preferences will allow us to respect their express wishes during later conversations.
Stateful bots are also capable of answering various questions about previous conversations. They are good for refreshing user’s frail memory. They can also remind/warn users if they ask for something that earlier they said is not good for them. Example: user informs their lifestyle coach bot that they have risk factors for diabetes. The stateful lifestyle coach bot persists that important information. Later on, the user messages the bot how they are going out for an ice-cream. The bot immediately reminds the user to watch their sugar intake. A frivolous example, but may serve as an illustration for how stateful bots work.
Featured CBM: The Future of Healthcare and Conversational UI
Loyal Bots
I use the term ‘loyal bots’ for the lack of a better word. Loyal bots differ from stateful bots in their level of dedicated service. While stateful bots take care to persist every message, loyal bots do that and then go the extra mile.
What is this ‘extra mile’ that loyal bots go? Stateful bots review the history of the interaction only upon receiving the message. Loyal bots keep reviewing the history of the interaction on a regular basis. Loyal bots do that on their own schedule, not waiting for the incoming message to trigger the review.
Why the distinction? Why is it better to not wait on the incoming message to review the history?
The reason lies in the fact that recorded conversation threads are only the raw material. Recorded messages contain a lot of useful pointers into the underlying patterns. Those patterns can reveal deeper intentions that the users may not have the time to disclose. By reviewing and summarizing those patterns, bots can provide more sophisticated services.
We can compare loyal bots to loyal human butlers. We hire a butler and then rely on their observation skills. The butler’s job is not only to do the chores. Their job is also to point out some hidden patterns in our behaviour, something that we can hack and tweak. Same quality of service should be something we expect from the bots we hire.
Intrigued? Want to learn more about the bot revolution? Read more detailed explanations here:
The Age of Self-Serve is Coming to an End
Only No Ux Is Good UX
Stop Building Lame Bots!
Is There A Downside To Conversational Interfaces?
Are Bots just a Fad? Are GUIs really Superior?
How to Design a Bot Protocol
Breaking The Fourth Wall In Software
Bots Are The Anti-Apps
How Much NLP Do Bots Need?
Screens Are For Consumption, Not For Interaction