> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dialai.ca/llms.txt
> Use this file to discover all available pages before exploring further.

# Key Concepts

> The vocabulary you need before building flows and agents

This page is the glossary. Everything else in the **Building & Managing Flows** group assumes you know these terms.

## Flow

A **Flow** is a structured sequence of states and transitions that guides a conversation between your AI agent and the customer. A flow has an **initial state**, branches based on what the agent learns during the conversation, and ends when the agent (or a function) decides the interaction is done.

Flows are customer-facing. They run on every channel — voice, SMS, web chat, email, Slack.

See: [Flows](/flows), [Building Your First Flow](/first-flow).

## State

A **State** is one step inside a flow. Each state has:

* A **Thought** — the instructions that tell the AI agent what to say or do here.
* A set of **Functions** the agent is allowed to call from this state.
* Outgoing **Transitions** to other states, each triggered by an **Event**.

The agent stays in a state until a transition fires.

## Transition

A **Transition** is a directed edge from one state to another, triggered by a named **Event**. Transitions are how flows branch — different events from the same state can lead to different next states.

## Event

An **Event** is a named outcome a function can emit. Functions declare the events they may emit; transitions listen for them. Example: a `Lookup Account` function might emit `AccountFound` or `NoAccountMatch`, each driving the flow to a different state.

## Thought

A **Thought** is the natural-language instruction attached to a state. It tells the AI agent how to behave at this point in the conversation — what to say, what data to collect, when to call functions, how to handle edge cases.

Well-written thoughts use strong directives ("must", "will") and reference function names explicitly. See [Designing Thoughts](/thoughts) for the full guide.

## Function

A **Function** is a piece of JavaScript the agent can call. Functions can:

* Take in **parameters** from the agent, from conversation context, or from flow-level static configuration.
* Return a **response** the agent will see.
* Set **context additions** for use by later functions.
* Emit an **event** that drives a state transition.

See [Functions and Events](/functions-and-events).

## Parameter

**Parameters** are data values used inside a flow. Four kinds:

* **Normal parameters** — passed to a function by the agent at call time.
* **Internal (context) parameters** — values set by a previous function or by the runtime, available to later functions.
* **Static parameters** — flow-level configuration (API keys, base URLs, feature toggles). Configured under **Configure Flow > Variables**.
* **Emitted context additions** — context keys a function may write. Declaring these enables UI suggestions and a warning when a function writes an undeclared key.

## Agent

An **Agent** is an internal AI assistant your team uses inside the platform — for analysis, reporting, or back-office tasks. Agents are not customer-facing. They live alongside flows on the Build page for convenience.

See [Agents](/agents).

## Point of contact (POC)

A **Point of Contact** is the channel that connects a flow to the outside world — a phone number, SMS line, email address, web chat snippet, or Slack workspace. One flow can serve many POCs; one POC runs exactly one flow at a time.

See [Points of Contact](/points-of-contact).

## Skill

A **Skill** is a named capability that human agents have (e.g., Billing, Spanish, Fraud Assistance). When a flow hands off to a human, the routing engine matches the conversation's required skills against the available human agents.

See [Operations > Skills](/operations#skills).

## Draft vs Published

Every flow has a **draft** (the version you're editing) and zero or more **published** versions. Points of Contact reference a specific published version, so editing a draft never disrupts traffic. Hit **Publish** to cut a new immutable version and update the POCs that should pick it up.

## Test Scenario

A **Test Scenario** is a recorded simulated conversation used to assert flow behavior. Scenarios can be replayed across flow versions to catch regressions before publishing.

See [Testing Flows](/testing-flows).

## Document

A **Document** is reference material the AI agent can search during a conversation. Documents can be uploaded directly, or sourced from a connected S3 bucket or Confluence space.

See [Manage Documents](/manage-documents).

## FAQ

An **FAQ** is a Q\&A pair attached to a flow. FAQs are surfaced to the agent when the customer's message matches the question.

See [FAQ](/faq).

***

## Related

<CardGroup>
  <Card title="Build your first flow" icon="pen-to-square" href="/first-flow">Apply the concepts.</Card>
  <Card title="Flows overview" icon="diagram-project" href="/flows">Manage flows.</Card>
  <Card title="Flow configuration" icon="sliders" href="/flow-configuration">Every flow setting, explained.</Card>
</CardGroup>
