The canvas

Nodes, edges, connection rules, statuses, and what running or resetting a node actually does.

The canvas is a small, fixed set of rules repeated across every project. Once you know them, every node behaves the same way regardless of which one it is.

Nodes and edges

A node is one step in the pipeline. An edge is the arrow connecting two nodes — it means "the thing on the left feeds the thing on the right." You can't connect anything you like to anything else: each node type only accepts certain inputs, and the canvas rejects (or reverts, instantly) any connection that doesn't make sense.

This node... ...only accepts a connection from
Variables Dataset
Period Variables
EDA / a model (Robyn, Meridian, PyMC) Period, or Variables directly (skipping Period uses the full date range)
Allocator any trained model — Robyn, Meridian, or PyMC
Benchmark any model or any allocator, and it accepts more than one
Dataset, Note nothing — they don't take an input

Only Benchmark accepts multiple incoming connections; every other node takes exactly one. That's what lets a Benchmark line up several models (and their allocators) side by side for comparison.

Allocator nodes accept any engine on purpose. When you drop a bare "allocator" from the sidebar it's generic until you connect it — only then does it lock to Robyn, Meridian, or PyMC, based on whatever it's wired to.

Node status

Every node that actually runs (a model, an allocator; EDA runs synchronously and finishes almost immediately) moves through the same five states:

Status Meaning
Pending Dropped on the canvas but not wired up or configured yet.
Configured Set up and ready — connected, its modal filled in and saved, but not started.
Processing Running. Click the node to open the progress drawer.
Completed Finished successfully — results are ready to view.
Error Failed. Click the node to see the log and find out why.

Dataset, Variables, and Period don't "run" — they show Configured once they're filled in, since there's nothing to wait on.

Running and canceling

The canvas doesn't dispatch one node at a time — clicking Run on the canvas toolbar starts every configured model and EDA node at once (and any allocator whose model has already finished). If your plan limits how many models can run at the same time, extra ones simply wait their turn and show as Queued; they start automatically as slots free up.

Cancel stops whatever is currently in flight. A canceled node goes back to Configured — canceling never leaves partial or misleading results behind, so there's nothing to view until you run it again.

Watching progress

Click a Processing node to open the log drawer. You'll see the current stage, a live count of real work where the engine reports one (trials for Robyn, iterations for Meridian/PyMC), and elapsed time — deliberately never an ETA or a percentage. How long a run takes depends entirely on the iteration/trial counts you chose, so any fixed estimate would just be a guess dressed up as a number.

The run progress drawer with live logs
The run progress drawer with live logs

"Configure again" — what it actually discards

There's no "edit" button for a model or an allocator once it's connected — only Configure again. That's intentional: changing a model's settings means retraining it, so "editing" it in place would be misleading. Configure again discards the node's results and everything wired downstream of it, then leaves it pending so you can fill in the modal again. The wiring itself stays put — you're not rebuilding the canvas, just redoing what's inside one box and whatever depended on it.

A few nodes behave a little differently:

  • Variables is the one place you do edit in place — since datasets and mappings can be shared across more than one flow on the same canvas, the modal warns you how many trained models depend on the mapping you're about to change before you save.
  • Period, because changing dates always implies retraining, works like a reset: discard and reopen the modal pre-filled with the old dates so you can adjust and resubmit in one step.
  • Changing which Pareto solution a Robyn allocator uses discards every allocator connected to that model (not the model itself) — each allocator optimizes against the response curves of one specific solution, so it stops being valid the moment you pick a different one.

Note nodes

A Note is the one node that isn't part of the pipeline — it doesn't connect to anything. Use it to leave context on the canvas itself: why a period was chosen, what a client asked for, a reminder for next quarter.