Bots & Chatbot design considerations

What are Bots?

Bots are simple computer application(s) that executes automated tasks that are both simple & structurally repetitive at a higher rate than that is possible for a human agent. They can automate text & voice conversations, and automate routine, repetitive processes aka Rapid Process Automation (RPA).

Breaking it up into three broad categories would leave us with :

1. Process Bots are used to automate rules-based, repetitive & mundane processes. They run on platforms like Virtual machines, Virtual Desktop Infrastructure (VDI), our personal computers. They can empower enterprise or industrial software processes. For, e.g., Annual audit of employee records/On-demand report generation & consolidation on enterprise (ERP, SAP, etc.)/ industrial systems, OR if you just wanted to play that Bruno Mars song on Friday evening when you return home and make those Philips lights go all Disco Nights on you. The point is that you can use it to automate anything it connects to.

2. Chatbots (Conversational Bots) at their core are just a question and answer system. To answer they first analyze the user statement to understand the intent and the various contexts involved (entities/ domains in technical jargon) find the answer and compose a response. The quality of analysis, fetching the answer and responding are based on levels of Natural language processing, Intent & Entity mapping, Machine learning capabilities if any, and the data and executive actions available to the bot.

3. Composite Bots allow for cross bot collaboration between process or chatbot and human agents (if required) to initiate another process or chatbot. They also can store and maintain the state of the conversation or process. For, eg. Industrial installation or maintenance scenario where a field agent is in communication with a bot which invokes a process bot or even human assistance to provide the right response.

The explanation does not indicate the vast application, benefits, and implications. It will suffice though for this article which looks into design considerations when creating Chatbots for use cases in E-commerce, Support, Issue resolution & updates, news, engagement, etc. in a B2P Business to People scenario. I say B2P as if we start a simplified approach from the start instead of creating one that only experts get you will have a high chance of success with the majority of users.


So let's get started on design considerations for chatbots

1. Focus

Determine your user’s goals and actions. Are they using it for utility (switches), for quick info (Weather/Stock update), for fun (games), for purchase, for a mixture of these? Chatbots that specialize in specific domain knowledge are more efficient and user-friendly. Leave the “tell me a joke” to Siri and Google voice. Focus on why the customer is interacting with your bot.


2. Does your bot and Instant Messenger support natural

Language? If yes to what extent? Bots can be great at conversations and making contextual jokes, or they can be no ability to have a conversation. And for various scenarios that are perfectly fine. If the bot is unable to solve the user’s goal, its conversational ability will not carry any merit.

3. Voice vs. Text

Using voice doesn’t ensure a great user experience. First, understand whether or not your bot is capable of understanding the user. Even if it is capable of understanding, it may be challenging to listen to the user due to a noisy environment/incoherent speech patterns, which can lead to a frustrated user who has to repeat themselves too many times.


4. Single turn vs. Multi-turn dialogue

Single turn dialogue involves a simple request or question to which the bot responds with the information or confirmation. The individual speaks once, and the bot replies once (not including niceties).

Multi-turn dialogue requires a to and fro between the user and the bot, as it may involve many questions and the user may be looking for deeper/broader/ comparative data/ step by step process.


5. Error Handling & Failing with grace

Errors are inevitable, but it is better to anticipate them and provide the user assistance to recover. Never leave them confused. In chatbots, this can often happen when the user types is an invalid query. Refine your bot to understand the question or teach the user how to interact with your bot by providing examples on how to phrase sentences or by simply giving notice of its limited functionality by offering options that are within the scope of the bot. You should also confirm what was said by the user and ask if it was correct.


6. On-boarding, Tips & Suggestions

It helps provide a better first impression. And yes they matter!

-Set the expectations of the user of how the bot can help.

-Be clear about what your bot can and cannot do.

-Lead the user through the initial conversation, to help them to discover features while making a value proposition.

-Do not humanize the bot. At no point should the user believe that it is a human chatting with them. People are more forgiving to mistakes committed by bots than errors by people.

-Although on-boarding helps its good practice to provide options contextually to the user to help keep them on track whenever there is a chance that the user doesn’t know what to do next.

-Provide tips on how the bot can be used to achieve various tasks, but do not overwhelm the user with instructions. Provide a couple of tips and ask if they would like to see more suggestions.


7. Mixing GUI into the conversation

The human brain has evolved further in interpreting graphic elements in comparison to interpreting and communicating with language.Graphic user interfaces have also advanced to allow manipulating onscreen objects by tapping, pinching, etc. Most instant messengers provide a way to bring in contextual cards based GUI. Use these to show options/information visually, which would take longer to explain with words or maybe simply too difficult to visualize. For eg. Options & Description of apparels or a Map. Use buttons when providing options so that the user can quickly select an item.


8. Simplicity & Personalities

Stick to simple language and be concise. Never use jargon that can confuse the user. Test the bot Giving bots a personality makes it fun to talk to, but keep in mind that the personality is relatable to the user. Make sure the bot never goes out of character as it breaks the experience for the user.


Testing & Validations

-Does the bot easily solve the user’s problem with the minimum number of steps?

-Does the bot solve the user’s problem better / easier / faster than any of the alternative experiences?

-Does the bot run on the devices and platform the user uses?

-Is the bot discoverable? Do the users naturally know what to do when using it? (refer Onboarding for bots)

-Do not assume any correlation between a bot’s intelligence and user adoption of the bot.

-Test the bot in the natural environment of the user. If the user may be driving (the voice would be preferred), or in a dark location medium and lower color contrast would be preferred, or if the background noises are too loud then typing and button options would be preferred

-Always allow the user to type in his comment, instead of forcing them to use voice. Whenever possible categorize the possible responses and provide them as button options to make it easier and faster. This method also cuts down on errors.

-Use the System Usability Scale as you would for UI/UX. Provide in chat rating/feedback options for improvement. (Do NOT force the user to provide feedback)


Microsoft's bot-service-design-principles:

"A great bot user experience does not require users to type too much, talk too much, repeat themselves several times, or explain things that the bot should automatically know."

The process of designing a bot is like a process of creating an app or website, so the lessons learned from decades of building UI and delivering UX for apps and websites still apply when it comes to designing bots. Whenever you are unsure about the right design approach for your bot, step back and ask yourself the following question: how would you solve that problem in an app or a website? Chances are, the same answer can is applied to bot design.


Factor’s that do not guarantee a bot’s success.

When designing your bot, be aware that none of the following factors necessarily guarantee a bot’s success:

  • How “smart” the bot is: In most cases, it is unlikely that making your bot smarter will guarantee happy users and adoption of your platform. In reality, many bots have little advanced machine learning or natural language capabilities. Of course, a bot may include those capabilities if they’re necessary to solve the problems that it’s designed to address. However, you should not assume any correlation between a bot’s intelligence and user adoption of the bot.
  • How much natural language the bot supports: Your bot can be great at conversations. It can have a vast vocabulary and can even make great jokes. But unless it addresses the problems that your users need to solve, these capabilities may contribute very little to making your bot successful. In fact, some bots have no conversational capability at all. And in many cases, that’s perfectly fine.
  • Voice: It isn’t always the case that enabling bots for speech will lead to great user experiences. Often, forcing users to use voice can result in frustrating user experience. As you design your bot, always consider whether the voice is the appropriate channel for the given problem. Is there going to be a noisy environment? Will voice convey the information that needs to be shared with the user?


Factors that do influence a bot’s success

Most successful apps or websites have at least one thing in common: a great user experience. Bots are no different in that regard. Therefore, ensuring a great user experience should be your number one priority when designing a bot. Some key considerations include:

  • Does the bot quickly solve the user’s problem with the minimum number of steps?
  • Does the bot solve the user’s problem better/easier/faster than any of the alternative experiences?
  • Does the bot run on the devices and platforms the user cares about?
  • Is the bot discoverable? Do the users naturally know what to do when using it?

Note that none of these questions directly relates to factors such as how smart the bot is, how much natural language capability it has, whether it uses machine learning, or which programming language was used to create it. Users are unlikely to care about any of these things if the bot solves the problem that they need to address and delivers a great user experience. An excellent bot user experience does not require users to type too much, talk too much, repeat themselves several times, or explain things that the bot should automatically know.