Skip to content

— primitives

35 step types.
pick from the ones
that already match.

your dispatcher invented your workflow. your senior tech corrected it. it lives in a binder, a checklist, and someone's head. we gave it 35 step-type primitives — every one a 1:1 with a move you already make on a job.

v0.1 · 20264 groups35 primitives
cap 10 of 35

the field is talking back.

c.01

photo

on-device watermark, required-shot list, photo grid.

produces · evidence(photo)

c.02

video

clip with caption. compressed on-device.

produces · evidence(video)

c.03

form

typed fields with conditional logic. validation.

produces · job_values(form)

c.04

signature

drawn signature. on-device pdf.

produces · evidence(sig)

c.05

scan

barcode + qr scanner (one-shot or list).

produces · job_values(scan)

c.06

qr code

dedicated qr capture.

produces · job_values(scan)

c.07

measurement

typed measurement with units, tolerance flag.

produces · job_values(meas)

c.08

location

drop a pin. captured gps + accuracy.

produces · job_values(geo)

c.09

multi pin

many pins on one map. surveys, walks.

produces · job_values(geo[])

c.10

document view

shows a pdf or manual in flow.

produces · audit_log(view)

dec 8 of 35

the workflow forks.

d.01

single select

one-of-many. drives branches.

produces · job_values(sel)

d.02

multi select

many-of-many. drives branches.

produces · job_values(sel[])

d.03

boolean

yes / no. drives branches.

produces · job_values(bool)

d.04

rating

1–n scale. drives flags.

produces · job_values(rating)

d.05

arrival check

"is this the right site?" geo + manual.

produces · job_values(check)

d.06

service area

geofence the job. flags out-of-bounds.

produces · job_values(geo)

d.07

timer

elapsed-time clock per step.

produces · audit_log(timer)

d.08

info

inline guidance, no input.

sal 9 of 35

quote to contract, in the workflow.

s.01

lead

capture contact + consent.

produces · job_values(lead)

s.02

quote builder

configurator + option spaces + recipes.

produces · job_values(quote)

s.03

quote approve

margin guard + manager approval gate.

produces · audit_log(approval)

s.04

quote proposal

branded pdf render of the quote.

produces · evidence(pdf)

s.05

quote sign

signature on the quote.

produces · evidence(sig)

s.06

quote invoice

invoice generation. tax + terms.

produces · evidence(pdf)

s.07

quote contract

contract on file. terms accepted.

produces · evidence(pdf)

s.08 soon · aug 2026

payment

stripe payment sheet / tap-to-pay (ios).

produces · audit_log(payment)

s.09

terms

terms-of-service acceptance gate.

produces · audit_log(terms)

ctl 8 of 35

the shape of the run.

k.01

section heading

visual divider between phases of a job.

k.02

acknowledgment

"i confirm i did this" gate.

produces · audit_log(ack)

k.03

navigate

hand off to the maps app. captures eta.

produces · audit_log(nav)

k.04

pick customer

choose from the customer roster on device.

produces · job_values(customer)

k.05

pick asset

choose from the asset roster on device.

produces · job_values(asset)

k.06

note

freeform operator note. timestamped.

produces · job_values(text)

k.07

number

numeric input. range + tolerance.

produces · job_values(num)

k.08

date / time

scheduled or captured timestamp.

produces · job_values(ts)

branches and repeaters are not primitives — they are control flow on top of the primitives above. nest any step inside a branch or a repeater. the workflow body is a tree.

35 primitives.
one runtime.