Getting started with conversational UI design can be a bit overwhelming. What is the best way to design a chatbot interaction? Do you start with an information architecture, a flow diagram, a list of use cases or something else? Are there any special tools that you can use…

After spending months building a messaging platform, interacting with chatbots and designing chatbots here are my learnings in form of a quick step by step guide to chatbot design.

There are different kinds of chatbots. This article focuses on what I call “Transactional Chatbots” — Bots that help users perform certain tasks based on user input.

For purposes of this article, let’s assume we have gone through the activity of defining the key user outcomes, supported use cases and most importantly we have good reason to believe that conversational UI is the best solution for the problems we are trying to solve. If you want to read more on these topics, please read my earlier article —

Now, to the design steps.

1. User Intents — Scope

Start with defining key user intents that you believe your chatbot will encounter and the ones you should support. The scope is key here. Carefully define what you should cover and what you will not.

Let’s take an example. Say, I want to design a Reminder bot. The key user intents could be:

Set a reminder for something I fear I might forget Set a reminder for someone else who I think might forget the task View upcoming reminders Edit/ Cancel reminders

For purposes of this activity let’s focus on setting simple personal reminders, viewing and editing them which means 2 is out of scope.

2. Key user inputs

Next, list down user inputs required for each intent you identified in Step 1. This will help you with Step 3 (Assistant) and Step 5 (Script). You might want to refine the user inputs after you have gone through the other steps. So, don’t worry about creating the perfect list.

As an example, here are the key inputs for “Setting reminders”

What to remind Date for the reminder Time for the reminder

3. Play Assistant

Since chatbots are conversational, what better way to define the interactions than based on an actual conversation. After you have identified key user intents and user inputs required for each intent, find a couple of friends who can spare some time for a quick activity. Tell them to think of you as an assistant who can help with <key user intent> and start a dialog. The user inputs you defined in the previous step should help you with the conversation.

If you plan to create a bot for a particular platform like Facebook or Slack, I recommend you to use the respective platform for this dialog.

While you are performing this activity, note down the dialog flows. This should give you a good understanding of the different ways users approach the task. Keep in mind though, this is not the exhaustive list of all possible ways your users will interact but a small sample to get you started.

Repeat this exercise for each intent.

In my case, I found a couple of colleagues who were more than happy to have an assistant. I asked them to assume I am someone who can remind them of tasks they don’t want to miss. Then, I asked them to think about the last few reminders they had set and replay the same scenarios.

Here is sample of what I got

Friend: Yogesh, remind me to call my doctor at 10 am on coming Thursday Me: Sure! I will remind you to call your doctor at 10 am on Thu, Apr 6th. Friend: Remind me to pick up Julian at 5:30 today Me: You got it! Reminder to “Pick up Julian” added for 5:30 pm today. Friend: And, on Monday to go to the meeetup after work Me: What time do you leave work? Friend: 5:30 pm Me: Cool! I will remind you to go to the meetup at 5:30 pm on Mon, Apr 10th Friend: Also, remind me to call mom every day at 4 Me: I will remind you to “call mom” at 4 pm every day

As you can see from this example

People tend not to follow a template when they are conversing. Each of those sentences is different. They assume you are intelligent enough to deduce some things like am/pm based on common sense — “…call mom everyday at 4” They might miss key inputs like time and date — “…go to the meeetup after work” At times they will misspell words — “…meeetup…”

I did a similar activity for all the other intents I had listed in Step 1.

4. Design Flow

Use the dialog flows you documented in Step 3 to create flow diagrams for each intent. Creating flows helps you articulate and critique the interaction early on.

Here is a flow I created for “update reminders”.