Skip to main content


Intents are specific purposes or goals that a user has in mind when interacting with a conversational AI system. Intents represent the underlying intention behind a user's input. They can include inquiries about store hours, product availability, sales, as well as frequently asked questions, guidelines, procedures, and actions.


To plan the scope of your virtual agent, it's important to think about the types of questions you want it to be able to answer. For instance, if you want your assistant to handle questions from users wanting to track their order, you can create an intent called #order_tracking. The # prefix helps distinguish the name as an intent.

Once you have identified the questions you want your assistant to address, it's time to start creating the corresponding intents. To begin with, aim to have around 6-10 natural language examples for each intent, some of which can also be generated automatically if needed.

Use case

Check out the following example:

I'd like to book a reservation at the Italian restaurant on Friday night.

In this example, the user's intention is to book a reservation, so a possible intent is #book_a_reservation. The place and the time are information that may differentiate the virtual agent's response, so you can handle cases like this, creating two entities, @place and @time.

Create an intent

To create an intent, you have to perform the following steps.

  1. Open your brain and select Intents.
  2. Click on Create intent.
  3. Rename your intent with a descriptive name, by double-clicking on the intent name.
  4. Add some natural language examples (training phrases) that are related to the intent you want to create.

Training phrases

The number of training phrases needed for an intent to achieve the best results can vary depending on the complexity of the intent and the natural language patterns of your users. However, a general rule of thumb is to include around 6-10 of training phrases for each intent you want your assistant to recognize. Having a sufficient number of diverse training phrases can help Moveo learn to accurately classify the intent, even if the user inputs different phrasing or wording. However, it is also important to ensure that the training phrases cover a broad range of variations to avoid overfitting the model to specific examples.

It is also important to note that the quality of the training phrases is more important than the quantity. Training phrases that accurately represent the natural language patterns of your users will help the model achieve better results. Additionally, it is recommended to continuously monitor the performance of the intent and adjust the training data as necessary to ensure optimal results.


Once you input your initial set of examples, Moveo will use them to suggest additional examples that are relevant to your intent. You can then accept or reject these suggestions based on their suitability. The following example illustrates this process: After entering the first two training phrases, Moveo generates new phrases, and you can choose which ones to incorporate into your intent by accepting them.

Intent performance

When it comes to building intents for your virtual agent, it is important to consider the intent performance. While around 6-10 natural language examples per intent are considered optimal, you should maintain a balance between the number of phrases and the overall performance. The performance bar on the right sidebar can give you a good idea of how well your intent will perform, because it takes into consideration the number of training phrases you have provided for the intent, as well as how they compare to the other intents in the brain.

Connect a flow

After you create your intent, you can immediately connect it to a new dialog, by clicking on Connect. Pick a name for your new dialog, as well as the folder you want to classify it. Then, write the reply of the assistant, click Create and modify the dialog to your needs.

Good and bad practices

Do's ✔️Don'ts
Do make sure the intent is specific enough.Don't make the intent and its expressions too general or too vague.
Do ensure the intent has a clear purpose.Don't create intents that overlap or are redundant.
Do use clear and concise language.Don't use ambiguous language and unclear jargon.
Do try to maintain a balance in the number of training phrases per intent.Don't add training phrases, in which the only variation is upper/lower case.
Do try to merge subsets of the same flow into one.Don't use similar training phrases to different intents.

Create a specific and precise intent

To create a successful intent, it's important to make sure that it is specific enough to capture the user's intention without being too general or vague. For example, if you want your virtual agent to help users check the status of their order, a good intent name might be #check_order_status. This name is specific enough to accurately represent the user's intention, while also being clear and easy to understand. On the other hand, an intent name like #ask_about_orders is too general and may not accurately capture the user's intention. Similarly, when adding training phrases to your intent, make sure they are specific and relevant to the intent's purpose, rather than being too broad or ambiguous.

Create clear and purposeful intents

When creating intents for your virtual agent, it's important to ensure that each intent has a clear and specific purpose. This will make it easier for the assistant to understand and respond to user requests accurately. However, you should also avoid creating intents that overlap or are redundant, as this can cause confusion for both the user and the assistant. For example, if you have an intent called #check_order_status, you should not create a separate intent called #view_order_details as these two intents are likely to have overlapping expressions.

Use clear and concise language

Use simple and clear language for the training phrases of your intents. Avoid ambiguous jargon and aim to familiarize the virtual agent with your users' language.

  • ✔️ Good examples:

    • When will my order arrive?
    • How much does this product cost?
  • Bad examples:

    • ETA of package
    • What's the MSRP of this product?

Use effective training phrases

You should aim to keep a consistent number of training phrases per intent, ideally 6-10. Having too few or too many training phrases can lead to confusion or ambiguity for the virtual agent. Avoid duplicating training phrases that only vary in capitalization. For instance, instead of using Where is my order? and WHERE IS MY ORDER? as separate training phrases, you can use a different phrase conveying the same meaning, like What is the status of my delivery?. This provides a more diverse range of inputs for the virtual agent to recognize, resulting in a more accurate and robust system.

Merge different subflows into one

Consider combining similar thought processes in your mind into a single intent, for better clarity. For example, instead of treating Pay with card, Pay with cash and Pay with a coupon as separate flows, it's strongly suggested to consolidate these cases into one flow, Payment methods. Given that these cases share similarities and have overlapping training phrases, combining them can help streamline the process and improve the confidence with which the assistant can answer a question of this topic. Additionaly, you can include the supported payment methods as an entity.

In this case, you should remove the intents handling the card, cash and coupon cases, and move them all into one intent, called #payment_methods. This intent may include expressions such as:

  • How can I pay?
  • What are the available payment methods?
  • In which ways may I pay off my account?
  • Is it possible to pay with cash?
  • Can I pay my account with my card?
  • I want to use a coupon for the payment.

Import an intent

To import an intent, click on the import icon on the top right in order to select a local CSV file. The CSV file must have the following format:

  • Two columns with headers Intent and Expression.
  • Optional: Under Intent, write the name of your imported intent.
  • Under Expression, write the expressions referring to the imported intent.

Once you upload the file, save to add the intent to your brain.

You can also download an example intent.

Off-topic messages

Your virtual agent, once trained, has knowledge about the topics you teach it. However, it also knows when it doesn't know something. Moveo classifies all user messages into two groups: those that fit within an existing intent that it knows, and those that fall under the #offtopics category, which is a default category that cannot be deleted. You can also add specific phrases to this system intent that you want your agent to recognize as off-topic messages.


Do not connect an intent trigger to the #offtopics intent, but rather handle the cases where it is triggered with a fallback.