I had a chance to discuss building usable bots on IBM Watson Assistant with IBM developer advocate and Node-RED rock star John Walickiat THINK 2018 ! See video above.
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 :(.
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 !
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.
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.
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 ! 🙆🏽♀️
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.
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.
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.
Justina Nguyen 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, covering chatbots, voice assistants and more. We did an amazingly informative online meetup with her. Check it out ! Additionally, Justina also wrote a post on conversational Design that you can read.
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
- gel your user experience well with what is expected on that platform
- use the UI, widgets and interaction design provided on the platform to your advantage.
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 has a feature that let’s you do this and Justina Nguyen has explained more here.
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 and IBM Developer to host interesting online and in person events. Check us out !