Moscow Muler

Made by Melanie Zeng

Found in Final Project - Weird Conversations

a SMS-based bot that users can chat with, play party games, send selfies, receive customized drinks according to the facial attributes showing on their pictures, such as their gender, age, makeup, hair color and emotion.



I first thought about building a chatbot about food and drinks. I found that a lot of food/drink-related apps are about nutrition and calories, they are very healthy but they take away the fun part of enjoying food and drinks. Then I thought about what young people do nowadays. They love taking selfies, sharing stuff on social media, showing their personalities and having fun in nightlife. With this user persona, I decided to create a chatbot that can offer customized cocktails based on emotions on selfies.




During my mid-mini project, I focused a lot on the technical part of facial data and customized drinks but the conversation flow failed to be connected to the bot’s personality and the user journey seemed to be very fragmented. Therefore, I would like to provide users more interactions along the whole user journey of enjoying nightlife so that the conversation starts naturally and the users would have more to do with the bot after picking drinks.Below is the proposed workflow of my bot. 


The bot will first onboard the users including helping them sign up and sending them confirmation message. It then will help users get to know the bot by answering questions about the bot itself and showing personality. The next step is to offer drinks based on selfies. Since there are more available facial attributes for me to explore including makeup, hair color, head pose and smile intensity, I can build more customized responses accordingly, such as “I love the lipstick you have on”, “I like your blonde hair” and “you seem a bit tipsy”. The last step is to provide some drinking games for the users to play with during the drinking experience so that the user journey is not fragmented.  

Priority Matrix

On top of my mini project, I created a priority matrix of features that to help me make good use of my time and tackle different problems in order.  


Technical Explorations

During the bot development, I tried adding a feature in my chatbot that when the users ask "how to make {drink name}", it will show them the instruction/recipe.

I used this code snippet to extract the drink name from the user input of "how to make {drink name}":


I also added the code to look up the cocktail API and return the instruction based on the drink name:


After my experiment, I don't think this is a good fit for my project yet because the way that the instruction is organized in the Json data is very complicated. Some of the drinks have the ingredient names and measurements outside of the instruction key while the others of them have the ingredients name in the instruction, which means I may need to make a logic function in my code in order to return the right values.

Also, some of the drinks share the same words in their names, such as Margarita, Blue Margarita and Tommy's Margarita. But they are all stored in the same url in the API, which makes it more difficult to pull the right data. At the same time, it's possible that the users may simply type "Margarita" but they actually mean "Blue Margarita".

A better way to do it would be to save whatever drinks it gives the users in the database and when the users ask how to make this it will automatically search the drink by ID and return the instruction, which would make more sense from the user experience standpoint. But due to the time limit, this feature needs to be held up.  


Experience Prototype

After finishing the prototype and doing some usability testing, I found that happiness and neutral were the most common emotions showing on selfies, so I built more responses to them and thus the users won’t get the same message over and over. Also, when the users make a typo, such as "draw w card" while they are supposed to type "draw a card", the bot will automatically respond the "error handling message", which interrupts the user experience. So I improved this experience by utilizing this code snippet:    


Personality & Conversation

I first defined the personality of my bot and designed the conversation based on the nightlife/drinking theme.


Customized Responses

Happy emotion: female vs male (beard vs no beard)
Different emotions: neutral, angry, fear, sad
Underage response


Moscow Muler Demo
Melanie Zeng -
Share this Project


49714 Programming for Online Prototypes

· 9 members

A hands on introduction to building online products and services through code


a SMS-based bot that users can chat with, play party games, send selfies, receive customized drinks according to the facial attributes showing on their pictures, such as their gender, age, makeup, hair color and emotion.


October 19th, 2018