Skip to main content
Every node in a JDM file has a type that determines its behavior and content structure.

Available node types

Common node properties

All nodes share these properties:

Input node

The entry point for every decision. Receives the data you pass to evaluate().

Output node

The exit point that returns the decision result.

Decision table node

Spreadsheet-style conditional logic with inputs, outputs, and rules.

Content properties

Input column

Output column

Rules format

Each rule is an object with _id and entries keyed by column id:
Leave a cell empty ("") to match any value.

Expression node

Transform data using ZEN expressions.

Content properties

Expression entry

Use $ to reference values calculated earlier in the same node.

Function node

Custom JavaScript for complex logic.
Function nodes support:
  • ES6+ JavaScript syntax
  • async/await for asynchronous operations
  • Built-in libraries: dayjs, big.js, zod

Switch node

Route data through different paths based on conditions.

Content properties

Statement

Connecting switch outputs

Each statement id becomes a source handle for edges:

Decision node

Reference another decision (sub-decision).

Edge schema

Edges connect nodes in the graph: