2 Conversational Design
This chapter covers
- Conversational Design
- Guiding Principles for bot design
- Common Bot Use Cases
- Personality Design
In the last chapter, we looked at what a chatbot is, how it works and the architecture of chatbots and we also got our hands dirty by building a simple echo chatbot. Before adding more functionality to our bot and turning it into a great health assistant that can help us with maintaining a good nutrition and have better work outs, we need to learn about conversational design and why it is important.
Conversational design is a huge topic by itself and entire books could be and have been written about it. In fact, there are entire job roles where the main job requirement is to be a conversational designer. Conversational design is a mix of technology and arts and the best conversational designers need to have a good understanding of human psychology, creative dialog writing and common UX patterns, as well as the technological aspects of it. It is beyond the scope of this book to have an in depth look at all the facets of conversational design; instead in this chapter we will look at the basics of conversational design and learn enough about it to enable us to build a chatbot for any use case.
2.1 What is conversational design?
Conversational design is a new area of design that is concerned with the User Experience (UX) of chatbots. Just as User Experience plays a huge role in the success of applications which have a traditional GUI based interface, conversational design is very important in the case of chatbots. Conversation design deals with questions like
- How does a user accomplish a task in the bot? - This is a question which is common to both the traditional UX designers and conversational UX designers. The goal is to allow the user to perform or accomplish a task, e.g.: booking a flight or ordering a pizza in the least number of steps and in the easiest way possible. The reason being if it takes too long or is too complicated the users might not actually finish the task and may never return to the use the application. Traditional UX designers solve with the help of innovative interface design and aim to get you to complete the tasks in the least number of clicks. Unfortunately, conversational designers do not have the luxury, at least not at the time of the writing of this book, to redesign the interfaces of the chatbots in a major way, unless you have your own messaging application and have full control over it. However conversational designers can rely on UI elements like quick replies, image cards and context management to achieve this task. Needless to say, these elements are only available in text based chatbots which is what we will be focusing on in this book. We will take a look at these different approaches and elements that a conversational designer can use when we discuss the guiding principles in section 2.3 in this chapter.
- How does the bot deal with failures? – This question like the previous one is also common to both traditional UX and conversational UX designers. In general, the goal is to ensure that in the case of a failure at some point during the application, the user is informed of the failure with a brief but good explanation of what went wrong and is also presented with steps to rectify the failure. Traditional UX designers generally use error screens or pop ups with information about the failure, along with steps or links to solve the issue. Unfortunately, conversational designers do not have this freedom due to a lack of interface flexibility as we are using messaging applications created by others. In the case of chatbots apart from system failures in the backend like a server crash or wrong input, we might also face a different kind of failure which is specific to conversational interfaces. This is the case where the bot fails to understand what the user said and so can’t act on it. Even though it is not completely accurate, we can draw a corollary between this and a user visiting a link which doesn’t exist in case of a website. A website UX designer in such a case can use a 404-error page with links back to the website. A conversational designer however has only three choices regarding handling such failures. They are
- Do nothing.
- Tell the user you didn’t understand what they said.
- Ask the user a fallback question based on the context and try to understand what they were saying. You can also use this to retrain your chatbots machine learning models.
Clearly the first option is terrible and should be avoided. It actually fails to accomplish all the goals that this case requires. The second option is what most of the current bots use and it has become sort of an inside joke inside the industry that the most common chatbot response is “sorry, I do not understand”. This is better than the first option but if this is the most common reply from your bot, users might get frustrated and block your chatbot. The third option is arguably the best as it is the closest to what a natural conversation looks like. If you are talking to a person and don’t understand what they say, instead of just asking them to rephrase you probably ask a confirming question like “Did you mean x?” based on the context of the conversation. The idea is to mimic this behavior in chatbots. In fact, I believe so strongly in this approach that we have made this a core feature at ozz.ai, the NLP company I work at. I like this approach because I think it’s very similar to how humans would react if they couldn’t understand a question. This helps the chatbots feel more human like which is one of the important goals of building a chatbot.
- How to onboard new users? – When a new user signs-up or starts using your product, it is important to have a clean onboarding experience and help the user quickly perform the setup that might be required and give them information on how to use the application. Onboarding is the process of guiding a new user to start using your application and help them with setting up all the requirements. For example, in case of Facebook, the onboarding process is to help you to add new friends and guiding you to put up your first post. A good onboarding experience helps a user quickly understand the goal of the application and get them started on using it smoothly. Having a bad onboarding experience can be catastrophic to any application as users might leave and never come back. This problem is further compounded in the case of a chatbot. A conversational designer can’t rely on html screens or graphical interfaces that help easily onboard new users. They need to come up with a conversational design that helps the user clearly understand the capabilities of the bot and how to use it.
2.2 Why is conversational design important?
One of the big promises of chatbot was that it can help your brand or product offer a human and personal interface for users to interact with your system. But human conversations are complicated; they have various styles of expression, non-verbal signals, emotion, and other nuances that communicate a lot of information. To replicate all of this in a chatbot needs more than just a really strong AI that understands the bot or a rule based system with very complex rules for different use cases some of which we will look at in section 2.4. That is because communication is a two-way street. It’s not just about how good your bot is at understanding questions, it’s also about how it is able to respond to them. And by responding, I mean the language it uses, the implied tone behind the response, and other crucial subtleties.
Designing for conversational applications requires a fundamental shift in approach to UX. While traditional UI relied on use of visual elements, the primary elements to work with in conversational design are words and the flow of the conversation. The flow of the conversation can be understood as the process of how the conversation goes from one step to another. We will learn more about conversational flow and designing it in section 2.3.4. The importance of conversational flow design is pretty obvious if you think about it. The most important thing in creating a conversational app is the actual design of the conversation. If you don’t design a proper conversation flow or path, the conversations won’t feel natural enough and it will disappoint or frustrate the users.
Another big reason conversational design is important is that most users have a lot of experience in using traditional interfaces but conversational interfaces are comparatively newer and because there is no way to rely on visual elements to explain things, a poorly designed conversational interface is like looking at a blank screen without any information about the application. Just imagine this scenario, a user opens a chatbot which happens to be poorly designed. The user is literally just looking at a blank screen asking him to send a message to start a conversation. There is no way for the user to know what the bot is capable of, how to use it and what to say. In this case the user might take a chance and say “Hi”, to which in the worst case this bot doesn’t respond because it wasn’t designed to handle this conversation or replies with something generic like “Hello”. This leaves the user confused as to how to use the bot. The left side of Figure 2.1 shows an examples of such a bot.
Figure 2.1 A poorly designed bot that starts with a blank screen leaves the users confused about how to use it

On the other hand, a well-designed bot would start off the conversation by telling the user how to use it, what it does etc. and guide the user in using the chatbot. The right side of Figure 2.1 shows a bot that provides clear instructions on how to get started using the bot.
The goal of any application is to have more and more active usage and it is the same with chatbots. As chatbot developers one of our primary aims is to get more users to spend more time talking with our bot as possible. For this to happen bots must be engaging, useful and not confusing. A good conversational design is the best way to ensure all three.
2.3 Guiding principles of conversational design
Now that we understand what conversational design is and why it is important, let’s look at some practical guidelines to help you design and build a great conversational experience. These guidelines are based on the lessons I learnt while building chatbots both for personal and professional purpose. But most of these guidelines have been suggested on forums and in blog posts by other chatbot developers who have had significant experience in designing and developing chatbots. I must however warn that following these guidelines is not the completion of the conversational design process, this is only a good head start. Conversational design is an endless evolving process where you try to constantly learn from user behaviors and improve from them. Having said that let’s get to the guidelines, most of which apply to app and web design as well with some subtle differences that we will look at.
2.3.1 Start with the purpose
The first step in the conversational design process should be to define the core use case or functionality of your chatbot. The rest of the design process very strongly depends on the outcome of this first step. Having a clear purpose will also help you to keep the bot simple and easy to use. All the best applications, not just chatbots, have a clear core purpose or functionality around which the entire application gets built.
The purpose also serves as your north star during the design and development process. Anytime you are in doubt about making any additions or changes you can look back at the core purpose and see if this helps in improving the experience or usage of the core purpose. A clear and precise purpose is even more important in designing chatbots, because they lack a rich visual interface. This means that it might not be immediately clear to the user what functionality your bot provides.
It is also important to communicate this core use to your users in an effective way. Users need to be informed about the core functionality of the bot during the onboarding process. It is also a good option to have other ways for users to learn the core use apart from just during the onboarding process. For example, you can utilize elements like menus and quick reply buttons that tell the user what the bot is about and also handle conversational queries like “what can you do?”, “help?” etc. and respond to them with instructions about the core functionality and how to use it. Another smart way to inform users about functionality and usage is to use a failure response like “Sorry, I couldn’t understand” and follow it up with information about the functionality of the bot and instructions on usage.
While defining the core use of the bot it’s important to be very specific about it. A non-specific purpose could be very confusing to both you as a developer and to the users, as well. A bot that tries to do too many things or has a very broad and generic purpose often ends up being confusing and can lead to user disappointment. An example of a vague core use is – “This bot will make people smarter”. If that is the core purpose, imagine a scenario where a user starts a conversation with the bot and says “hi”. The bot then responds with “Hi, I can make you smarter”. This just leaves the user confused, and there is no way for the user to figure out what the bot actually does, or what he’s supposed to do next. The user has no idea how the bot makes them smarter, in what ways it makes him smarter, or how they should use the bot to get smarter. Figure 2.3 shows a sample conversation in a poorly designed bot with a generic purpose on the left side and shows how the same bot could look like with a well-defined purpose on the right side.
Figure 2.2 Sample screenshots of a vague bot purpose definition on the left side which is confusing for the users and a more precise and clearly defined bot purpose on the right side which helps the users easily get started in using the bot.

As you can see from the examples in Figure 2.3, the second example on the right side has a clear-cut purpose which is “To make people smarter with quiz practice”. It also communicates this purpose clearly and asks the user if he wants to start a game of quiz. At this point the user is clear about what the bot does, what it is about and what his next step should be. This is a much better case as he is less confused and is probably going to spend a lot of time playing quizzes on it, which is what the developer would have wanted.
In the case of our health assistant bot, “Health Assist”, we can define the purpose as, “A health assistant that tells you dietary information about food and gives you instructions about doing some common exercises”. A generic and less descriptive purpose in this case would be, “A health assistant to make you healthier” which is bad because the user has no idea what the bot does specifically or how they could use the bot.
2.3.2 Understand your users
The golden rule of User Experience (UX) design for both conversational and traditional purposes is to understand the user. It is important to understand the demographic of users you are targeting because your conversational flow will depend on who your bot is catering too. For example, if your demographic is young people between the age of 15 – 25, you would want the bot to mimic their style of communication. This could mean heavy usage of emojis, gifs and popular social media abbreviations like “lol”, “brb” etc. while replying to the user queries. In comparison if your target customer is someone who is above the age of 50, you probably want to keep it simple and more formal.
Additionally, it’s also important to understand the different user roles that might be involved in using your bot. For example, the two roles could be new or returning users. New users might need some hand holding while returning users are probably going to be fine on their own. This means that you will have to make different conversational flows based on the user role.
In the case of the health bot most of our users will be in the age range 15 – 40 based on usage reports of apps in the same category which can be found on the internet. So we will use a semi-formal tone with a few emojis here and there. Another approach could be to extract the user age from the metadata, and use a response based on it. We can be informal with users below the age of 25 and be more formal with users above the age of 25. These numbers are arbitrary and it is up to you as a conversational designer how you want a user from a particular age category to perceive your chatbot.
2.3.3 Handle generic conversations
This is something that not everybody agrees on and some people believe that your bot should stick to one task and do it well and not worry about other things or you might confuse the user. But I personally believe that any chatbot should at the least be able to have some generic conversation like small talk, examples being “How are you?”, “What are you up to?”. There is a very simple reason for this; years of conversations and texting on phones have accustomed us to start a conversation with a greeting like ‘Hello’. At the least your bot should be able to respond to that. It should also be able to respond to other common phrases or queries like “what is up?”, “how are you?”, “thanks” etc. This is not very hard to set up and goes a long way in making a chatbot seem more human and natural. However, it’s important to not get carried away with designing generic conversations. Once you have the bare minimum phrases handled, you should focus on improving design for the core purpose and only get back to this once that is done. The bare minimum phrases your bot should be able to handle are
- Hello, Hi, Hey, etc.
- What is up, Wassup, Sup, etc.
- How are you, how have you been, how are you feeling, etc.
- Good morning, Good afternoon, Good evening, Good night
- Bye, Good bye, talk to you later, etc.
- Thanks, thank you, Thanks a lot, etc.
Also it’s generally better to avoid asking rhetorical questions or follow up questions to generic phrases, for example, replying with “I feel great! how about you?” to a query like “How do you feel?”. This is because most users tend to respond to these questions any way even if the bot is just being polite. And if you haven’t designed your bot to handle the replies to these follow ups, it can lead to some embarrassing failures. Figure 2.5 shows a sample conversation where a follow up question leads to a failure.
Figure 2.3 A sample conversation showing a failure to a follow up question which is rhetorical in nature

2.3.4 Designing the Conversational Flow Design
Conversational flow is a high-level representation of how the conversations happen in your chatbot. It represents a sequence of steps that need to be followed for a task. These could be as simple as a pair of question and answer or a complicated tree diagram with lots of branches in the conversation. To start you can use anything at your disposal like white boards, sticky notes, design software, etc. I personally find it very useful to draw out the conversational flow for the bot on a piece of paper that I can revisit later on, and which also serves as the blueprint for building the chatbot. But it makes little difference what medium or tools you use and is based purely on personal preference.
Figure 2.6 shows a simple conversational flow diagram where the first block represents the question being asked and the next block represents the answer that the chatbot will give to that question.
Figure 2.4 A simple conversational flow diagram

Figure 2.7 shows a more complex conversational flow diagram with a branched conversation where the conversation might branch out to different responses based on choices or answers given by users. The first block represents the question that a user might ask to the chatbot. The decision block next to it is the chatbots response. It asks the user to make a choice and based on the choice the chatbot replies with an appropriate message.
Figure 2.5 A complex conversational flow diagram with branched flow of conversation where the conversation branches based on whether the user chooses a small or a large pizza

We can keep adding more nodes which are user messages or bot responses and decision points where the bot asks a question and the response to that question dictates the conversation flow to our conversational flow diagram to add more functionality to our chatbot. A conversational flow design is necessary regardless of which bot architecture you use. The only difference would be that the queries coming in can take multiple forms if it’s a AI based approach, while they are fixed if it’s a rule based approach.
Let’s start defining a conversational flow for some of the goals of the Health Bot. We will start with very simple things and add more complexity as we proceed in the upcoming chapters. For now, let’s make our chatbot handle the following queries:
- Hi
- Goodbye
- Thanks
- What is the fat content in a cheese burger?
- How to do a push up?
For now, we have 3 generic queries and 2 queries which is based on our specific use case. It’s a very limited set but it’s simple and is a good starting point and we can build on it later. Also note that the responses to the 2 queries specific to our use case are not very helpful or even the correct responses necessarily. But for now let’s just use them as placeholder responses and we will build the functionality to answer these questions correctly in later chapters. The conversational flow design will look as shown in Figure 2.8
Figure 2.6 Conversational flow design for few of the queries to be handled by Health Assist Bot where the top box represents the question asked by the user and the bottom box represents the answer.

2.3.5 Guide new users
Because there are no familiar visual elements, new users might be confused when they first open your chatbot. Typically, in case of a traditional application the users might find some familiar elements like menus, buttons, links etc. and can use these to figure out how to use the app. But on a chatbot new users need to be guided and taught how to use the chatbot. Chatbots are not very intuitive to most users yet because they haven’t been exposed to them much. So, it’s important that we start off by prompting the user about next steps they can take. Chatbots need to do some handholding and guide the user in using the bot.
In general, it is best to give a quick introduction about the bot, the company and the purpose of the bot along with prompts or buttons that let the user perform the next step. Figure 2.9 shows a simple example of a bot informing the user about its primary purpose and prompting the next action.
Figure 2.7 A sample conversation of a bot telling about its purpose and prompting the user for next queries they can make by using prompts presented as quick reply buttons they can click on.

As shown in the example in Figure 2.6 it’s also important to keep the introduction and the prompt simple and to the point and avoid confusing the user.
2.3.6 Focus on the response creation
As we discussed earlier one of the key skills of a conversational designer is creative dialog writing. This is because the response dialog plays a huge role in your chatbot. The tone of the response, the words used etc. define the brand and the product. In general, here are some principles that need to be followed while creating responses
- Use simple language and stay concise.
- Avoid long messages and if you can’t avoid them for a particular case, break the response into multiple smaller messages rather than one long wall of text.
- Keep the conversational flow as natural as possible in a way that mimics human conversations.
- Use typing indicators if some processing is needed before sending a message. Most messaging applications have some form of letting the users know that something is being typed by the person on the other end, in our case the other person is a bot. For example, messenger uses an animation with dots as shown in Figure 2.10. Think of the typing indicator as the chatbot version of loading screens.
- Avoid replying with open ended and rhetorical questions of the form “How was your day?”, “How are you doing?” as it is very complicated to handle answers to these questions because there are infinite possibilities of how a user could respond to such questions.
Figure 2.8 A screenshot of a chatbot using typing indicator while processing the request to let the user know that the result for their query is being retrieved or calculated.

2.3.7 Use available visual elements
Most of the platforms provide some kind of visual elements to be used inside a chatbot. For example, messenger lets you use cards with images and buttons. On messenger cards are visual elements that can be used to send structured messages which include an image, title, subtitle and up to 3 buttons. Make use of these items whenever you can to avoid user confusion and to provide an easy way to use the service. Figure 2.11 shows a sample sports news bot which uses cards with images to give us more information about the article without us having to open the article. It also uses a menu for quick actions that can be performed using the bot and makes use of quick reply buttons to prompt next inputs from users.
Figure 2.9 A sample bot that makes use of visual elements like cards with images, a menu and quick reply buttons to prompt next input from users

It is important to use these elements because in some cases it can be very frustrating to type out long messages when a simple button click or menu choice would be more efficient. It is important to consider if you really need free text option or if a button choice is enough to handle a given case. If your bot is based around simple use cases which can be handled with buttons, for example booking a table for dinner or ordering pizza, you should always choose to use buttons but if there is a need for free text like asking for customer support help, you will need to use a bot with free text. If there is a choice its always better to choose to have visual elements like buttons as this both reduces the possibilities of error and also makes it easier for the users to interact with the chatbot. In practice, most bots use a combination of both these approaches.
2.3.8 Make it non-robotic
Even though most of the times chatbots use canned responses to queries, it is important to make the responses feel more human and non-robotic. An ideal but more complicated way of doing this would be to use Generative Artificial Intelligence models that can synthesize text messages in natural language. This kind of an AI model would be able to create new natural language texts from raw information like humans do. However, this technology is not advanced enough yet to be used publicly in a reliable way. Such an AI would be able to create a natural language reply from data like take a JSON about weather data and generate natural language responses using the data in the JSON. For now, we will have to write code to take data and use template strings to fill in data from the JSON and give natural language responses. A simple hack to make your chatbots feel less robotic is to have multiple template responses for queries and randomly choose one of the responses. This will make sure the chatbot doesn’t reply with the same message all the time and make it less robot like.
2.3.9 Use Context
This is challenging to achieve and many chatbots struggle with it but it is important to try to maintain some kind of context during the interactions between a chatbot and a user. This could be as simple as remembering entities or parameters they have mentioned previously and using them to solve a future query rather than asking for user input again. A simple example of this is shown in the screenshot on the right side of Figure 2.12 where the chatbot maintains context about the city being talked about and doesn’t ask for an input again. In contrast the screenshot on the left in Figure 2.12 shows a chatbot that doesn’t maintain context and asks for input again.
Figure 2.10 On the left a chatbot that can’t maintain context and asks for information previously mentioned in the conversation and on the right side a chatbot that can maintain context and remember the city the user was talking about.

2.3.10 Handle non-text queries
Although text plays a huge role in a chatbot and it important to handle them correctly, sometimes users might send non-text based queries like images, audio clips, emojis, videos etc. For example, users might send customer support bot, an image with a screenshot of the error. If not handled properly in the best case your bot responds incorrectly to these queries and in the worst case if you have not prepared your code to handle such formats appropriately you might have a server crash--which is, of course, terrible.
The ideal way would be to have an ability to use these non-text queries and have some method to understand them and reply appropriately. This is easy to implement for simple formats like emojis where you can translate the emoji into some text and use it but is more difficult for audio, video or image clips. If these formats are important for your chatbot you can use some AI method to extract information from these formats and respond. But in most of the cases you can simply let the users know that you do not have the capability to handle these formats. It is important to note that even if your chatbot cannot generate an accurate response to an image query, your bot should be able to figure out that an image was sent and not a text. Failure to do so might end up in your bot treating an image which is a collection of byte data as text and this can have very bad consequences like replying with something unrelated to the query or in worst case cause a system crash.
2.3.11 Care about the details
To provide a rich conversational experience that feels very natural and human like you need to really care about the details. Some examples of details that matter are:
- How does your bot handle generic questions? - As I mentioned before, your bot should be able to respond to simple questions like “How are you?”, “What is your name?”, “What can you do?” and other such small talk based questions as users frequently ask such questions.
- Does it use the user’s information like name inside responses to make them more personal? – Most messaging channels provide metadata about the user sending the message. Using this information can make the bot feel more personal. For example, there is a difference in replying with “hello” and “hello Akshay”. The latter example makes the bot feel more personal and natural.
- How does the chatbot respond to abusive terms? – Sometimes when the bot faces any failures in understanding the question or correctly answering a question, users might get frustrated and use abusive terms in the message to show their frustration. As a bot developer/designer you can use these situations to your advantage because in its own form this is just user feedback. If your bot can use humor to diffuse the frustration and even guide the users with information on resolving their query, for example by providing examples of how they can rephrase their request then you can convert the frustrated user into a loyal customer for your service.
All these details play a huge role in improving or worsening your chatbot’s user experience.
2.4 Common use cases
Chatbots in their current form are still a relatively new technology from a usage and adoption point of view. Many companies and developers often ask what is a good use case for a chatbot, whether they should build one, how to design the experience. In this section, we will take a look at a few common scenarios for chatbots and also study the design patterns behind these bots. Studying these use cases will help us understand a few design aspects and give us a clear idea of the design pattern to be used based on the problem that the chatbot is trying to solve.
However, keep in mind that this is in no way representative of all the use cases that chatbots can be used for and this is an evolving field. There will be new types of scenarios for which chatbots can be built in the next few years as the technology evolves.
2.4.1 News and alert bots
News and alert bots are chatbots that provide as the name suggests regular news reports or other alerts inside a messaging application based on the topics of interest for the user. The alerts are generally topics that the user might find useful or is interested in knowing for example weather or sports scores. These bots generally perform better than their mobile application counterparts because firstly you don’t have to download a separate application and also the notifications don’t force you to open a new app. The notifications inside messaging applications are more interactive and the users can read more content directly inside the messaging application through webviews which are HTML pages that can be opened from inside the messaging application. Figure 2.8 shows an example of Machaao, a chatbot that sends alerts about cricket scores. An example of news bot is the one shown in Figure 2.14
Figure 2.11 Machaao – a chatbot that sends regular alerts with cricket scores and also provides related information, uses cards with images and buttons for more information or to share the content and other quick reply buttons

As you can see in Figure 2.14 news and alert bots generally use cards to display information with prompts to show more of the information and to share the content. They sometimes use images as well inside the cards if there is any visual information. The general design pattern to learn from this is that whenever you have want to send content which the users have to open to read, it’s a good idea to use cards with a title and some gist of the content with buttons and prompts for user.
2.4.2 E-Commerce bots
Another popular category of chatbots are e-commerce chatbots. These are chatbots that let you shop for items right from your messaging applications. The advantage with such bots is that they make shopping more intuitive as you can now use conversations to buy or order things just like you would in a real store. For example, you could just say, “show me black running shoes from Nike,” and the chatbot could show you a list of shoes that match your criteria. If we had walked into a real store that is exactly how we would have asked a sales person there to show us a list of shoes which is is very intuitive and natural. In comparison if we were using a mobile application or a website we would have to use a combination of dropdowns and menus to filter the product by different parameters. Figure 2.15 shows example of Fynd – an ecommerce chatbot and the process of searching shoes in it. Figure 2.16 shows the example of filters and menus on a traditional e-commerce website to show a comparison.
Figure 2.12 Fynd – an example of an E-Commerce chatbot that uses a welcome message with clear instructions on using the bot and uses cards with images of product presented as a horizontal scrollable list

Figure 2.13 A traditional e-commerce site with traditional menu with multiple menu items that users have to change to find products

If we look carefully at the bot shown in Figure 2.15 we can learn some interesting design patterns. The first message sent by the bot where it introduces itself, interestingly the designers of the bot chose to give it a name ‘Fify’ to make it feel more natural and human like. It then also tells us about the purpose of the chatbot and gives us a sample phrase to use although not showing a design pattern specific to e-commerce bots is a great example of user onboarding. It is clear, to the point and tells us clearly about the kinds of phrases we can use. Another design pattern we can observe is the use of scrollable cards to display a list of items based on our query. This is a good pattern to follow. Whenever you need to show a list of items you can use the scrollable cards which appear as a carousel as shown in Figure 2.15 where there is a horizontal list of scrollable items for these items with buttons for getting more details or a list of similar products. Using a list of scrollable cards is better than sending multiple messages for each item as an individual card as that will annoy the users and can also be considered as spam.
2.4.3 Personal Assistants
Personal assistants are the most obvious use cases for chatbots. The idea of having a virtual personal assistant has been super popular even in popular media with many mainstream fiction movies showing the main characters and their virtual personal assistants like Jarvis from the movie Iron Man. There is also a growing market for personal and professional productivity based bots. These personal assistant bots could assist you in learning a new language, improve productivity through smart to-do lists, manage your calendar etc. Some of the most popular conversational applications like Siri, Cortana and Google Now fall in this category. We could have personal assistants for all facets of life very soon. They could help you manage your finances, stay relaxed, stay healthy, learn new things etc. The bot we will be building throughout this book, the Health Bot which is a health assistant also falls under this category. Figure 2.17 shows a sample of a few messages sent by a personal assistant bot zoom.ai which helps you manage your calendars.
Figure 2.14 Sample messages sent by a personal assistant bot

A personal assistant by definition needs to be personalized for every user and also try to create an emotional connection. Zoom.ai shows a great design pattern of creating personalization and trying to be fun and friendly while also trying to guide users in using it. However, care needs to be taken to not be too spammy or the users might block or report the bot. In the fig 2.17 we can look at the timestamps of the messages to see that the messages are sent once every month and not very frequently. Spammy bots keep sending multiple messages regularly without the user requesting for any information or starting a conversation.
2.4.4 Business extension bots
Another popular use case for chatbots is to be an extension of an existing business offerings. Companies that already have apps or websites are starting to offer some or all of their products features through a chatbot. This is very lucrative to businesses due to the App Fatigue. It is getting increasingly hard to get people to install new apps on their phones. However, a chatbot doesn’t need to be installed and can work directly within most of the messaging apps that most people already have on their phones. Figure 2.18 shows an example of a HR bot that lets people apply for a leave at work
Figure 2.15 A sample of a business extension bot that lets you apply for a leave, for example a sick leave at work

Bots in this category often offer very specific services and hence the conversational design is to be direct and help the user achieve the specific tasks the bot was built for without wasting much time.
2.4.5 Team bots
Chatbots can also be built to communicate with multiple people in a group or a team rather than with one individual. These can be used to manage team tasks, help the team to stay informed about the work of other team members or any other team related tasks. These bots are generally deployed in team based messaging channels like Slack, Skype for Business and Skype Teams. Figure 2.19 shows an example of a team based chatbot by GitHub inside Slack. The GitHub chatbot can notify everybody inside a given channel or the whole team whenever changes are made to the GitHub repository. This can help the whole team stay up to date with the latest changes in the codebase. We won’t be building this type of bot as it doesn’t really apply to the case of our health assistant chatbot, but the development process is identical and the only step that is different is the deployment to a team messaging service which should be fairly straightforward using Microsoft Bot Framework.
Figure 2.16 GitHub chatbot inside Slack

2.5 Designing a personality for the chatbot
A bot is an extension of a company or a brand. When users talk to a chatbot of a certain brand it is like talking to a personification of the brand and hence it is very important to carefully consider the personality that we want our bot to expose. The personality of the chatbot directly relates to how the brand or product is perceived by the users. Personality can be the biggest differentiating factor across bots that offer the same service. Personality is reflected in the way a bot responds to queries or messages, the words it uses and most importantly how it handles something it doesn’t understand or is not designed to do. A banking chatbot which wants to have a very professional personality might handle such cases by letting the user know that it is not designed for it or doesn’t understand the message. Figure 2.20 shows an example of such a banking bot.
Figure 2.17 A banking bot with a professional personality

In comparison, a personal assistant chatbot that exposes a more casual personality would probably use humor to handle such situations. Figure 2.21 shows an example of such a bot.
Figure 2.18 A personal assistant chatbot with a casual personality

It is however very important to stay consistent with your chatbot personality design. If the personality is inconsistent this can create a confusing experience for the users and hence have a negative impact.
2.6 Summary
Conversational design is the process of designing User Experience for chatbots and it is important to make bots feel more intuitive and natural.
2.6.1 important steps of conversational design
- Defining the core functionality for the bot.
- Understanding the users and user roles.
- Teaching the user about using the bot.
- The design pattern to be used for a chatbot is dependent on the use case of the chatbot.
2.6.2 The guiding principles for building chatbots
- Start with the purpose or the base use case of the chatbot.
- Understand the potential users of the bot and design for them.
- Design to handle generic small talk based queries.
- Design the conversational flow to understand how the conversation might shape up and be ready to handle all use cases.
- Handhold and guide new users in using the chatbot.
- Pay attention to the words used and the tone used in the response and using typing indicators for queries that take a long time. It’s also important to avoid asking rhetorical questions.
- Use visual elements like cards, carousels, quick reply buttons available to you to provide the best experience possible.
- Make the bot non-robotic by using generative AI models or a collection of different responses and choose one randomly.
- Use context based on the conversation and try to avoid asking the user for information they might have provided earlier or which can be deduced from context.
- Handle non-text queries like emojis, videos and images by either processing them or letting the user know you can’t understand these formats.
- Take care of small details like using the users name and other info while responding and handling abusive terms in a way to reduce the user frustration to provide a good personalized user experience.
The personality of the chatbot reflects how the users feel about the brand or the product and hence it is important to pay attention to the personality our chatbot exposes.