Simplifying recipe search using TasteBud

overview

TasteBud is a chatbot designed to provide recipe recommendations based on user input, taking into account factors like hunger levels, flavor cravings, desired cooking time. It operates within messaging/chat applications on smartphones and tablets. It leverages the device's voice-to-text (VTT) and text-to-speech (TTS) capabilities to enable voice interaction. Additionally, it may also introduce users to new and diverse cuisines as part of the conversation.

Problem
the daily meal-planning struggle

We've all been there, unsure about what to cook for the next meal.
Searching for recipes online and being overwhelmed by the choices.

Choosing meals and planning what to eat presents a daily challenge for many people. With countless recipes available online, finding suitable meal options that cater to one's taste and dietary requirements can feel daunting and time-consuming. This leads to decision-fatigue and frequently results in opting for takeout, consuming unhealthy convenience foods, or sticking to a handful of familiar dishes. This also limits exposure to new and varied cuisines.

There is a need for a personalized solution that takes the guesswork out of meal planning while expanding users' culinary horizons.

Process
How Tastebud was created

Creation and refinement of TasteBud followed a 4-step approach.

1

Definition

Developing bot personality by specifying interaction goals, character traits.

2

Development

Creating sample scripts and flow diagrams and identifying required intents.

3

Testing

User testing of TasteBud using Wizard of Oz method.

4

Prototyping

Creating video prototypes of TasteBud in action.

01
Definition

How a user perceives a chatbot depends on the personality of the chatbot.

A chatbot's personality plays a pivotal role in shaping the user's perception and experience. Infusing the conversation with a unique tone of a well-crafted personality can establish trust, rapport, and engagement, making the interaction feel natural and personable. Conversely, a flat or jarring personality might alienate users, hindering adoption.

I started with defining interaction goals for TasteBud.

Interaction goals serve as the guiding principles that inform the chatbot's personality traits, language, and behavior. Interaction goals defined for TasteBud were:

Efficient

Streamlined to gather necessary inputs.

Intuitive

Asks questions and makes suggestions as required.

Precise

Provides accurate recommendations.

Personalized

Tailored to the individual.

Chose a moderate level of personification.

TasteBud adopts a moderate level of personification, striking a balance between feeling approachable and conversational. Tastebud refers to itself as "I" and emphasizes practical recipe recommendations but does not try to pass off as human setting clear user expectations.

Decided on the character traits.

The core traits defining TasteBud's personality are curated to promote an engaging, trustworthy, and adaptable experience. Character traits for TasteBud include:

Knowledgeable

Extensive insights about recipes.

Thoughtful

Accounts for user needs, restrictions, preferences.

Encouraging

Motivates to try new cuisines, ingredients.

Flexible

Allows users to change their mind or go back.

Finally, crafted a tone spectrum for TasteBud.

Establishing an appropriate tone was crucial for TasteBud to create a cohesive, engaging personality that resonated with users.

Tone spectrum for TasteBud

"Enthusiastic
yet
Grounded"

TasteBud's personality struck a harmonious balance between knowledgeable authority and friendly guidance. Culinary expertise blended with thoughtful empathy, warm encouragement, and adaptability to create an approachable and credible experience.

02
Development

With TasteBud's personality defined I started with creating sample scripts.

Sample scripts helped to prototype how TasteBud's personality would come to life through actual conversations. These allowed me to iterate on the tone, phrasing, and even hints of personality like light humor.

I created 3 sample scripts, 1 accounting for a new users and 2 for returning users.

Script 1 - New user initiation and dinner recommendation

To define the optimal first interaction, I crafted a sample script for a new user's initial conversation with TasteBud. This covered the onboarding process - how TasteBud would introduce itself, explain its culinary guidance capabilities, and collect preferences, dietary restrictions and profile information.

Welcome to TasteBud! I'm here to provide personalized recipe recommendations based on the flavor you are craving or your hunger level. What can I suggest for you today?
Hi, I'm looking for a hearty and spicy dinner recipe.
Snippet from script 1

Script 2 - Recommendation for a returning user that changes time constraint

This script was created to mimic a shorter conversation with a returning user that needs quick recommendation but then changes initial time restriction to get a new recipe recommendation. This showcases the adaptability of TasteBud.

A super quick and easy breakfast recipe
No problem, let's get your day started fast. How about 2-minute [Scrambled Egg Mug]?
On second thought, I have a bit more time today. Can you suggest something tastier than just a microwave egg?
Snippet from script 2

Script 3 - Healthy afternoon snack recommendation

TasteBud relies on user inputs to give personalized recipe recommendations, this script works with the preference gathering prompts and the descriptors for the type of meal requested. Here for snacks, TasteBud inquires if the user wants something crunchy, refreshing, savory, or sweet.

I'm looking for a healthy afternoon snack recipe. Do you have any good recommendations?
Absolutely, let's find you a nutritious and delicious snack! What are you in the mood for - something [crunchy], [refreshing], [savory] or [sweet]?
Snippet from script 3

Using the sample scripts I mapped out conversation flows.

Using the 3 sample scripts as a foundation, I mapped out comprehensive conversation flows for each scenario. Flowcharts laid out the dialogue branches, transitions, and constraints governing how TasteBud should respond based on user inputs and intents.

For the new user onboarding, the flow accounted for gathering key profile details like dietary restrictions and allergens. The returning user flows skip directly to either recipe suggestion or prompts for preference as TasteBud would accommodate the restrictions and preferences from memory.

Snippets showing part of Flow Diagrams

Throughout this process, I identified and annotated the specific intents - such as constraints, updating food preferences, or requesting a particular cuisine type - that TasteBud would need to accurately detect in order to suggest relevant recipes.

03
Testing

Since TasteBud is not a functioning chatbot, I utilized Wizard of Oz method for testing.

Wizard of Oz testing involves a human operator covertly simulating a chatbot's intended responses during user interactions. This allows early evaluation and iterative development of chatbots prior to full implementation.

I conducted 3 sessions of testing using Google chat platform. These sessions led to some interesting questions and findings:

1. Is it "spicy" or "hot"?

The term "spicy" is interpreted differently, either as heat level or amount of spices for flavor. The term should be clearer. The chatbot could ask the desired heat level instead.

2. When to ask for cuisine prefence?

Question about cuisine choice can be asked later if needed rather than upfront, as this question might inhibit discovery of new recipes that the user might find interesting. However, this question can help narrow down options faster if included.

3. More options are not always better.

Providing too many options initially can overwhelm users, so the bot should suggest a couple recipes then suggest further if asked or follow up with questions to help users decide.

4. Help decide between options.

The chatbot should allow follow up questions about the recipes suggested to help the user decide between the options presented.
Following the inferences from the testing session I made a few changes to TasteBud that included:

1. Replaced terms thats could be ambiguous like "spicy".

2. Added a better representation of Recipe cards/callouts so that they are more glanceable.

3. Edited the script to suggest just 2 recipes to begin with to decrease cognitive load.

04
Prototyping

After accommodating issues discovered in user testing, I created visual prototypes for TasteBud.

The prototype followed the messaging UI on a smartphone. I created a recipe card containing title, short description and the relevant time information. The recipe card was added within the text bubble as a link to full recipe.

Recipe overview card

To showcase TasteBud in action I created video prototypes for the 3 scripts.

Video prototypes for Tastebud
Reflections

Next steps for TasteBud

TasteBud would rely on a repository of recipes to make the suggestions, designing a database schema required would be a nice addition. Identifying metadata tags to create recipe cards that cater to all parameters required for a successful recipe search recommendation.
Build out a working prototype for TasteBud and training it.

What I learned

Chatbot ≠ predefined prompts and responses. Creating a chatbot that is good, requires more than just creating a list of prompts and responses. It requires personality that is well aligned, it needs to adapt to the user's input and needs to be tested for its effectiveness.

Skills I improved

Working on TasteBud, I learned about personality of bots and the considerations for choosing level of personification. Bot testing methods like Wizard of Oz greatly helped me with deciding factors like word choice and response length. I enhanced my presentation skills by creating a video prototype.

Back to top