Bulk

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.

Repeat · exit: no defects
Start
Resource
CNC Mill
op 20 · 45 min
IfDefects?
SIG
Resource
Final Inspect
requires signature
Resource · loop
Rework
re-runs the loop
Integration
Generate PDF
cert of conformance
End
passdefectsrepeat

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.

OP 30 · Drill + tapWS CNC-204

Resource step

A real manufacturing step bound to a workstation, carrying production modes, items, documents, planned minutes, a signature requirement and field-update timestamps.

IF qty > 100 ELSE-IF material = ALELSE default path

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.

DeburrInspectpass 1 / 50pass 2 / 50

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.

STEP DONEPDFEMAIL

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.

STARTEND

Start & End

Fixed entry and exit markers, created automatically and non-configurable. Every routing begins at Start and resolves at End.

INV-0042 · issuedINV-0042 · again?once only

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-IF
    Reorder branches by drag; the first true formula short-circuits the rest.
  • Timing, derived for you
    The compiler reads which fields a formula touches and stamps when it can decide.
  • On-error fallback
    Choose 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 formula
    When TRUE the job moves on; when FALSE the steps run again.
  • A cap that can't run away
    1–50 iterations; at the limit, block for review or proceed with a warning.
  • Drag steps in and out
    Member 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.

1

Draft

An editable version: clone the active routing or start fresh, then build on the canvas.

editable
2

Compiled

Save & Compile validates the graph and emits rules; cleared whenever the workflow changes.

rules generated
3

Active

Publishing makes it live. Exactly one active version per routing; the previous one is archived.

live · new jobs use this
4

Archived

Superseded versions are kept, read-only. The full history stays in the version drawer.

retained · read-only

Questions, answered.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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.