> For the complete documentation index, see [llms.txt](https://docs.idew.org/code-chatbot/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.idew.org/code-chatbot/warm-up-project-outline/4-design-a-bot-with-a-purpose.md).

# 4 Design a Bot with a Purpose

## Objective

Design and develop a basic chatbot that solves a particular problem.

## Instructions

Ok, let's design a bot that actually does something useful. Each of you will define a simple problem for your bot to solve for somebody, then map out how your bot will function.

1. **Define the Problem.** Define what you want your bot to achieve for people. Keep it simple, but specific. For example, *provide some background information about the August 2017 solar eclipse and link them to information about specific times to view the eclipse from their location*.
2. **Mini-Personas for the users and bot.** Describe the people you want to serve with your bot. Also, describe the personality of your bot. Will it be formal or informal? Fun or serious? Etc.
3. **Create a Conversation Flow.** Use [this linked image](https://cdn-images-1.medium.com/max/1600/1*7mIJHfbIE7A9TELnXOaASQ.jpeg) (from [this article](https://blog.prototypr.io/how-can-you-create-a-simple-working-chatbot-in-2-hours-from-scratch-f92c31c7e974)) as an example. [Here is another example](https://docs.google.com/drawings/d/1Uavu4TwD4yCmc7isSPJ6T4LM7snF8KYMk29p3vFGh8k/edit?usp=sharing). Remember, keep the ultimate goal of your bot very simple, but think about the potential paths a user may take to get there.
4. **Edit Your Bot Script to Match.** Finally edit your script (RiveScript) to match your bot flow and test it in the message app.

Use [this template](https://docs.google.com/document/d/1CesR18bYIEUy1YSfgoDXsqhXiPSp-oRYH9YlRc89qlc/edit?usp=sharing) for your Design Document in steps 1 - 3.

## ✓ Deliverable

* Submit your design document in class&#x20;

**A Checklist for Chatbot Usability**

* Is the name compatible with the purpose of the bot?
* Does the initial chatbot message provide an indication of what the user should do next?
* Does the bot recover well if the user get's lost in the conversation or provides unusable information?
* Are the triggers (what the user can say) flexible enough to handle the different ways users may say something.
* Is it generally helpful? Does it provide a sense of closure to the user even if the user thought your bot would provide something different?&#x20;
