Go to Studio

Brand Kit Variables

Expose Brand Kit fields (text, lists, personas, color palette) as connectable workflow inputs

What does this node do?

The Brand Kit Variables node turns fields from the active Brand Kit (brand name, tone of voice, color palette, personas, content pillars, etc.) into structured workflow inputs you can wire to any downstream node. One node holds many variables — each configured variable exposes its own output port.

Common uses:

  • Inject {{Persona}} data into an LLM prompt without hardcoding it
  • Let App users pick which persona or industry to target at runtime
  • Drive image generation with the brand’s color palette
  • Reuse one workflow across multiple brands by switching the active Brand Kit
Info

One node, many outputs. Unlike most input nodes, Brand Kit Variables creates one output port per configured variable. Add a variable for each Brand Kit field you want to wire — they all live on the same node on the canvas.

Quick setup

Add the node to the canvas

Find it in InputsBrand Kit Variables. Adding the node automatically enables the workflow’s brandForRunner setting so App users can pick a Brand Kit at run time.

Add a variable

Click + Add variable at the bottom of the node settings. Choose the Brand Kit field you want to expose (e.g. Brand Name, Persona, Color Palette).

Toggle multi/single for list variables

For lists (Personas, Industry, Values, …) decide whether the App user picks one item (toggle off) or several / all items (toggle on). Scalars (text, color palette, …) don’t have this toggle.

Wire the output ports

Each configured variable exposes a port on the right side of the node. Connect each port to the downstream node that needs that value.

Configuration parameters

Per-variable settings (canvas)

key select required

The Brand Kit field this variable maps to. Grouped by section: Business info, Brand identity, Audience, Content strategy, Style & voice. Adding the same field twice is allowed (e.g. two Persona instances for “primary” and “secondary”).

multiple boolean default: false

Only meaningful for list fields (string_array, object_array). When false, the App user picks one item and the output collapses to a single element (string or object). When true, the output stays an array and the App user can pick a subset or use all items dynamically.

Canvas configuration

Variables are stored on the node as an ordered list. The node settings panel lets you:

  • Add a variable with the ”+ Add variable” button at the bottom (so new rows don’t push the list off-screen)
  • Pick a variable type from a sectioned dropdown (mirrors the Brand Kit detail page sections)
  • Toggle Multiple on list types (Persona, Industry, Values, Age Category, Content Pillars, Guardrails, Secondary Languages, Sales Distribution)
  • Preview the shape the variable resolves to via a collapsed JSON preview (object / list types) or swatch list (color palette)
  • Remove a variable with the trash icon — its output port disappears from the canvas

The variable list is persisted in the node’s variables input param. Editing the list updates the output ports immediately.

App tab runtime

When an App user runs the workflow, each configured variable renders as a card matching its type:

Variable shapeRuntime UI
Scalar string / boolean (e.g. Brand Name, Mission)Read-only inline preview
Scalar string_long (e.g. About the Brand, Tone of Voice)Read-only preview, clamped to 2 lines with Show more / Show less
Scalar object (Color Palette)Read-only swatch list inside a “Show preview” disclosure
List, multiple=false (e.g. Persona — single, Industry — single)Single-select dropdown — required to run
List, multiple=true (e.g. Persona — multi, Values — multi)Use all toggle: when on, runs across every current item; when off, opens a compact multi-select picker
Info

“Use all” is dynamic, not a snapshot. When Use all is on, the workflow always picks up whatever items exist in the Brand Kit at run time — including items added after the workflow was saved. When it’s off, only the explicitly selected ids are sent.

The App tab card also shows a warning if the active Brand Kit has no Persona configured and a Persona variable is wired.

Workflow setting dependencies

The node depends on two workflow settings, both auto-managed:

SettingPurposeAuto-managed
defaultBrandIdThe Brand Kit the App tab resolves variables againstSet explicitly via workflow settings; required for the workflow to run
brandForRunnerEnables the Brand Kit picker on the App tabAuto-set to True by the canvas effect when at least one Brand Kit Variables node is present

If the active Brand Kit is deleted or never set:

  • Canvas banner warns that the workflow won’t run
  • App tab Run button is disabled
  • The runner enforces the same rule server-side via pre-flight (defense in depth)

Output ports

The node creates one anchor per configured variable, named after the Brand Kit field label (whitespace removed):

VariablePort nameOutput type
Brand NameBrandNamestring
Color PaletteColorPaletteobject
Industry (multi=false)Industrystring (single item)
Industry (multi=true)Industry (Multi)string[]
Persona (multi=false)Personaobject (single persona)
Persona (multi=true)Persona (Multi)object[]
Info

Type collapsing. When multiple is off on a list field, the port type changes from list-of-X to X. A downstream node wired to Industry (single) receives the literal string, not a one-element array. This means you can wire single-pick variables directly into nodes that expect scalars (LLM prompts, conditionals, …) without a list-extraction step.

What does the node output?

At run time, the node emits a port-name-keyed dictionary. Example with Brand Name, Industry (multi=true), Persona (multi=false):

{
  "BrandName": "Stade Rennais F.C.",
  "Industry": ["Sportswear", "Footwear"],
  "Persona": {
    "id": "p1",
    "name": "Sarah, the busy parent",
    "description": "A working parent juggling family and career…",
    "demographics": { "age": "32", "location": "Paris, France" }
  }
}

Each value resolves at run time against the active Brand Kit:

  • Scalars resolve to the current field value (or null if unset)
  • List, multi=false resolves to the selected item (or null if nothing picked)
  • List, multi=true, Use all resolves to the full current list
  • List, multi=true, subset resolves to the picked subset (silently dropping items that were deleted from the Brand Kit since the workflow was saved)

Usage examples

Persona-driven content generation

Generate copy tailored to a persona the user picks at run time:

graph LR
    A[Brand Kit Variables: Persona single] --> B[LLM: Generate copy]
    A2[Short Text: Topic] --> B
    B --> C[Output]

The LLM prompt references {{BrandKit_Variables_0.Persona.name}}, {{BrandKit_Variables_0.Persona.description}}, and {{BrandKit_Variables_0.Persona.frustrationsAndPainPoints}}.

Multi-persona loop

Iterate over all current personas in the Brand Kit:

graph LR
    A[Brand Kit Variables: Persona multi, Use all] --> B[Loop]
    B --> C[LLM: Persona-specific message]
    C --> D[Merge]

Brand-coloured image generation

Drive an AI image generator with the Brand Kit’s primary color:

graph LR
    A[Brand Kit Variables: Color Palette] --> B[JSON Path Extractor: $.primary]
    B --> C[Text to Image]

Industry-conditional routing

Route the workflow based on industry selection:

graph LR
    A[Brand Kit Variables: Industry single] --> B{Conditional}
    B -->|Sportswear| C[Sportswear template]
    B -->|Footwear| D[Footwear template]

Best practices

  • One variable per port — split don’t bundle. If a downstream node needs both Persona and Brand Name, add both as separate variables on the same Brand Kit Variables node. Don’t try to wire a single port and split it downstream.
  • Use Use all for newsletter-style workflows. When you want the workflow to automatically cover every persona / value / pillar that exists today and tomorrow, use Use all instead of multi-select. The list stays in sync with the Brand Kit without re-editing the workflow.
  • Prefer single-pick when the downstream node expects a scalar. Wiring a single-pick Persona into an LLM is simpler than multi-pick + a List operation. Type collapsing handles the rest.
  • Wire the JSON Path Extractor for nested fields. For objects (Color Palette, Persona), drop a JSON Path Extractor in between to pull a specific sub-field — its suggestions are pre-populated for each Brand Kit variable shape.
  • Test with an empty Brand Kit. Drop a Persona variable, switch the active Brand Kit to one without personas, and verify the App tab warning appears and the Run button is disabled.

Common issues

The App user sees raw translation keys instead of labels

Cause: The dev server’s Node module cache is holding a stale copy of the translation JSON after a hot reload.

Solution: Hard-refresh the page or restart the dev server. In production this can’t happen — translations are bundled at build time.

The Run button is disabled even though variables are configured

Cause: The workflow’s defaultBrandId is unset or references a deleted Brand Kit.

Solution: Open the workflow settings and pick an active Brand Kit. The canvas banner at the top of the page also explains the issue.

A single-pick variable shows no options in the App tab

Cause: The active Brand Kit has no items for that field (e.g. no Personas configured, empty Industry list).

Solution: Edit the Brand Kit to add items, then reload the App tab. The card shows an “No items available” message so this isn’t silent.

A multi-pick variable submitted with an empty selection is rejected

Cause: When Use all is off, the multi-select requires at least one item before the workflow can run.

Solution: Either pick at least one item or toggle Use all back on. The error message names the variable that failed validation.

A previously picked Persona disappeared from the selection

Cause: The persona was deleted from the Brand Kit between saving the workflow and running it. The resolver silently drops stale ids.

Solution: Reopen the App tab and pick a current persona. Multi-pick selections drop deleted ids on the next run with no error.