Draw the path. Bulk runs the job.
Changing how you build should not need an engineering ticket. Draw the path on a canvas and Bulk compiles it into the rules every job runs.
- 8 branches per split
- 50-iteration loop cap
- One active version
- No engineering cycle
Drag the steps. Wire the path.
Compile.
Five kinds of block, one canvas.
Everything on the canvas is one of a handful of node types. Drag them from the dock, wire them together, and configure each one in a focus modal. No two routings look alike, but they're all built from the same parts.
Resource step
A real manufacturing step bound to a workstation, carrying production modes, items, documents, planned minutes, a signature requirement and field-update timestamps.
Conditional split
An ordered IF / ELSE-IF decision with up to eight branches plus an implicit ELSE. The first matching formula wins, the rest are skipped.
Repeat group
A do-while container: the steps inside re-run as iterations until an exit condition is met, or a cap of up to 50 passes, then block for review or proceed with a warning.
Integration
An automated side-effect that fires inside the flow: Generate PDF against a published template, or Send Email to up to three recipients with variable substitution.
Start & End
Fixed entry and exit markers, created automatically and non-configurable. Every routing begins at Start and resolves at End.
Invoicing
A special system step that may appear at most once per routing. A job is invoiced exactly once, so the compiler enforces a single Invoicing node.
First match wins.
A conditional split holds an ordered list of branches, each guarded by a typed formula. Bulk evaluates them top-down and takes the first that's true; if none match, the ELSE outlet runs. Every branch is automatically classed as a creation-time or execution-time decision.
- Ordered IF / ELSE-IFReorder branches by drag; the first true formula short-circuits the rest.
- Timing, derived for youThe compiler reads which fields a formula touches and stamps when it can decide.
- On-error fallbackChoose what happens if a formula can't resolve: true, false, skip or block.
Run it again until it passes.
Wrap a set of steps in a repeat group and they re-run as iterations until the exit condition is true. Each pass re-materialises the member steps as the next iteration, the natural shape for a make-then-check loop that shouldn't move on while there are defects.
- Exit condition formulaWhen TRUE the job moves on; when FALSE the steps run again.
- A cap that can't run away1–50 iterations; at the limit, block for review or proceed with a warning.
- Drag steps in and outMember steps sit inside the container on the canvas. Drag to add or remove.
A small language for every decision.
Branches and loop exits are written in one typed expression language: field refs, aggregates and operators, with @-autocomplete as you type. The analyzer type-checks against your field catalogue and works out whether a condition decides at creation or execution time.
Edit a live routing without breaking it.
You never edit the live version in place. Every routing keeps a live (active) version that new jobs use and a working draft you compile and publish, and existing jobs keep the snapshot they were created with, no matter what you change next.
Draft
An editable version: clone the active routing or start fresh, then build on the canvas.
Compiled
Save & Compile validates the graph and emits rules; cleared whenever the workflow changes.
Active
Publishing makes it live. Exactly one active version per routing; the previous one is archived.
Archived
Superseded versions are kept, read-only. The full history stays in the version drawer.
Questions, answered.
What is Bulk Routing?
It is a visual no-code builder for your process: drag step blocks onto a canvas, wire in branches and loops, and Bulk compiles the graph into the executable rules that build every production job.
Do I need an engineer to change a workflow?
No. Routing is a visual no-code builder, so you draw the path yourself and Bulk compiles it. No engineering cycle for a workflow change.
How do conditional branches work?
A conditional split supports up to 8 branches plus an implicit ELSE. They are evaluated top-down, and the first match wins.
Can a routing loop run forever?
No. A loop is a do-while capped at 50 iterations, so it can't run away. At the cap it blocks for review or proceeds with a warning.
What does the compiler do?
The compiler validates structure, detects cycles, topologically sorts the graph into tiers, and emits the executable rules that build every job.
What happens to jobs when I publish a new version?
There is always exactly one active version per header. Publishing archives the last one, and jobs already running keep their original snapshot.
Stop hard-coding the way you build things.
Bring one of your real processes (branches, rework loops, the lot) and we'll draw it on the canvas and compile it live, so you can watch it become jobs.
