Why I hate chatbots… yet still love them


What’s the hype behind chatbots? Why do we need another way of communication with a computer if we already have standard GUIs we’re all used to?

Just think about the way chatbots are used today — e-commerce for example. Buying things through chat, that’s ridiculous! Why the hell should I ask a bot to find me something if I can just search and see the list of everything I might want in a simple webpage, in a page where I can scroll, see other results, and go back and forth?

In general chatbots (like any other application) have the following workflow: collect information, perform an action and display the result.

Chatbots collect information

The natural way to collect information for chatbots is by asking questions, things like “What’s your name?”, or “What size pizza do you want?”. In contrast, in a form based UI there are inputs for collecting information.

Because chatbots collect information via question/answer conversation, there are number of potential issues you will need to consider when building a chatbot.

Entity extraction: Entity extraction is a way for a chatbot to get meaningful information from an arbitrary text, like understanding names, dates, location, time, money, and so on. While there are plenty of ready to use tools for entity extraction from text (e.g a user’s name) you can never be 100% sure that it will work properly all the time. For example, during a previous project, we had an issue with a very common Dutch surname “Van den Berg”, where only “Berg” was recognized as a name. While extraction techniques are being improved and trained constantly, there will always be such a risk.

Editing the data: Another challenging situation might occur with data editing, as the text the user sent has already been processed. Suppose the user misspelled his name and wants to fix it. The natural way would be to send a clarification message to the bot. Properly processing such cases might be a difficult task, but if you don’t deal with it, you might end up with something like in the picture below.

Chat-based VS Conventional UI

Chatbots perform actions

The theoretical benefit of chat-based UI compared to conventional UI is the freedom it gives. One might think:

“Chat is a free form of communication and you can just type anything, so you are not limited to input forms and buttons like in conventional UI.”

But in reality…

A chatbot is a regular computer program that has limited functionality (at least now) with an unusual user interface.

About the limit: we can have chatbots that know everything (for example this project) but we are far away from chatbots that can do more than few things. That’s why Apple’s Siri get new features/functionality only occasionally with iOS updates. The process of implementing new functionality in any bot (actually in any application) is not scalable. There will only be a finite number of cases your application handles. Scaling this will be the biggest advancement in chatbot history. In future posts I will share my personal vision of how this can potentially be solved.

What about Facebook M? In this article a guy performs a so called anti-turing test to prove that M is not 100% AI.

So what’s the point of confusing users by allowing them to ask just about anything, while being able to perform only certain things?

A hypothetical chatbot for restaurant table reservations will have functionality like this: find a restaurant, reserve a table and manage previous reservation. And still conventional UI makes more sense.

Still don’t believe me?

Let’s look at the evolution of the Messenger Platform (a set of tools and APIs for developing chatbots for Facebook Messenger) and wit.ai (text classification and entity extraction service acquired by Facebook a couple years ago). At the beginning of Messenger, the emphasis was on text and very few rich content elements like buttons and templates with images. Buttons in text are indeed very useful, but if you think about it you will notice how strange it sounds. Imagine talking with somebody and during the conversation you notice buttons on their cheek, and if you select one, they’ll perform that action :)

What about web extensions? Oooh man, it seems like we are inventing the web and everyone is so amazed that we can finally have a web page in the chat, wow, what a miracle. What could be worse? A chat without the ability to send a text! Yes, you heard me right — in Facebook Messenger you can setup a chatbot that doesn’t support text messages!

The guys at wit.ai (read Facebook) are rockstars I’m sure; in the beginning, they created a cool way to design conversations that they called “stories”. But they recently shut it down, tossing a couple of years of work out the window. Why? Because they realized that people want buttons, web pages, and quick replies. Now wit.ai is just another user’s intent analysis and entity extraction tool, yet it’s one of the best and free of charge. Was this a wrong decision? No, it was inevitable.

Disclaimer: Facebook Messenger is the most popular and the most robust messenger with chatbot support and that’s why it’s used in my examples. I don’t have anything against it, actually, it’s my personal favorite and the platform of choice when we develop a chatbot.

Is there ANY reason for chatbots to exist?

We humans are all very intellectual beings, but in many cases our brain can’t distinguish what’s real and what’s not. We all know that movies are fiction, characters are not real people, and that cartoons are just pictures in motion, but it doesn’t stop us from connecting with them emotionally and sharing their feelings. And don’t forget computer games. Remember Tamagotchis? Just think about the obsession the human race had with those.

Emotional connection is what’s missing from the conventional user interface of pages, forms and buttons. And that’s the most important ingredient we miss in chatbots. After analyzing more than a thousand user-to-bot conversations, we clearly noted that users expect something more from the chatbots then they would in the case of conventional UI. A simple example would be that users greet the bot, say thanks, ask how he(it?) is doing, and say goodbye. Can you imagine the same behavior on the web page or mobile apps? It would certainly be fun to watch :)

That’s why chatbots should have a personality and a distinct character. And that’s the reason why I hate any chatbot that offers something like this:

This is a Restaurant Bot, my commands are:
a - book a table
b - find a restaurant
c - go to hell

Emotional connection deepens the relationship with the user. Chatbots are becoming our best friends, humble, ready to help without hesitation and awake 24/7. They bring something very special to a human-computer interaction, an emotional bond, which results in more joy, more satisfaction and more engagement. This is the key element of chatbots we should not miss.

Creating emotional connection

The main challenge of creating a good chatbot is to develop a character. You should approach it not like you are developing a program, but a friend — though a virtual one. While this is a more complex and creative task, a few tips might help you ensure your chatbot is not too robotic.

  1. Small talk this is very important for any chatbot. For a chatbot to have a personality, it should be able to talk about common things and have some kind of opinion.
  2. Subtle sense of humor giving your user’s little moments of happiness is what makes a chatbot great. When developing a chatbot, try to make it a bit playful and funny.
  3. Don’t pretend to be a human — from the first interaction, a chatbot should let the user know that it’s not a human in order to set users’ expectations. If a user believes they’re interacting with a human, at some point they might get angry and not understand why the hell the person on the other side doesn’t understand some basic things, which could make their experience disastrous.
  4. Be prepared for anything — the freedom of chat has its down side, which is that users might ask off topic questions or make general statements your bot is not designed to understand. Your bot should be honest about it’s capabilities and reply to off topic questions with something like “Hmm, I don’t know, I’m just a bot”, “Let me ask my creators”, “Good question”, or “That’s a good point”. This also helps give the bot a fun personality.

You can find a more comprehensive list of tips in the article about 10 Conversation UX Tips Every Chatbot Should Follow by Loric Avanessian, a senior UX consultant at IBM, and myself.

Emotional connection is the essential element every chatbot needs to provide


Don’t get me wrong, I’m a passionate advocate of chatbots and conversational UI, and we’re now in the first stage of the technology adoption lifecycle, a kind of stone age of the chatbots epoch, which means there are more experiments than real useful cases. In order for chatbots to become something more than just cool fad, a lot of technology advancements and experiments need to be done. Still, they are already used by many people. Nevertheless, chatbots finally bring something very new and special to the human-computer interaction, and that is an emotional connection.