Output Data - Synthreo Builder
Output Data node for Builder - define the final structured output your AI agent workflow returns, mapping internal variables to response fields for APIs and downstream systems.
Purpose
Section titled “Purpose”The Output Data node is the finalization node in a Builder workflow. It collects data produced by upstream nodes, formats it using a template engine, and exposes the result as the workflow’s final payload. This payload is what the end user sees in ThreoAI, or what is returned to an API caller or downstream system.
Every workflow that returns a result to a user or external system should end with an Output Data node. Without it, the workflow produces no visible output even if intermediate nodes computed values correctly.
How Output Data Appears in ThreoAI
Section titled “How Output Data Appears in ThreoAI”When a Builder agent is published and used via the ThreoAI chat interface or BotX widget, the content rendered in the Output Data node’s data field is what the user sees as the AI agent’s reply. The template engine processes the data field, substitutes variable references with their computed values, and sends the resulting string to the user’s chat window.
Markdown formatting is supported - headings, bullet lists, bold text, and code blocks all render correctly in the ThreoAI interface when the template contains valid Markdown. To render unescaped HTML or Markdown, use triple curly braces: {{{Out.variableName}}}.
Outputs
Section titled “Outputs”- Formatted Payload: A string produced by the selected template engine after substituting all variable references.
- Raw Context (optional): The unformatted value of whatever upstream variables were referenced (useful during development when setting
datato a single variable reference like{{Out.gpt_response}}).
Parameters
Section titled “Parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| data | Rich Text / Template | No | (empty) | The output template. Reference upstream variables using {{Out.variable_name}} (e.g., {{Out.gpt_response}}). Use triple braces {{{Out.variable_name}}} to render unescaped HTML or Markdown content. Static text and variable references can be mixed freely. |
| String Compiler | Dropdown | No | Synthreo String Compiler | Template engine used to process the data field. Synthreo String Compiler handles simple variable substitution and is the fastest option. |
| Suppress Skipped Execution | Boolean | No | false | When set to true, this node runs and produces output even when upstream nodes were skipped (e.g., due to a conditional branch not executing). Use this to guarantee the workflow always returns a response - for example, a fallback message when no data was found or an error summary when processing failed. When false, if upstream nodes were skipped, this node is also skipped and the workflow returns no output for that run. |
| Allow Override | Boolean | No | false | When set to true, permits later nodes or subsequent workflow steps to modify this node’s output after it has been set. Use this when a workflow has multiple possible exit points and a later step needs to replace an earlier output with more specific content. |
Variable Reference Syntax
Section titled “Variable Reference Syntax”Reference any upstream node’s output using the Output Column Name configured on that node:
{{Out.gpt_response}}- references the output of a node whose Output Column Name isgpt_response{{Out.customerData}}- references the output of a node namedcustomerData{{{Out.gpt_response}}}- renders the value without HTML escaping (use for Markdown or HTML content)
Variable names are case-sensitive. If the upstream node’s Output Column Name is gpt_response, writing {{Out.GPT_Response}} will not resolve.
String Compiler Usage
Section titled “String Compiler Usage”The Synthreo String Compiler processes the data template field by finding all {{...}} references and replacing them with the corresponding values from the workflow context. It is the default and recommended compiler for most use cases.
For simple output - a single AI response rendered as text or Markdown - set the data field to:
{{Out.gpt_response}}For structured output combining multiple variables:
**Order ID:** {{Out.orderId}}**Customer:** {{Out.customerName}}**Total:** {{Out.orderTotal}}
**Summary:**{{Out.gpt_response}}For unescaped Markdown content (when the upstream node produces Markdown-formatted text):
{{{Out.gpt_response}}}Example Usage
Section titled “Example Usage”Human-Readable Summary (Markdown)
Section titled “Human-Readable Summary (Markdown)”Compiler: Synthreo String Compiler
## Order Summary
**Order ID:** {{Out.orderId}}**Customer:** {{Out.customerName}} ({{Out.customerEmail}})
**AI Analysis:**{{{Out.gpt_response}}}Pass-Through During Development
Section titled “Pass-Through During Development”While prototyping, set data to a single variable reference to inspect the raw output of an upstream node:
{{Out.gpt_response}}Once you know the shape of the data, narrow the template to only the fields you need.
Fallback Response with Suppress Skipped Execution
Section titled “Fallback Response with Suppress Skipped Execution”When building a workflow where a conditional branch may skip the main processing node, add a second Output Data node on the fallback branch with Suppress Skipped Execution enabled:
- Main path: Output Data node renders the AI response.
- Fallback path: Output Data node with
Suppress Skipped Execution = truerenders a message such as “No results were found for your request.”
This ensures users always receive a response rather than a blank reply.
Best Practices
Section titled “Best Practices”- Begin broad, then narrow: During prototyping, set
datato the full upstream variable (e.g.,{{Out.gpt_response}}), inspect the shape of the response, then narrow the template to only the fields needed. - Choose the right compiler: Use
Synthreo String Compilerfor simple variable substitution. It is the fastest option and handles the majority of use cases. - Use triple braces for Markdown: When an upstream LLM node returns Markdown-formatted text, use
{{{Out.gpt_response}}}to prevent the compiler from escaping special characters. - Enable Suppress Skipped Execution on fallback branches to guarantee users always receive a response even when the main processing path did not execute.
- Use Allow Override when a workflow has multiple conditional paths that may each produce different output - only the last Output Data node to run with Override enabled will determine the final response.
- Keep machine-readable outputs clean: When the workflow result is consumed by another system or API rather than displayed to a human, render only the data fields needed and avoid mixing prose with structured data.
Troubleshooting
Section titled “Troubleshooting”- Blank output: Check that variable names are spelled correctly and match the Output Column Name of the upstream node exactly (case-sensitive). Confirm the upstream node actually ran and produced output.
- Malformed JSON output: When rendering JSON, avoid trailing commas and ensure array or object values are already JSON-encoded if you are embedding them in a larger structure.
- Markdown not rendering: Use triple braces
{{{...}}}instead of double braces{{...}}for content that contains Markdown syntax. - Slow rendering: Prefer
Synthreo String Compilerfor simple outputs and minimize complex expressions in large payloads.
Test Cases
Section titled “Test Cases”- Default pass-through:
data = "{{Out.gpt_response}}", compiler =Synthreo String Compiler- Expected: Thegpt_responsevalue from the upstream LLM node is rendered as a string in the output. - Suppress Skipped Execution enabled, upstream skipped: - Expected: The Output Data node still runs and returns its configured fallback content.
- Unescaped Markdown with triple braces:
data = "{{{Out.gpt_response}}}"- Expected: Markdown formatting in the response is preserved and renders correctly in ThreoAI.