Buddy Concepts

Deep dive into understanding buddies

A buddy is where you define the specification for the language of your app. Natural language processing in its general form is a hard problem to solve, so we work around by allowing you to teach your domain to our system. You teach it by defining sentences that can help trigger certain functionality of your app. And particular data points that you’d want extracted from the sentences that your user may say. You also define the way you’d want your app to respond to certain situation verbally.

Intuition of buddy building

A buddy consists of intents, entities, entity types and prompts. There are more details for each on individual pages, but let’s try to build intuition for the various parts here.

Say you have an app on which you want to add a the ability to navigate via voice. To be specific, say your app is an e-commerce and you want your customers to navigate to their cart (where the items they have chosen to buy are listed), or alternatively to navigate to their wishlist (items that they want to buy, but right now).

Examples of things that your users may want to say are, ‘Take me to my cart.’ or ‘Take me to my wishlist.’

Imagine your app has a genie and that genie is you, and these are the two sentences that you understand, what would you tell yourself? Okay, these two sentences mean something on the lines of, the user wants me to take them somewhere, and that somewhere is defined by the last word of both sentences.

That general feeling that you arrived at is the intent, and those particular positions in the sentences are called entities.

Just for the sake of extension, lets try to add one more intent to the same app. You want to allow your users to directly checkout (take them to the payments page). So you’d probably allow your user to say ‘checkout’. This, in general means that the user is telling you that they are ready to buy. This warrants a new intent.

Our system has a classifier, a mechanism to make decisions, which decides which of the two actions did the user want the app to understand and perform. As a developer, you inform us of the types of actions that you’d want voicified and utterances that you’d think your user may say when they mean one or the other intent. At runtime, we use a fuzzy version of the examples to match utterances to actions.

Remember, when we were talking about entities above we said a word at that position in the utterance may be useful in deciphering more information useful to execute a particular action. The way you, the developer tells us this is not by encoding explicit positions, but my marking up example utterances and we decipher the positions and/or any other information needed so that we pick up on more words at run time.

In reality, it is possible to soften the distinctions between intents and entities to achieve better results, but that is an advanced topic and we will cover it later.

Prompts are sentences that you’d want the app to speak out at certain points or states of your app. Say in the above app for e-commerce that we were discussing, you want to tell your user after executing the action, ‘Sure, taking you to your wishlist.’ You may alternatively, want to request further information about the intent by asking a question to the users like, ‘Are you sure you want to checkout?’ There are more details on the different types of prompts and statements here.

To help you get started, we also have a bunch of ready made domains available like for e-commerce, or a more specialized e-commerce groceries app, for example. See here, for how to get started with them and how to use them.