# Setup

## Step 1: Add app

1. Select *Applications* in your workspace menu&#x20;
2. Click *New application*
3. Enter a name for your application and click *Create*

Your new app will open on the *Configuration* tab.

## Step 2: Configure

The Configuration tab defines your AI engine, delivery channels, and connected workflows.

{% @arcade/embed flowId="tXQYk7Ot81TY1LewVfEB" url="<https://app.arcade.software/share/tXQYk7Ot81TY1LewVfEB>" %}

{% stepper %}
{% step %}

#### AI Engine

An AI engine helps disambiguate human speech for both language understanding and intent recognition and helps construct a package of your application whenever a new build is made. The built-in NLX model is provided for you for seamless setup.

1. Keep NLX’s built-in model or swap to a managed provider you [previously integrated](/platform/nlx-platform-guide/integrations/types/nlp-engines.md) in your workspace (Amazon Lex, Google Dialogflow, etc.)
   {% endstep %}

{% step %}

#### Delivery

Channels determine where your users interact with your app.&#x20;

2. Every custom core app includes an API channel with native Voice+ support for easy implementation to web or mobile environments. See [API channel](/platform/nlx-platform-guide/ai-applications/deployment/managing-channels/creating-an-api-channel.md) for all settings and configuration options
   * \[Optional] *Hosting*: Host your application as a Touchpoint app via the *conversational.app* domain. Ideal for previewing its final look during development and sharing your app externally with collaborators. Select Touchpoint from the default API channel and enable *Hosting* to configure the URL (e.g., `mybusiness.conversational.app`)
   * \[Optional] For MCP setup, enable *MCP interface* under the API's *General* tab
3. \[Optional] Click *+ Add channel* and choose one or more channels from the list where you want your application deployed. Fields are specific to the channel type selected. See [list of channels](/platform/nlx-platform-guide/ai-applications/deployment/managing-channels.md)
   {% endstep %}

{% step %}

#### Functionality + default behavior

Flows define your application’s behavior. Attach the flows you want your app to use:

4. Click *+ Add flow* and select one or more flows from your workspace for your app
5. Click <i class="fa-gear">:gear:</i> *Default behavior* and assign a flow to run during the following situations:
   * *Welcome*: Runs when a new conversation session starts. Use it to greet the user, set expectations, and collect any essentials (e.g., name or intent)
   * *Fallback*: Runs on timeouts, integration failures, state breaks, or exceeded [incomprehension events](#custom-app-settings) that are not handled by a knowledge base. Route here to recover gracefully and guide the user forward
   * *Unknown*: Runs when the AI cannot match the user's response to any flow or provided choices. Use to invoke a knowledge base and check a question against a repository of information
   * \[Optional] *Escalation*: Runs when a node hits the escalation path
6. Click *Save*
   {% endstep %}

{% step %}

### Guardrails

Optionally apply [guardrails rules](/platform/nlx-platform-guide/governance/guardrails.md) that were defined in the workspace for any user inputs and/or application outputs:

7. Select + Add guardrail and choose one or more guardrails
8. Click *Save*
9. \[Optional] For applications with multiple assigned channels, you can disable guardrails on a per-channel basis. Select a channel in your app's delivery section and turn on Skip guardrails to stop guardrails from applying to its conversations
   {% endstep %}
   {% endstepper %}

## Step 3: Deploy

Deploying an application allows you to construct a build that contains a package of the flows, AI engine, settings, and delivery details in the state they exist at the time the build is created. You may then deploy a successful build to make it live or roll back to a previous deployment.&#x20;

{% @arcade/embed flowId="xWEZITHYr3SQGsxqQTdI" url="<https://app.arcade.software/share/xWEZITHYr3SQGsxqQTdI>" %}

{% stepper %}
{% step %}

#### Build

1. Click deployment status in upper right and choose *Build and deploy*
2. Review the *Validation check* for critical errors or detected UX issues in custom flows. Before each new build initiates, a validation check is run to provide a preview of potential errors that may cause failed builds. Detected issues are listed with descriptions and potential solutions
3. Select Build after reviewing validator
4. \[Optional] Provide a *Description* of notable build edits as a changelog
5. Click *Build*

You can now test your newest build in your workspace using any of the [test chats](/platform/nlx-platform-guide/ai-applications/testing.md).&#x20;

{% hint style="warning" %}
Experiencing a *Failed* build? Select the *All builds* option in the deployment menu and click the failed build to view details on what caused an error.
{% endhint %}
{% endstep %}

{% step %}

#### Deploy

Channel(s) provides the frontend interface (how users experience your app). Deploying a build pushes your updates through any delivery channels setup on the app, effectively making your app available outside of your NLX workspace.

6. Click deployment status in upper right and select *All builds*
7. Choose *Deploy* on a successful build
   * \[Optional] *Deployment languages*: Select the languages to include in the deployment, if multiple are available
8. Click *Deploy*

{% hint style="info" %}
Enable *One-click deploy* to auto-deploy every new build. From the deployment status, open *Deployment settings* and turn *One-click deploy* on. All future builds will deploy automatically.
{% endhint %}

Once a build is made, flows can be further edited without affecting a deployed application. Only deploying a new build will impact live applications. One build may be deployed at a time and deploying any build deactivates the previous one. You can freely alternate between newer and older builds using *Rollback* or *Deploy.*
{% endstep %}

{% step %}

#### Implement

9. Click the *Configuration* tab of your application and choose any channel assigned in the *Delivery* section
10. Choose the *Setup instructions* tab and follow instructions for installing to your [chosen communication channel](/platform/nlx-platform-guide/ai-applications/deployment/managing-channels.md)
    * For finalizing MCP, follow [these instructions](/platform/nlx-platform-guide/ai-applications/deployment/mcp-server.md#step-3-install) for your chosen MCP client
      {% endstep %}
      {% endstepper %}

{% hint style="info" %}
Want to take your app offline? Click the deployed build > Select *Deployment* tab in modal > Scroll to *Danger zone* and click *Delete* *deployment*. The app stays offline until you redeploy.
{% endhint %}

Once you deploy a build, you may use your application outside the NLX workspace in two ways:

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Delivery channel</strong></td><td>Interact with the app through the channel where it’s installed (e.g., web chat via API channel, voice, SMS)</td></tr><tr><td><strong>NLX hosted</strong></td><td>Open the hosting URL from a deployed build to chat with the app. Hosting must be enabled when you deploy</td></tr></tbody></table>

## App settings

Select your app's *Settings* tab to access the following:

<details>

<summary>General</summary>

Provide a workspace description of your app with any relevant resource tags for better filing and organization.

</details>

<details>

<summary>AI settings</summary>

* *AI description*: Input a brief description of the application for Model Context Protocol (MCP) Clients to reference when using your app as an [MCP server](/platform/nlx-platform-guide/ai-applications/deployment/mcp-server.md)
* *NLX Boost*: Choose *Enable NLX Boost* to enhance the performance of your AI engine with generative AI [intent classification](/platform/nlx-platform-guide/flows-and-building-blocks/overview/setup.md#routing)
  * *Allow NLX Boost to override the NLP*: Enabling this relies on NLX's built-in generative AI to detect user intent (based on your routing data) and route to a flow accordingly, regardless of the AI engine's detected match

</details>

<details>

<summary>Advanced</summary>

* *Child-directed*: For applications subject to COPPA. Utterance information will not be stored if enabled
* *Autocorrection*: For supported NLPs, spell correction will be applied towards written user responses
* *Repeat on incomprehension*: If a user's response is unclear, the application will repeat its last message to the user
* *NLP confidence threshold*: When an utterance is at or above this value, your application assumes it matched to a flow with certainty
* *Negative sentiment threshold*: The flow assigned to the *Frustration* default will be triggered when negative sentiment is detected above this threshold by the NLP (e.g., profanity, sarcasm, etc.)
* *Incomprehension count*: Define the number of sequential utterances that the application asks for clarity on before an escalation or *Unknown* flow is triggered
* *Conversation timeout (min)*: Sets the timeout period for all channels on your application. If a timeout was also configured for a channel when [managing channels](/platform/nlx-platform-guide/ai-applications/deployment/managing-channels.md), that channel's setting will take precedence over the application's setting
* *Default project ID*: Default Project ID when using Google's Dialogflow NLP

</details>

<details>

<summary>Automated tests (enterprise)</summary>

See the [Automated tests](/platform/nlx-platform-guide/ai-applications/setup/automated-tests.md) setup for complete setup and instructions

</details>

<details>

<summary>Languages (check the list of <a href="/pages/MP1sR6LZKcvYfBrr8oJ4#supported-languages">supported languages</a> in your workspace)</summary>

* Choose which languages your application supports when in production. Though the flows attached to your application may be set up and developed in several languages, your application ultimately decides which to provide when released.&#x20;
* Expand either Main language or any Supported language to view advanced settings:
  * *Use native NLP*: Sends a user's utterance to the NLP directly without translation
  * *Region*: Global is chosen by default but may be toggled to EU for compliance and performance when using Dialogflow's NLP
  * *Dialogflow project ID*: If using Dialogflow's NLP, enter the project ID generated on the application's deployment tab
  * *Amazon Lex Voice*: If using Amazon's Lex NLP for voice channels, select the conversational AI voice to be used. You may listen to the selection of [Amazon Polly voices here](https://aws.amazon.com/polly/features/)

{% hint style="info" %}
When an application is created, it also inherits the list of workspace languages that have been pushed to all resources. Under *Main language*, the default language is English (US), while *Supported languages* lists any additional workspace languages applied via *Translations*.&#x20;

Need to adjust languages and translations at the workspace level? See [*Translations*](/platform/nlx-platform-guide/flows-and-building-blocks/advanced/translations.md)*.*&#x20;
{% endhint %}

{% hint style="warning" %}
As some voice channels leverage NLP models to convert audio inputs to text, check your NLP provider's supported languages for phone-enabled applications deployed with NLX.

[**Amazon Lex V2**](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html)

[**Google Dialogflow**](https://cloud.google.com/dialogflow/es/docs/reference/language)
{% endhint %}

</details>

<details>

<summary>Lifecycle (enterprise)</summary>

Choose any [*Lifecycle hook*](/platform/nlx-platform-guide/flows-and-building-blocks/advanced/lifecycle-hooks.md) (enterprise only) created within your workspace that enables your application to retrieve and use content from external resources or trigger an external operation during specific points within the application's conversation session. The following are all lifecycle types available to configure on your application:

* *Conversation start*: Triggers when a conversation session starts
* *Conversation end*: Triggers when a conversation session ends/times out
* *Escalation:* Triggers when an [Escalate node](/platform/nlx-platform-guide/flows-and-building-blocks/overview/nodes.md#escalate) is hit and the agent escalation transfer initiates
* *Message received*: Triggers whenever a user submits a message (utterance)
* *State modification*: Triggers when a node is hit that includes [*State modifications*](/platform/nlx-platform-guide/flows-and-building-blocks/overview/nodes.md#state-modifications) applied to one or more Data requests where the [*Stream state modification*](/platform/nlx-platform-guide/integrations/types/data-requests.md#data-request-settings) setting is also enabled

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nlx.ai/platform/nlx-platform-guide/ai-applications/setup.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
