How the runtime works
The centerpiece is a real little interpreter - a typed dataflow runtime that actually executes the graph you build, not a script that stamps “completed.”
The data packet
Node reducers
| Node type | What it genuinely does | Output |
|---|---|---|
| trigger | Pulls a seeded row from the connector fabric as the in-flight packet | the source record |
| ai (extract / classify / summarize) | Live OpenRouter call with a strict-JSON prompt; degrades to a deterministic rule-based extractor when no key | fields / label+urgency / summary (+ aiMode flag) |
| transform | Evaluates field = expression mappings with a Pratt-parsed expression engine (no eval) | new typed fields |
| condition | Parses an expression, resolves it against REAL upstream values, returns a boolean | { result } + branchTaken |
| connector | Dispatches to a REGISTERED executing operation - matchPO (2-way match), raisePO (min-max replenishment math), fileResult (PHI-masked EHR filing), createTicket / createIncident (SLA & priority matrices), schedulePayment (refuses packets that failed the 2-way match), appendAuditRow. Writes are returned as auditable fabric deltas. Connector/op pairs with no registered logic return a LABELED catalog echo, never a fake success | op output + FabricDelta[] |
| approval | Halts the run for a human decision; resumable down the matching edge | halt + recommendation |
| delay | A genuine modeled wait - books config.delayMs as work so it lengthens the run's measured latency | { delayedMs } |
| loop | Bounded iteration over a packet array field (config.over); reports a real iteration count | { iterations } |
| email / slack / action | Terminal side-effect; interpolates {{field}} from real packet values | { delivered, renderedMessage } |
Failure taxonomy
A referenced field is missing or the wrong type
A transform/condition expression is malformed (division by zero, unknown fn)
A keyed row is absent (e.g. PO_NOT_FOUND) or a simulated 503
Modeled latency exceeds the node's timeoutMs
Amount exceeds a hard cap (e.g. maxAutoPay)
An approval node pauses the run (resumable, not an error)
Determinism guarantee
Cost & latency model
Illustrative the per-call and per-token rates are placeholders, not sourced vendor pricing; latency bases are plausible-order-of-magnitude models, not benchmarked SAP/Epic round-trips. The formula is disclosed precisely so you can discount it.
Trust & governance
Hover any row for the detail. Listing the gaps is the point - a governance story you cannot falsify is marketing, not engineering.
Who buys this & the honest math
Why now: plain-English generation is commodity (Zapier Copilot, n8n); differentiation moved down the stack to whether each generated node verifiably executes and can be governed.
At these inputs the automation pays back within the month at these assumptions (4.4x monthly cost coverage). Formula: net = invoices x automatable% x (min/60) x $/h - platform cost. Defaults are round illustrative numbers chosen to be edited, not quoted.