A conversation on chatbots with IBM Developer Advocates
Published: 2019-03-05 02:43:00

---
title: A conversation on chatbots with IBM Developer Advocates
published: true
description: 
tags: 
---

I had a chance to discuss building usable bots on IBM Watson Assistant with IBM developer advocate and Node-RED rock star [John Walicki](https://medium.com/u/52ec2bf60ec1)at THINK 2018 ! See video above. 

### Let’s chat 🤖😓 → 10 tips to make your bot experience better !

I was absolutely amazed and terrified as everybody else when I saw the Google Assistant book an appointment at Google IO 2018. **_The bot seemed too natural_**. To the extent that I felt the person on the other end of the phone was being conned. Almost betrayed. It felt unfair. But **_I was also so excited at the same time to see this advancement in technology_**. That was a beta program at the time and I am sure that level of sophistication will raise further questions and considerations once it makes an entry in our daily lives. In the meantime, the **_dumb_** bots and Interactive Voice Response (IVR) agents we currently have to deal with can absolutely be improved upon. Most of us have talked to bots on the phone that guide us through networks of numbers and choices before putting us through to an agent anyways :(.

I recently hosted a meetup with the good folks at Twilio, [Lizzie Siegle](https://medium.com/u/ad6228514788)and [Nupur Vilas Bhade](https://medium.com/u/d0270c84697c). One of the questions at the meetup was “ **_what is the best way to increase bot usage and interactivity ?_** ”

> **_Back to the basics !_** The tools we use make it sound simple to build a bot and yet majority of bots end up in bot landfill. Yes, this is a real thing. I am listing ten tips that will help build a usable bot over time and avoid the pit !

![](https://cdn-images-1.medium.com/max/1024/1*OLw9U3rLbcUXWWc-KhOMwA.png)<figcaption>This is where most of the bots live today 😧</figcaption>

#### **TLDR**

![](https://cdn-images-1.medium.com/max/1012/1*s4YWOG6lyzoRMeE-LjDBJw.png)<figcaption>10 tips to make your bot usable</figcaption>

#### I. Set Expectations

This is a really important first step. Your users need to know what to expect. My mantra normally is “ **_promise low, deliver high_** ”. However, in this case, **_promise what you can deliver,_** nothing more and nothing less. It is nice to have some easter eggs in your application, but your user needs to understand “ **_what is possible_** ” even before they start using the bot. There are a couple of instances when you need to set expectations:

- on-boarding a new user
- welcoming back an existing user after some time has passed
- when the user has tried to express frustration or is asking for help

Here is an example that I shared with my audience …

> Hello, my name is Eden. I am a bot with a human name ! I am still learning your ways. You can ask me to set a reminder, send a message to your friends or create a calendar entry. If you are unsure or feel stuck, ask for help anytime.

You can see Siri, Google Assistant and Slack bots provide a similar first time help. They tell you what you can do and give you examples.

![](https://cdn-images-1.medium.com/max/1024/1*JhFd5el7iErIRX4yGLWGLg.png)

#### II. Use Natural Language Processing/Understanding

This is my pitch for using a good NLP engine for your bot. Not a rules based engine, but actual an AI engine that tries to understand what the user is typing/saying. Granted, there is much work to be done to make NLP on par with other areas of AI like Visual Recognition. That being said, **_use what is available_**. The current commercial and opensource NLP services and solutions provide features like _entity extraction_, _sentiment analysis_, _relationship finder_, _taxonomy extraction_, _semantic feature analysis_, _keyword analysis_ and _identifying high level concepts and hierarchies_. There are many ways to utilize these features in your bots.

For example, if a bot is asking for a day to book an appointment, the user will more likely say something like “ **_tomorrow_** ”, “ **_next Friday_** ” or “ **_the 10th_** ”, instead of saying something like the “10th of March, 2019”. The bot should be able to convert these phrases into dates and clarify any ambiguity with the user. So if the user says “the 10th”, the bot could respond with “Do you mean the 10th of March ?”. If the bot is unable to understand the user, it should be able to extract keywords/concepts and entities that the user may be talking about. This will help humans to improve the bot in the future. Another example is parsing a complex sentence to gather multiple pieces of information. If the user says “I want to book an appointment to see Dr Who at 8pm tomorrow”, they have provided you with three key pieces of information at once and the bot needs to be able to extract all of them from the sentence.

> Dr Who

> 8pm

> tomorrow

#### III. Remember historical context

As [Lizzie Siegle](https://medium.com/u/ad6228514788)put it very well at our IBM / Twilio meetup, a bot should act like your friend. My friend knows things about me and has a historical context and memory about our conversations. My friend knows my likes and dislikes and knows what to get for my birthday (not always !). A bot should know enough about me without being too creepy 👀. A simple example is remembering user’s most frequent order or the last order and making it easier to order again. This is a short investment in a database or cloud store for a big return in terms of user satisfaction and faster intent fulfillment times.

#### IV. Handle off-topic/related questions

This is a fairly common example.

> Bot → what time would you like to come in ?

> User → What time do you open ?

> Bot → I did not understand that time. What time would you like to come in ?

> User → _🤦🏽‍♀️_

Instead, help the user finish the task at hand. A more enjoyable conversation could look like

> Bot → what time would you like to come in ?

> User → What time do you open ?

> Bot → We open at 6am. The first appointment on the day you requested is at 11am. Would you me to book it or look for another time ?

> User → Book it ! _🙆🏽‍♀️_

#### V. Give the user a way out.

Your user may want to take a pause or want to exit the process at any time while talking to you. The bot needs to elegantly give the user a way out. But at the same time, the bot should remember where the user left if they want to continue in the future. The worst situation is for the bot to keep going in a loop trying to help the user, while the user is trying to leave.

#### VI. Welcome and award the user for coming back.

The best award is a practical and functional bot with a nice UI ! But seriously, give your users an incentive to keep coming back to your application/bot. This could be something related to your product/solution or perhaps you tie in with an external company. I have not seen too many bots offer such incentives. If you have, please comment below. Would love to hear some use cases of this.

#### VII. Ask for help

Your users are not looking for an unpleasant experience. Ask your users how you can improve. I am not suggesting re-training on the fly, but you should be able to save user feedback for automatic or manual training later. Google assistant does this very well by asking the user if they results are relevant and let the user give feedback with 👍🏽 or 👎🏽. That is an easy click for the user but can be used to evaluate and possibly train the bot in the future.

#### VIII. Garbage in 💩 but no garbage out please !🌹

[Justina Nguyen](https://medium.com/u/c4a8e515af44) gives a very good example of users crashing bots by sending selfies instead of text responses. If the incoming message is not parsed/handled properly, this can cause your bot to die or cause serious damage 🤕. You need to think about the audience and where your bot is being consumed. If the keyboard has a microphone, is it possible that the user can send a voice message to your bot ? Is it possible that the user can take a picture with the phone camera and send that to you when you say hi ?

Shameless plug for Justina here ! She is an amazing developer advocate at [dashbot,](https://medium.com/u/a54dfb6e4cb9) covering chatbots, voice assistants and more. [We did an amazingly informative online meetup with her.](https://www.crowdcast.io/e/continuously-improve) [Check it out](https://www.crowdcast.io/e/continuously-improve) ! Additionally, Justina also wrote a [post on conversational Design that you can read](https://chatbotsmagazine.com/6-things-enterprises-need-to-know-about-conversational-ai-design-dae0decb2e7c).

#### IX. Use the base platform

The idea here is to really use the strengths and core competencies that the platform your bot will live on provides. Your bot can be answering the same question on different channels (facebook, slack, google assistant, etc), but the design and flow may look different in each of these platforms and it is important to

1. gel your user experience well with what is expected on that platform
2. use the UI, widgets and interaction design provided on the platform to your advantage.

I am working on a blog post with [Obaid Ahmed](https://medium.com/u/9f88ad77e538) at [botmock](https://medium.com/u/cf6211587994) on this very important topic.

#### X. Involve humans at the right time

The bot needs to be able to involve humans at the right time. This may mean letting a human agent take over the chat or transfer over to a human agent. [dashbot](https://medium.com/u/a54dfb6e4cb9) has a feature that let’s you do this and [Justina Nguyen](https://medium.com/u/c4a8e515af44) has explained more [here](https://www.crowdcast.io/e/continuously-improve).

Some platforms let you make phone calls or video calls from inside their eco system. For example Slack let’s you make a video call. Use that if your bot resides on slack. If that is not an option, you can always have an agent reach out at a later point, if feasible. **_Bottom line being that your user knows there is some backup, someone to talk to if the bot is not working out_**. That does not mean that the bot was useless. **_As long your bot is able to get human help before the user got frustrated, the bot still collected useful information related to the current intent_** that was passed onto the human agent. Have you ever had calls where the system collects a bunch of information on you and the human agent has to confirm the same information after you have spent 15 minutes with the bot ! 😭🙍🏽‍♂️👋🏽👋🏽👋🏽

That’s it folks ! I am available here and on twitter for a chat if you want to talk to a human for a change ! I work with [Max Katz](https://medium.com/u/bf01a11701fe) and [IBM Developer](https://medium.com/u/262975298e3a) to host interesting online and in person events. [Check us out !](https://www.meetup.com/IBM-Developer-SF-Bay-Area-Meetup)