Extraction & Variable Nodes
Overview
Flow Builder has two nodes for working with data: the Extraction node uses an LLM to pull structured information out of the conversation, and the Variable node sets values directly without any AI involvement. Together, they form the data backbone of your flows.
Extraction Node
The Extraction node analyzes the conversation history and extracts specific pieces of data into named variables. It uses an LLM call to understand context and pull out the right information — even if the user didn't state it in a clean, structured way.
How It Works
- The engine sends the full conversation history to the LLM along with your extraction definitions.
- The LLM identifies the requested data points in the conversation.
- Each extracted value is stored in the specified variable, typed according to your configuration.
Configuring Extractions
Each extraction has three fields:
| Field | Description | Example |
|---|---|---|
varName | The variable name to store the extracted value | caller_email |
varType | Expected data type | string |
description | Natural language description of what to extract | "The caller's email address" |
Supported Variable Types
| Type | Description | Example Value |
|---|---|---|
string | Text value | john@example.com |
number | Numeric value | 42 |
boolean | True or false | true |
array | List of values | ["Mon", "Wed", "Fri"] |
object | Structured key-value data | {"city": "Austin", "state": "TX"} |
Sentinel Sanitization
The extraction engine automatically cleans up ambiguous or empty values. If the LLM returns any of these sentinel values, they're converted to an empty string:
<UNKNOWN>N/Anullnonenot provided
This prevents your Logic nodes from evaluating placeholder text as real data. An is_empty check will correctly identify data that wasn't found in the conversation.
Edge Handles
| Handle | Position | Color | Purpose |
|---|---|---|---|
| Input | Top | Blue | Receives connections |
| Output | Right | Standard | Next node after extraction completes |
| Async | Bottom | Yellow | Run extraction in parallel |
Tip: Connect Extraction nodes via the async handle when you don't need the extracted data immediately. This keeps the conversation flowing while data is extracted in the background.
Variable Node
The Variable node sets variables to specific values — no LLM call, no extraction. It's purely synchronous and executes instantly.
How It Works
Each assignment has two fields:
| Field | Description | Example |
|---|---|---|
varName | The variable to set | status |
value | The value to assign (supports {{substitution}}) | qualified |
Literal Values
Set a variable to a fixed value:
varName: lead_status value: qualified
Dynamic Values with Substitution
Use {{variable}} syntax to compose values from other variables:
varName: full_address
value: {{street}}, {{city}}, {{state}} {{zip}}varName: api_endpoint
value: https://api.example.com/users/{{user_id}}/appointmentsEdge Handles
| Handle | Position | Color | Purpose |
|---|---|---|---|
| Input | Top | Blue | Receives connections |
| Output | Right | Standard | Next node after assignment |
Using Them Together
A common pattern is to chain Extraction and Variable nodes to collect and transform data:
- Conversation node — Ask the user for their information.
- Extraction node — Extract
first_name,last_name, andemailfrom the conversation. - Variable node — Compose
full_nameas{{first_name}} {{last_name}}. - Logic node — Check if
emailis not empty before proceeding. - Request node — POST the data to your CRM using the extracted variables.
This pattern separates concerns cleanly: the Conversation node focuses on dialogue, the Extraction node handles data parsing, and the Variable node handles data transformation.