Skip to content
TriedDocs
Conversation flow

Extract variables node

Pull named values out of the conversation into dynamic variables at a fixed step of a flow, then branch on them.

The Extract Variables node (type: "extract_dynamic_variables", node list label Extract Variable) runs one extraction LLM call when the flow reaches it and saves the results as dynamic variables. It says nothing. Put it after the conversation node that collects the details, and before a logic split or a function that needs them.

Configure#

  1. Add an Extract Variable node.
  2. Under Variables to extract, add one row per value: type (Text, Selector, Boolean, Number), name, Description and, for Selector, Choices, comma separated.
  3. Add transitions. New nodes start with a prompt transition "Extracted"; equation transitions on the extracted variables are faster and deterministic.

How it runs#

  1. One LLM call with the whole conversation fills in the variables, using a schema built from your rows.
  2. Values that are empty or missing are skipped; the rest are saved as strings in collected_dynamic_variables.
  3. Transitions are evaluated: equations top to bottom, then prompt transitions and global nodes (separate LLM call). This node type has no else edge; if nothing matches, the flow stays in the node and the agent replies.

Fields#

Field Type Description
type "extract_dynamic_variables"
variables array of fields {type, name, description, choices?, examples?, required?}
edges array of edges

Field types: string, enum, boolean, number. required: true (API only) marks the value as required in the extraction schema.

{
  "id": "node_extract",
  "type": "extract_dynamic_variables",
  "name": "Extract details",
  "variables": [
    { "type": "string", "name": "caller_name", "description": "Caller's full name" },
    { "type": "enum", "name": "reason", "description": "Why they called", "choices": ["booking", "billing", "other"] }
  ],
  "edges": [
    {
      "id": "edge_have_name",
      "destination_node_id": "node_route",
      "transition_condition": { "type": "equation", "equations": [{ "left": "{{caller_name}}", "operator": "exists" }], "operator": "&&" }
    },
    {
      "id": "edge_no_name",
      "destination_node_id": "node_ask_name",
      "transition_condition": { "type": "equation", "equations": [{ "left": "{{caller_name}}", "operator": "not_exist" }], "operator": "&&" }
    }
  ]
}

Tips#

  • Cover every outcome with equations (exists and not_exist pairs work well) so the flow never stalls here.
  • Describe each variable precisely: format, units, what to do when unclear.
  • In a component, every variable must have a name before the component can be saved.
  • In flex mode, this node does not extract; it becomes a "Make sure you know" line in the prompt.