How to Design and Build Bots that People Will Love!

A Conversation is, to (most) people, a very simple and intuitive process to understand. But for bots, conversations are hard. Really hard. But, investing the time to get it right will result in amazing experiences for your users, and help you reach your conversion goals.

Regardless of your bot’s main function, people will treat it like their own personal chat-minion. They will ask it about random things and try to start a quick session of small talk while they’re waiting for that next meeting. Small talk is awesome – it helps humans close leads, so why shouldn’t bots be great at it too?

We’ve learned a lot while developing Sava, our conference chatbot, and deploying him across Europe to meet a lot of awesome people.

Note: we will be using the term “bot” in this article to refer to products such as chatbots, Messenger bots, personal assistants, commerce bots and similar, regardless of the platform they are suited for.

Key points we’ll cover: how to onboard new users, how to converse with empathy, how to build your bot’s personality and how to think of every message as an app in itself. If you’re interested in a more technical look at NLP and sentiment analysis, check out the transcript of my talk at Voxxed Days Belgrade 2017.

Don’t Make me Guess

First off, the bot should never make the user guess. Your bot has a main set of functions and they need to be communicated to the user right from the start. This does not mean you need to write walls of text explaining various commands that the bot will understand. (Never do this, it is a horrible onboarding practice and leads to bad results.)

Instead, provide the user with an interesting onboarding experience and guide them through the bot before leaving them to explore on their own. Conventional web and mobile apps do this as well.

With Sava, we utilize rich text messaging and quick replies to provide the initial onboarding experience.

Here’s an example:

Sava is a bot that can attend multiple conferences. As such, we can’t let the user “guess” where Sava is right now.

We initiate the conversation with a list of ongoing conferences and provide our conversation partner with a simple button “I’m here!” Sava will then follow-up with information about the selected event.

Show Empathy and Provide Guidance

Your bot cannot understand and reply to every imaginable question in the world. But it can show empathy to a frustrated user. We can also make our bots proactive and offer guidance to our users when they (inevitably) wander too far off the beaten path.

Responding with answers such as:

I don’t understand.

I don’t know that yet.

I can’t help you with that.

Is a surefire way to make a boring bot that induces frustration. Try to offer a witty comeback, and/or tell the user how they can see a list of all commands again. If your bot is stuck in a loop where it keeps repeating the same answer over and over again, try to change the answer.

For example, tell the user something like this: “I’m not sure how to help you, and you must be frustrated by now. :( Do you want to see a help menu, or get in touch with a human?”

Bonus Tip: Use Emojis!

Using emojis is a great way to appear more human and show empathy. This is not appropriate for every audience and perhaps not something you can use on every platform. If you are making a bot for Messenger, you have access to a large collection of emojis that will appear uniform across different platforms. Use them!

Have a Memorable Personality and Strong Aesthetic

When we built Sava we had a very clear vision of his behavior and aesthetic design. He is a cute robot and a bit of goofy character. He has witty comebacks and communicates in a language that is more suited to an audience that “grew up with the Internet.”

In fact, personality is, by some account, one of the most defining characteristics of the experience that your bot will provide. Aside from being goofy, Sava was also designed to be a good-hearted bot with a kind, gentle and optimistic outlook on the world.

Let’s take Poncho as another example. It’s a bot that tells you what the weather will be like in your area and gives you a heads-up regarding allergies and similar hazards.

The concept is rather simple. There are already a lot of apps that do this well. So, how did Poncho do so well in such a tough and crowded market? Well, Poncho has won the hearts of thousands of users due to the brilliant personality and powerful aesthetic direction that it provides.

Here’s how Poncho adds it’s own personality into a very mundane conversation about the weather:

Note how Poncho also keeps the user engaged with quick-reply options. This is a good way of keeping control over the flow of conversation while still providing a great experience and a lot of control to the user.

In 2016, our team visited Amuse Conference and there was a lot of talk about conversational UI and, in particular, building personalities. This tweet sums it up quite well:

But, it is difficult to build such a powerful personality if you are trying to appeal to a very broad audience, especially if your bot represents a corporate client. This brings us to…

Personalization and Integration

Personalization is just one of the ways you can allow your bot to choose between different personalities. If the bot is talking with Frank, the 50-year-old senior Java architect, their tone should probably be different from it’s conversations with Julie, the 20-year-old architecture student.

This is where developers and designers need to work together. Retrieving and storing data that is relevant to your user’s preferences is difficult, especially since it is safe to assume that most users will not share too many details about themselves. If you’re working with Facebook’s Messenger platform, you can get quite a bit of info with the Graph API. This information can include name, gender, timezone, and their profile picture.

Integration with other services is the easiest way to handle this. If the user already has an account on your e-commerce site, then syncing that account’s data with the conversation will allow you to provide a memorable experience. Messenger’s Account Linking Service, provides one of the safest and easiest ways to achieve this.

A Note on Scheduling

At some point, your chat bot might offer to send the user scheduled reminders. It is likely that you will have to send these at a specific time of day. Timezones are a problem here obviously. *

With the Facebook Graph API, you can request info about the user’s timezone, but this is obviously not a one-size-fits-all solution.

The most reliable way is to ask the user for their current location. On some platforms, such as Messenger, you can ask the user to share their location via the built-in button (or a postback button), which will send their current physical coordinates.

In other cases, you will have to get the user to write down the name of their town and ask them to confirm that your bot has successfully understood their location. In this case, you will need a reliable third-party solution for extracting location/timezone data based on free-text input.

Think of Messages as Micro Apps

We mentioned things like rich-messages and quick-replies, without really explaining what they are. These referred to the additional UI elements that are given to bot developers on the Messenger platform. But every platform has its own set of rules and interfaces that we can access. It is hard to just port the same bot from Messenger to Telegraph and then to Slack.

The underlying logic and models will stay the same, but each of these platforms provides unique features that developers can use.

This is why we need to think of every message as an atomic application.

Let’s imagine a chatbot that is an extension of a well-established ecommerce store. Instead of sending a link to the desired product to our user, we can use our chosen platform’s native tools to create unique micro-applications.

With Facebook Messenger, for example, we can:

Send a carousel of products that match what the user wanted (sort of like “related products”).

Include buttons such as “More info”, “Add to Wishlist” and “Buy!”

If the user has already linked their account with the store itself, then the purchase can be done right through Messenger.

If they are not a client of our store, we can still monetize directly through Messenger thanks to Facebook’s very own Messenger Payment Service.

When we think of every message as a potential micro application, the possibilities are endless and different across various platforms.

Test, Monitor, Learn and Improve

The day’s work is never done when building a bot. It’s important to test and monitor as soon as possible. The more people you get to talk to the bot, the more ideas you will get on what to cover.

Users will constantly surprise you. It’s one of the most exciting things about bots. Never before have we had interfaces that provide complete freedom to the user and it is our job to learn, improve and adapt.

Final Takeaways

Focus on creating a unique, memorable personality.

Think of every message as a micro application and make sure to take full advantage of your platform.

Work on your onboarding process. Guide the user through the rules of the game, but have them feel as they are in control (use quick replies, custom buttons etc.)

Create empathy. Do not cause frustration.

Integrate with other services. Personalize the experience for the user.

Build and learn, fast! :)

Read next

Software engineering today is all about building better, [value-driven digital products](https://spicefactory.co/blog/2017/04/27/building-user-value-into-digital-products/) more efficiently. This 'mantra of efficiency' is especially present in the...