Humanizing Technology Through Chatbots
An exploration into building engaging Conversational User Interfaces.
Are you a Designer, Strategist, Product Manager, or anything in between interested in learning how chatbots can benefit people? Great, you’re at the right place!
This article is aimed at providing a foundational understanding of Conversational User Interfaces (CUIs) to help you deploy your own experimental pilot within the field. I’ll share my tips and tricks while walking you through the process of making my own chatbot. This article will cover:
1. Getting Started
As part of the UX Design team within Clutch Amsterdam, I was assigned a project on building a functional, proof-of-concept chatbot. When initially beginning, I thought chatbots were nothing more than a trendy gimmick, however, through my process I quickly learned otherwise.
During the project I worked with Marion Mulder, a Digital Product Owner fascinated with CUIs. She had already given many presentations related to the subject and was excited to help guide me along the way.
Our first step was thinking of a valuable purpose for the chatbot to fill. After some brainstorming, we decided on Eurovision since it wasn’t tied to a brand and because Marion already knew a demographic interested in trying it out. Additionally, we both felt that we could craft a funny, enjoyable, and entertaining personality to reflect the popular contest.
After acquainting myself with Eurovision and the culture behind it, I moved onto absorbing as much information as I could about designing a chatbot. The process was unclear to me at first and having read through dozens of articles and Amir Shevat’s book, “Designing Bots: Creating Conversational Experiences,” it was still foggy. However, one thought became clear:
The process required to design a chatbot continues to adapt based on the designer, the tools available, and the intended platform.
2. A Brief History
While chatbots are one of the trendiest topics within the design world at the moment, they’re far from new. To understand the present and future of chatbots, we must first revisit the past.
From the earliest days of computers, the general public has had to work to understand how to use them; however, moving forward there’s been a huge push to make technology as human-centric as possible so that anyone could use it without having to practically learn a new language.
The world’s first computer was invented in the 1940s but bots can specifically be traced back to the 50s when Alan Turing developed the Turing Test as a way to see if computers could outsmart humans. A little over a decade later in 1964, Turing, along with Joseph Weizenbaum, developed Eliza, a psycho-therapist bot.
Despite Eliza sounding robotic, she still managed to evoke strong emotional reactions from her users and in only 200 lines of code. This impressive feat paved the way for all modern-day chatbots but she was only a piece of a much larger puzzle.
It wasn’t until the 80s that big companies like Apple and Microsoft introduced GUI’s, revolutionizing computers so that the average Joe could use one without touching an intimidating command line.
Though a great step forward, technology has improved significantly since then and it’s because of these improvements that artificial intelligence and chatbots are now gaining so much traction. Every day we’re approaching a more connected world, one in which computers are increasingly are easier to use than working with a human.
3. Skillset Prerequisite
Since the technology behind chatbots are changing daily, so is the skillset needed to craft one. At this point there’s no shortage when it comes to picking a platform for your bot to run on, but this will largely affect what skillset you’ll need.
Regardless of the backend, there are a couple key characteristics necessary for designing any bot:
- A Logical Mindset
As soon as you want to make your bot complex on most platforms, you’re going to need to be able to map out `if`/`then`statements as workarounds for making things as easy as possible for the user. This will be expanded on in the Bringing It To Life section.
- A User Experience Design Approach
Thinking in terms of your bot’s user experience is essential to the process. In any case, attention should be paid to priming (how you phrase questions), how you time messages, how you onboard users, etc. Otherwise people may not understand how to use your bot and this will likely result in abandonment.
- Basic Visual Design Knowledge
It’s good to keep in mind that “conventional design” takes an alternative form when working with chatbots. Designing extends beyond creating a memorable bot profile picture and into many other forms (expanded on in the next section).
- (A lot of) Patience
The technology for building a chatbot isn’t quite there and that becomes obvious as soon as you begin working with any of the tools to make one. In fact, most chatbots today fake artificial intelligence. Depending on the platform, it’s not unlikely that small bugs will pop-up here and there. Sometimes they’ll automatically fix themselves and sometime they won’t, that’s just part of the game.
4. Building Your Foundation: Purpose, Persona, & Paths
Step 1. Defining Purpose
The first step in creating a chatbot is understanding your users and determining your goal. This means exercising that UX mindset we just spoke about. To do this, start by asking yourself three questions:
- What will the bot’s goal and core functionality be?
- Who will be using your bot?
- How will they interact with it? What else could they be doing when interacting with it? How will the bot integrate into their life?
Keep in mind that the number one reason for bot abandonment is if the bot lacks a clear purpose.
If you’re sure that your bot has a clear purpose and a set of tasks it will achieve, it’s time to analyze our answers and translate them into the foundations for our chatbot. This is how I did so with our Eurovision bot:
- Bot Goal: Provide something in fan’s pockets to test trivia questions, or if they’re talking to others, have a genie in their pockets to fact check or challenge each other.
- Audience: Eurovision fans
- Platform: Facebook Messenger
Having conducted interviews with a small group of Eurovision fans, I uncovered that they each shared the interest of using this type of bot when out watching Eurovision at a bar or to challenge friends when spending time together. Making it enjoyable and easy-to-use while on the go (mobile) became a must. Additionally, because they all had in common using Facebook Messenger to communicate with friends and family, it made more sense to integrate it in a platform that they were already using daily rather than having them install a new app.
Step 2. Creating a Persona
Moving on, it’s time to create our bot persona. Here it’s most helpful to define a couple of concrete attributes that embody the associated brand or bot experience itself. For this process, I found Liz Well’s tutorial helpful and used her templates to guide me.
Marion and I geared our bot’s personality towards a sassy, “know-it-all” which we felt would engage and provoke Eurovision fans the most. After narrowing down a list of brainstormed attributes to four words, we translated these into design principles and eventually into a direction for the bot’s voice, style, and dialog.
- Core Attribute: Simple
Design Principles: Ease of Use, Clear
Voice, Style, Dialog: Concise
- Core Attribute: Smart
Design Principles: Insightful, Data-Driven
Voice, Style, Dialog: Understanding
- Core Attribute: Fast
Design Principles: Efficient
Voice, Style, Dialog: Engaging
- Core Attribute: Cheeky
Design Principles: Entertaining, Audacious
Voice, Style, Dialog: Know-It-All
At this stage, we also came up with the name Eugenie because not only was it gender-neutral, which is what we wanted for this use case, but it also hinted at the genie-like intelligence manifested in the bot’s core values as well as it’s main functionality.
Step 3. Mapping Conversational Paths
With a clear purpose and personality for our bot, the next step was creating a draft of the conversation paths. Below I created Eugenie’s “happy path,” which is how the conversation would go if everything went smoothly. All underlined words are entities (variables collected from the user) which help bots understand and trigger correct intents (what the user wishes to do). Here’s my example of Eugenie’s happy path:
Eugenie: Oh hello there sweetie! I’m Eugenie and I’ll bet I know more than you about Eurovivison. Wanna test me?
User: What country ranked Number 1 in 2016’s competition?
Eugenie: That’s easy: Ukraine
User: Who was the performer?
User: What song did they sing?
Eugenie: Any other questions for me today, hun?
Of course, the conversation doesn’t always go smoothly and because of this, it’s most helpful to sketch out all of the possibilities including “repairs” or workarounds if the bot doesn’t understand the user. Liz provides a great example of how this should be done in her post, however in my case since I was without a developer, I started simpler and disabled the user from typing messages, easily keeping the flow on track.
When writing your bot’s scripts, it’s also important to prime the user. This means driving the user to say the right thing in the right format. For example, let’s say your bot asks when the user would like a package to be delivered. As you can imagine, the user could respond to this in a number of ways but formulating your question to receive a user response in a format that the bot will understand is the goal.
As you’ll notice continuing to read on, what originally started out as a chatbot where users could quiz the bot, ended up evolving into just the opposite: where the chatbot quizzes the user. Even if your final bot strays away from your original paths, this is still a very important stage in building your bot’s foundation.
The reason for Eugenie’s happy path changing later on is because I started off too ambitious. With most things, it’s more important to start small, and in terms of this chatbot, that meant limiting user’s responses to get a functioning quiz bot before allowing user’s to freely type.
With this experience, I highly recommended starting small and working to make your bot more advanced as you gain a better understanding of how we turn these conversational scripts into a functioning, automated bot.
5. Bringing It To Life
Now the fun really begins. At this point if you’re working with a team, the developer should get started building the bot based off of the previous work, but if you’re working alone, like me, it’s time to research.
When it comes to finding a backend for your chatbot, there’s no shortage of solutions. Chatfuel, Dialogflow (previously API.AI), and Wit.AI are just to name a few, but finding the right solution for you and your bot presents a challenge.
Since these services are constantly changing, your best bet is researching into what would works for your case, however this comparative table of 25+ services detailing what features they offer, how much they cost, and more may help.
The following four subsections address my experience in designing a complicated quiz bot with the service Chatfuel. While you may not use the same service for your bot, it’s still helpful to skim through the rest of this section to gain an understanding for the sorts of unexpected problems that may arise when designing a bot.
1. Starting from a Template
I originally tried out Dialogflow which I knew was powerful but had a difficult time getting into it. I moved onto Chatfuel since it offered a more visual approach. To start, I used the service’s quiz template bot to see how I could learn from it.
In short, it takes the user through five questions and offers them quick replies as answers. If the user gets the question correct, it adds a point to an attribute for the user’s score. At the end of the questions, the bot tells the user their score based off of this value and allows them to restart the quiz or challenge their friends. While simplistic, this bot provided a helping hand in kickstarting Eugenie.
2. Eugenie is Born
Over the course of a couple days, I started to bring Eugenie to life, albeit not the sassiest version Marion and I envisioned, but at least a minimally functioning one. I initially disabled users from typing messages so that they could only interact with it by using quick replies or buttons since I knew free typing would immediately complicate things.
Wanting to make the experience more natural, the fact that this flow was similar to the template quickly became a problem. As soon as I wanted to make it more complex, like randomizing bot responses, allowing it to give hints, and having contextual responses based on the question, the limited functionality of Chatfuel instantly became apparent.
3. Problems Arise
My first challenge was randomizing responses when the user answered a question. Obviously returning the same response “Correct!” four times in a row isn’t very exciting as the Chatfuel quiz bot template did by default; but to randomize responses, something that on the surface I thought would be an easy task, became anything but. While it is possible to randomize responses, there was no easy way to stop the bot from repeating a response.
To do this, I brainstormed a workaround which involved creating an attribute assigned to each response: from r1 to r4. The attribute was assigned a variable after a response was said. This way when the user would answer a question, the bot would first check to see if the response’s corresponding attribute had already been assigned a value. If it hadn’t, then the response would be sent as normal, otherwise it would refer the bot back to the response block until it had found a response which hadn’t already been said.
In this way, no phrases would be repeated and Eugenie instantly felt less robotic. Figuring out this issue led to others issues and to continue making the bot as natural as possible involved many additional workarounds like this.
After several days of troubleshooting, brainstorming, and tinkering around, I was rewarded with the first prototype of Eugenie, complete with properly functioning randomized responses, contextual responses (different responses when answering the first question), a point system, onboarding, and a seamless flow. I had my eyes set on one final feature to make it seem more natural: enabling users to type messages without breaking Eugenie.
4. Gettin’ Real
As soon as I allowed users to type messages to Eugenie, everything instantly became complicated again and I was happy I had started much simpler. This is where Chatfuel’s limitation really shocked me.
While the platform’s AI system allowed for inputting keyphrases and corresponding bot replies, it failed to address contextual responses out-of-the-box. For example, since the first question’s answer is Ukraine, Chatfuel’s AI module only allowed for when the user to say this to always react a certain way. So at first, if the user would enter Ukraine for the second question, it would still return a correct response because it didn’t yet understand that the answer only pertained to question one. The user could even get a correct response by typing Ukraine right when the chatbot conversation started. Eugenie simply didn’t understand context.
This time around, I resolved the issue with another workaround in the form of a system of checks. I assigned each of the four answers to redirect the bot internally to a check question block which would return a correct response if and only if the bot had asked the corresponding question. Otherwise the bot would fall back on an incorrect response.
Again, this is an example of one of the many issues I was forced to address with a workaround while using Chatfuel to make a quiz bot. I could write up a whole blog post just on Chatfuel workarounds but in the end, I resolved all the major issues with creative solutions. Talking with Eugenie was finally feeling far more natural, it just required some tinkering to get there.
6. Testing & Revising
When I initially had the first Eugenie prototype up and running, I turned to Eurovision fans and friends to help out in testing and revising. Just like with any product design, user testing throughout the process is invaluable as it helps uncover unforeseen issues as early as possible.
One of the best ways to user test chatbots is called Wizard of Oz Testing. Just like the name suggests, it means pretending to be a bot with real users to identify issues like redundant questions, hidden entities, and additional complexities.
Observing user’s interactions with Eugenie tremendously helped in improving the bot. I won’t go into all the details but the most helpful and obvious issue was that Chatfuel’s limitations were again apparent if the user started small talk with the bot. Using the service’s AI module, the only option was to manually type as many small talk phrases and responses that I could think of.
Luckily it wasn’t long before I discovered that I could integrate Dialogflow’s comprehensive small talk feature within Chatfuel by relaying any unrecognized phrases to the service. Again Eugenie instantly transformed in front of my eyes and most of the initial minor issues vanished.
7. In Conclusion
I’m the first to admit that Eugenie is far from the most sophisticated chatbot out there; however, along the way of developing it I pushed Chatfuel to its boundaries and learned a lot along the way.
If you’re about to embark on making your very own chatbot, I hope you find value in this post and am curious to see how the technology which powers chatbots and AI continues to improve in the future. One thing for sure in the future: be sure to keep your eyes out for Eugenie as the next Eurovision approaches. You never know whether or not Eugenie will pop-up smarter and sassier than ever to get you back into the contest.
Chatbots have come a long way since conception in the 50s but the technology that powers them is often over-hyped and not quite there yet. It is possible to make a seemingly intelligent chatbot in 2018 for a designer, but that’s not without facing countless issues. With interest in the field increasing over the past couple of years, it’s only a matter of time before designing a delightful, engaging, and complex chatbot will be as seamless as talking to one.