Tim - your german buddy

A facebook messenger bot to learn german
Project Details

Context: University Project: Media Design

Tasks: User research, UX concept, Information architecture, Usability testing, Prototyping

"Tim - your german buddy" is a facebook messenger bot to learn german. It targets foreigners living in or moving to germany, who want to be able to handle the most important conversations in their every day life. Tim takes the role of the user's new german friend, who shows him the german language and culture. Within each lesson Tim introduces the user to a german character, who then has a conversation with the user in german. In case the user is lost or doesn't understand something, Tim is there to help and translate.


Screen displaying the context sensitive entry point

Context sensitive entry points

Tim texts the user - depending on his settings - with a context-sensitive message, for example "Hey, how was your weekend?" or in case it is raining outside "Hey, what a shitty weather, do you want to go to the movies?".
Screen displaying the navigation to a lesson

Navigation to a lesson

After having a short conversation Tim makes some suggestions for activities the user could do. Each activity represents the topic of a lesson, for example going to a restaurant, hiking, going to the movies. The user also has the option to search for a lesson/ activity in case he has something specific in mind. The navigation was the result of our user survey, where most participants stated, that it is too annoying to pick a topic each time, but they want to have the possibility in case they want to study for a special usecase.
Screen displaying the process where the topic bot takes over

The topic bot takes over

Now the topic bot takes over, he represents a german character, who only speaks german. A topic bot could be for example a waitress at the restaurant or a cashier at the supermarket.
Screen showing the way of button input within the app

Button input

The bot most of the time provides button input, so the user doesn't 'get lost' and looses the motivation to study any longer. Buttons also allow students with a lower level of german to participate in the conversation.
Screen showing the way of text input within the app

Text input

It is always possible to send text. This allows the user to be flexible and choose other answers then the ones given in the buttons. Furthermore, he can ask Tim for help, exit the lesson or choose another topic. It is hard to implement a reliable free text recognition, but it is also crucial for making the conversation 'feel real'.
Screen showing how the bot helps with translations

Translate function

In case the user doesn't understand a german sentence or word, Tim is able to translate. The user could either translate the whole message by e.g. writing "Translate, Tim" or he could ask for a specific word by texting e.g. "What is Sprudelwasser in english?".
Screen showing how the bot tells cultural anecdotes

Cultural information

Tim also helps the user to understand the german culture and tells him some interesting facts. For example, when they are at the restaurant, Tim explains how much tip is common in germany.
Screen showing the end of a lesson

End of the lesson

At the end of the lesson, the topic bot leaves and Tim takes over again. Tim then asks if the user wants to do another activity or wants to go home. In case the user chooses to continue, another lesson starts. Otherwise, Tim asks the user if he would like to do something the next day and then sets a reminder.
Screen displaying the reminder


The next day, the user gets a message of Tim, reminding him that they wanted to hang out. He can then choose to text now or set a reminder for later.

The Design Challenge

We want to support foreigners living in or moving to Germany in learning german, so that they can handle the communication in their every-day life.


design process: User research, personas, bot personality, first concept, prototype, navigation, user tests

User Research


Online Survey

To explore the specific needs of our target group, foreigners living in or moving to germany, we conducted an online survey. We were able to recruit 56 participants by posting the survey into several Facebook groups that were adressing our target group. The survey was asking about the studying habits and methods, the media used and the motivation of the participants. We also investigated the topics wished to learn vocabulary from and the way the users wanted to be guided through the lessons.


Studying habits & motivation

Media used
When asking how the respondents studied german, our biggest insight was that smartphone apps were often used as a supplement to a more "traditional" learning method, as a class or a book. However, 67% of all participants were using smartphone apps to study german, followed by taking a class (57%). Websites (22%) and computer software (6%) were rated relatively low.
Since we were only addressing foreigners living in or moving to germany, they didn't just study for fun, but for being able to speak fluently or at least handle their most important every day tasks. Also, a big part of the participants needed german for their work or studies. The biggest reasons, why the respondents didn't study more often were "I don't have enough time", "It is hard to motivate" and "I just forget". Only 11% thought, that they already studied enough.
Reasons to use e-learning
Most participants stated the ease of use and the convenience and flexibility as the main reasons to study with apps, software or websites. They also liked that they were mostly for free and "fun", due to gamification elements.
Pain points of e-learning
The biggest problem of the participants with e-learning was, that they were not sure if they were progressing. Also, they felt that it was hard to motivate themselves and that they weren't learning useful grammar.
User expectations
When asked what the participants expected from such a chatbot, they responded with the reasons to learn conversational german and cultural anecdotes. They preferred progress and 'just being able to speak' over perfect grammar.
Respondents preferred getting suggestions for topics, but still needed the possibility of selecting a topic in case they wanted to learn something specific.

Design Implications

UX Principles

Be fun
People are studying in their spare time, so don't make it feel like a duty.
Be flexible
Each foreigner living in germany has other needs and and experiences different situations, so don't force them to study a specific content.
Highlight the progress in an authentic way
Users know that an app telling you, that you speak "90%" of german doesn't actually mean you are speaking 90% of german. So rather highlight what he is already able to manage with his knowledge.
Show the benefit
Isn't being finally able of having a conversation the best part of learning a language? Motivate the user by showing him his achievements.
Don't force to be standalone
Accept the fact, that your users are probably using your app as a supplement to other learning media and support them in doing so.
Be authentic
Users prefer to learn the german germans actually speak, not the one you would use to write a book. So don't insist on perfect grammar and vocabulary, rather encourage to have conversations.

User Personas

fictive persona Matieu

Matieu moves to germany in 3 months and plans on staying longterm. He will be able to handle most of his business in english but wants to learn german in order to participate in the public life. Matieu has a private german teacher once per week and uses the chatbot in addition to that.

The organized business man moving to germany.
fictive persona Tereza

Tereza moved to Leipzig two month ago and is planning on staying longterm. She is currently able to speak english at work, but german would open new career opportunities. She mostly wants to learn german to make german friends but often forgets to study.

The motivated free spirit living in germany and trying to get along.
fictive persona Jose

José moved to germany six months ago and was sent from his company for two years. He still almost doesn't speak any german, because he is too busy enjoying his time. Anyway, he is annoyed by it in situations like grocery shopping or odering at the restaurant.

The expat with other priorities than studying german.

Bot personality

Bot icon

The main bot - Tim

The best way to learn a new language is to speak to natives, therefore the bot Tim is designed to be the user's new german friend, who takes him to different activities and events. We wanted him to be authentic and appear as a real friend, not a teacher. The bot should make learning german playful, the lessons should rather feel like hanging out with a friend than having to study.

Based on these principles, we defined the bot's main characteristics for the interaction with the user:

  • Is very friendly and thrilled to introduce the user to the german language and culture
  • Also speaks english and helps the user with questions and translations
  • Always up to do something and wants to hang out
  • Pushes the user to speak german himself, so he can be independent

The topic bots

In order to stay more flexible, we decided to create "topic bots". Each lesson is represented by a situation and each topic bot stands for a person you typically talk to in that context. The topic bots only speak german, so the user is encouraged to use the foreign language. The topic bot gets introduced by the main bot Tim, Tim also 'stays' with the user during the whole conversation in oder to help with translations.

Clear separation of tasks

Main bot
  • Introduction
  • Menu
  • Navigation and guidance through the topics
  • Vocabulary training
  • Translations
  • Speaks german and english
Topic bots
  • Represent the lesson regarding a specific topic
  • People you typically meet in a certain situations
  • Imitate 'authentic' converstations regarding a specific topic
  • Only speak german
Graphic showing different examples for topic bots, for example your boss for the work lesson, a pedestrian for learning the directions or a waitress for the restaurant lesson

user journey

user journey: Entry point, navigation to a lesson, lesson, user exits

Events that can disrupt the user journey

Events that can disrupt the user journey are: 1. The user wants to change the lesson while not being in the navigation 2. the user exits 3. the user wants to change the settings

Entry point

User initiated

The user started the conversation

When the user initiated the conversation with the bot, he actively decided to use the bot. We therefore assume, that he probably has time and wants to study. The challenge in this case is to react accordingly to the user's input and guide him to the lesson or answer his question. There are plenty of possible user inputs, so we clustered them into categories and defined appropriate answers (of course, these user inputs would need to be revaluated after getting the real user data from the bot):
  • Small Talk (e.g. “Hi”, "How are you?")
  • Directly selecting a specific lesson (e.g. "I want to go to the restaurant", "I would like to learn directions")
  • Answering the last message from the bot after a longer time
First time user
For the case that the user interacts with the bot for the first time, we have set goals and tasks in order to onboard the user the best way possible:
  • Explaining the bot
  • Introducing the bot's personality
  • Setting reminders
  • Introducing all possible functions (e.g. translations, help, settings)
  • Guiding the user to the first lesson
  • The bot speaks english and german to make sure the user understands

Bot initiated

The bot sends a reminder

When the bot sends a message to the user to initiate the conversation, it is important to have a catchy hook in order to motivate the user to study. It is unlikely that the user wants to learn a certain lesson, so the bot can suggest one. We wanted the reminders to feel like messages, that you could actually get from a friend, who wants to hang out. So instead of asking "Should I remind you tomorrow to study german?", the bot asks "Do you want to go to the restaurant tomorrow?". In case the user did not text back during a lesson, but has set a fixed reminder, the bot for example asks "I am still at the restaurant, are you still hungry or do you want to go somewhere else?". By answering, the user can continue with the lesson or start a new one.
Context specific reminders
In order to make the bot seem even more realistic, we introduced the concept of context-specific reminders. These reminders can either be time-specific or personalized. Time-specific reminders are for example asking about the user's weekend on a monday or suggesting the party lesson on new year's eve. For the personalized reminders, we were thinking of data that we could possibly collect from the user and use it to target his situation more directly. One example would be to use the weather at the user's location as a hook: "Hey! Such a shitty weather today :(. Do you want to go to the movies?"
Examples for context-specific reminders, for example 1. On Christmas the bot could say 'Merry Christmas! Do you want to join me and my family for our german christmas dinner?' or on a monday the bot could say 'Hi, how was your weekend?'

Navigation to a lesson

Conversation to navigate to a lesson with free text input: Bot texts: I am a little bit hungry, do you want to go to a restaurant and eat something? Or rather go to a bar and get a drink? We can also do something else if you want to! User options: Restaurant, Bar, Something else (this option is selected). Bot responds: Okay, fine as well. What do you want to do? User responds: Going to the doctor. Bot responds: Okay let's go to the doctor then
We designed the navigation based on the user research, where the participants did not want to choose a lesson each time, but still wished for the possibility to study for a specific situation in case they need to. We therefore decided to always give two suggestions for a lesson and furthermore the opportunity to go to another lesson via free text entry.

Staying scalable and flexible in a conversational interface with a modular structure

Even though the bot was just a prototype and we only designed five lessons in total we wanted to keep the possibility of adding a big variety of lessons and topics. We also wanted the order of the lessons to be flexible, in order to provide variety to the user and adapt it to his previously taken lessons. The challenge was to automatically create 'authentic' messages that would suggest one or more randomly selected lessons and take the user's current position in the user journey into account. This was when we came up with 'lesson-specific' sentences. These are sentences that need to be defined for each lesson but are combinable with each other.
Sentence Type Lesson Restaurant Lesson Oktoberfest
Default navigation - suggestion 1 "I am kinda hungry, do you want to go out and eat something?" "It's Oktoberfest again! Let's go and get a beer. I am sure you will love this part of the german culture!"
Default navigation - suggestion 2 "Or do you rather want to go to the restaurant?" "Or would you rather like to go to the Oktoberfest and get a beer?"
Navigation to the next lesson after a completed lesson "I am going to a restaurant now, are you hungry as well and want to come?" "I am going to the Oktoberfest now, do you want to get a beer there with me?"
Previously set reminder after completed lesson "Hey, didn't we want to go to a restaurant? Let's go I am hungry!" "Hi, what is your plan for today? I am going to the Oktoberfest now and thought that you will probably want to see it?"
Message after not completed lesson "Hey, we are still at the restaurant. Do you want to stay or do something else?" "Hey we are still at the Oktoberfest. Do you want to stay or do somethinge else?"
... ... ...


Designing the lessons themselves was not my main focus, which is why I won't dive much deeper into the design process here. The basic concept was to to take the user to different activities and events, that he probably also experiences in his real life. The activites are always 'organized' by the main bot Tim, who introduces the user to the topic bots, a bot representing a person you would usually meet in that situation. The topic bot then has a typical conversation with the user in german. The goal here is not to make the user understand every word, but to make him understand the meaning and enable him to respond. This concept is supported by pictures and predefined button input, so the user is not running into dead ends. We wanted to let the lesson feel as authentic as possible and more than that, make it fun.

Exit points

Navigation within a guided exit: Bot texts: I am going to a restaurant know, are you hungry and want to come? The user then has 3 options: 1. Yes 2. Another time 3. Let's do something else. Each answer leads to a different point within the navigation: 1. Restaurant lesson 2. Setting a reminder 3. Selection of all lessons

Guided exit

A guided exit happens after a completed lesson. In this case the bot asks the user if he wants to do something else (and start another lesson) or if he wants to finish. When the user decides not to continue, the bot asks the user to set a reminder or change the reminder to his preferred time. This has the advantage that the user can actively decide for a time, which fits him the best. This concept also makes the bot feel more like a friend, who wants to set up another meeting and makes the conversation more natural.

Non-guided exit

For the non-guided exit, there are two options: First, the user might not text back while being in a conversation with the bot, or second, the user ends the lesson actively by writing, for example "Bye". Both cases can happen within each step of the user journey. When the user exits the bot actively, the bot asks if he wants to set a reminder for the next lesson. In case the user just doesn't text while being in a lesson, there is a sentence defined for each lesson (e.g. "Hey, we are still at the restaurant. Do you want to stay or do something else?") that the bot either sends as a reminder or texts back when the user gets in touch again.

 City Touch  All works