Design for Tension

  • Group size: Teams of 4
  • Demo Day: Tuesday, March 29 in class.
  • Design Doc Due: Thursday, March 31. 11:59 PM.


In this design sprint, you will create a chatbot that attempts to tackle a tense topic, such as political divides. This is (intentionally) an overly lofty design objective. Your goal isn’t to solve your problem, but to try and tackle one small component of it. For example, you could try to create a bot that pushes people outside of their filter bubbles by pointing them towards news sources they might be unlikely to see. Maybe you create something that forces people to reflect on their own beliefs for just a moment.

Be ambitious.

As you should have seen from your reading, conversational interfaces such as chatbots or voice interaction (Amazon’s Echo, Siri) present a unique set of challenges - how do you make interaction seem natural? How do you engage users without annoying them? What are the advantages of a conversational interface vs. a website? - are you leveraging them?

To do this, you will go through the stages of design that we have discussed to this point. For this assignment, we will focus more intensely on user testing your prototypes. Expect to spend some time with students either in or outside of class.

Do a Little Homework

We won’t have time to fully engage with ethnographic methods in this module, but if you don’t have any ideas, try searching around the internet first. What issues have caused political polarization and/or continue to propagate it (what is the problem?). What solutions have been proposed? Can you help?

You should determine a rough framing for your chatbot - What user group is it designed for? What will their expectations be? What are the overall goals of your application? What platform are you targeting? (User expectations for a texting bot are different from a Slackbot).

At this point, you should be able to articulate a how-might-we statement. For example, how might we build a Slackbot to help teenagers be exposed to opposing viewpoints?


Brainstorm conversations that will reach your objective. You can do this informally with your own team. How can you guide someone to a goal via conversation? What information do you need? How quickly can you get to that goal? Where can it go wrong?

Experiment with a number of approaches. Establishing a personality or identity for your bot will be important. This should match your audience as well as your design goals. Remember basic interface design rules - allowing people to feel in control of the situation, making their options clear, etc.

Formalize your conversation into concrete rules that you can follow. For example, look at the flow charts presented in How to design a robust chatbot interaction. This will allow you to rapidly iterate on your idea in the next section. You may also do this in Google Docs.

Formative User Testing

Before you start programming, you can iterate rapidly on this design through informal user testing. Have one person on your team act as the ‘bot’ with someone who is unfamiliar with your system (someone in another group). Try to have a conversation with that person by following you rules above (stick to them!). This should quickly highlight cases in which your rules fail or ways in which your design goals are not met.

Remember to document this process. You’ll want to reference portions of it in your reflections later on.

Build and Refine Based on Technical Limitations

Now you’re going to do the best you can to create your chatbot. But this is also when you run into a core challenge in HCI - you might not be able to recreate exactly what you imagined. How can you reshape your interactions without compromising your design goal?

Develop your chatbot and then test it with real people. Don’t just assume it’s effective. Try it out. There are several options for building your chatbot:

  • Flow XO: After was acquired, this is the service I’ve been most impressed with so far. Options to connect to multiple platforms, relatively straightforward construction environment, and some nice plugins to increase the capabilities of your bots. Also includes an interface to if you want to leverage more powerful NLP + ML. Getting Started | Some Tutorials

  • Chatfuel: A flow-based chatbot for Facebook Messenger. You will need to have a Facebook account to use Chatfuel and create a Facebook Page (at least as far as I can tell). HINT: You can create a Facebook Page and then immediately unpublish it… but still use the app.

  • Build a Slackbot with Python: Note that this will require you to build much more from scratch… and may limit the capabilities of your bot.

  • Talkbot: another flow-based chatbot constructor for Facebook. Same rules apply as Chatfuel. Note that this is only a 15 day trial, so if you use it, make sure it overlaps with deadlines.

  • Botsify: another Facebook-based chatbot creator.

NOTE: I will continue to update this list. If you have suggestions for preferred chatbot technologies, shoot me an email.


  • As always: Your design reflection as a Medium blog post. Since your bot may not live forever, you WILL need a demo video that captures all important conversational aspects. For this sprint, be sure to reflect on your interaction with users and how that drove your design.
  • Make sure that your bot is accessible to chat during our demo day.
  • Post the link of each Medium post along with your name on our Slack channel for Group Assignment 3 and submit the link on Canvas.
  • Grading: Grading will be based on the design rubric.