Team Eats is a bot for Microsoft Teams that allows people to easily plan lunch with their coworkers. The bot allows users to:

  • Find restaurants based on natural language queries
  • Vote between several restaurants with teammates
  • Create lunch invitations for a channel
  • Opt-in to lunch plans created by other teammates

This bot simplifies team lunch planning to create a more social, connected, and engaged work environment.

Context

This project was created inside of the Microsoft Garage Program as part of my internship as a User Experience Designer. Below are excerpts from this project that I have received permission to share publically.

My Role

As the sole designer on a team of six, I was responsible for designing the conversational experience users would enjoy. This included:

  • Concept development (determining the target audience, user stories, great-at statement, and hypothesis)
  • Fleshed out minimal viable product and hero flow
  • Finalized FTUX
  • Designed end-to-end conversational experience (delivered through wireframes, prototypes, and mockups)
  • Led user testing to receive early customer feedback (wrote user questionnaire and interviewed participants)
  • Copywriting the bot’s dialogue
  • Regularly contacted the team that sponsored this project to brainstorm, present updated designs, and receive feedback

Early Stages

Competitive Analysis

This was my first experience designing for a conversational interface, so I needed to familiarize myself with best practices and the landscape. I analyzed different bots for Microsoft Teams, Slack, and Messenger and found best practices to implement into my bot design.

Persona

Once I understood the problem and the landscape, I narrowed down the scope of our project by creating personas. These two individuals had different needs and our bot hoped to deliver for their specific use cases. The personas, named Kate and Ryan, can be found in the Appendix. As the project progressed, the personas became crucial in feature prioritization and I often asked myself, “What would Kate want to see next?”

Feature Ideation and Prioritization

We started to think about the problems Kate and Ryan faced and created a large backlog of items to address. We then assigned value to each feature and prioritized accordingly. At this point our team decided to limit our scope to designing a bot that can:

  • Find restaurants based on natural language queries
  • Vote between several restaurants with teammates
  • Create lunch invitations for a channel
  • Opt-in to lunch plans created by other team mates

 

Designing the Bot

User Flow

There are two flows in our bot scenario, one for the host and one for the attendee.

Host User Flow

A host’s goal is to create an invitation for one restaurant or a vote between multiple restaurants. To create an invitation, the user will ask the bot to suggest restaurants based on a natural language search query (ex. “Find a great French restaurant in downtown Bellevue”). From here, a list of restaurants will be populated where the user can select one for the invitation. After selecting a time and channel, the user will be given a preview of the invitation which they can send off to the channel.

If the host chooses to create a vote, they can input as many restaurant names as they would like to include in the vote. After confirming that the restaurants are correct, they can continue to enter the channel and time to send off their vote.

Attendee User Flow

After a host has sent the invitation or vote, all members of the selected channel will receive a new message in the channel from Team Eats Bot. With an invitation, team members can opt-in to the lunch or opt-out by clicking the buttons on the invitation. For a vote, team members can vote on one restaurant amongst the host’s selected restaurants. The one with the most votes will be the restaurant confirmed for the lunch.

When the host is ready to finalize the plans, the host can click the “End the poll” button. This will close the invitation and not allow new people to enter the lunch.

 

Conversations Structures

For a conversational interface, a user flow appeared in the flow of multiple entry points into the bot conversation and the subsequent responses from the bot. This was a unique variation on user flows that allowed to me more precisely define our product boundaries and interactions.

After multiple iterations, I defined 10 flows for different user scenarios. I included all the feedback and guiding messages from the bot in the Appendix.

Additionally, I needed to create responses to common scenarios, like the user typing “help”, the bot not understanding a restaurant name, or a new user opening the bot.

 

Mockups

At the early stages, I defined how the conversations structures would work functionally:

Next, I was concerned with making the flow as human and enjoyable as possible:

Finally, I made the transition to more polished UI in order to update the experience for a mobile interface:

Logo

I wanted to create a logo that was friendly, seemingly intelligent, and associated with food. Below are some of the initial brainstorms.

I did, however, understand the need for simplicity and indication that our application is a bot. This led to the ultimate design of our logo:

Usability Tests

I led the user testing for our team. This involved:

  • Creating feedback surveys
  • Recruiting volunteers that matched our target user
  • Conducting the tests with audio recording, screen capture, and user missions
  • Recording issues and feedback into product backlog

We had the opportunity to lead 20 usability tests and over 100 people used our bot throughout the internship.

Testing was extremely important to understand how people interact with a conversational bot. In other words, we needed to understand natural language interactions and how to deal with them in the most efficient and natural way. Unfortunately, I can’t share any recordings of these interactions.

Product Management

A large part of this internship was around planning, structuring, and executing a project independently from management. As the designer of the team, I gravitated towards a leadership role where I helped my team prioritize features, timebox work tasks, and ensure that the success criteria of items were the design specs. Some of the lessons from this process are listed below.

Ruthless Prioritization

Given the broad nature of our project, there were many features we could choose to develop. I worked with product managers within Microsoft to determine what were the main features that the user demanded and planned a development cycle around these features.

Timeboxing is Essential

Rather than allow an infinite amount of time for a task, I ensured we timeboxed our tasks so there was both accountability to the team as well as a unit of measurement we could use to schedule our weekly sprints.

Compromises are Necessary with Design

Due to technical constraints and a short time frame, I had to decide when to compromise and when to remain firm with design specs. Often, I found myself prioritizing team progress over fine design details.

Conclusion

Developing this artificial intelligence bot was an extremely exciting project. I was fortunate to be a part of an incredible team of six, receive the support of world-class mentors, and ultimately have been supported by Microsoft Teams and Cortana.