A field-service business delivers work in one of three ways: it dispatches every job to subcontractors and earns the margin on the spread, it self-performs with its own crew, or it does both. Biloh serves all three postures through one tenant setting — scheduling.delivery_model = subcontract | self_perform | hybrid — rather than shipping two different products. The setting drives progressive disclosure, so full control is never removed; only the emphasis changes.
Why one setting instead of two products?
The two postures share almost everything — clients, sites, recurring cadences, invoicing, the whole event spine. What differs is which action an operator reaches for first. A dispatch-first operator wants Assign and Dispatch to lead; an owner-operator wants "I'm doing this one" and Complete to lead. Splitting that into separate products would fork the codebase over a difference of emphasis. A single configuration value captures it, and a second tenant flips postures by changing that value alone — no code path of its own.
How each posture behaves
- subcontract (default) — primary actions are Assign and Dispatch. Operator lifecycle controls (hold, cancel, complete-on-behalf) live behind the Job Command Sheet, present but not shouting.
- self_perform — adds a one-tap Do it myself (assign-to-self plus dispatch in a single move) and leads the run sheet with Complete.
- hybrid — both, for the operator who self-performs but subs out the overflow.
How does self-delivery keep the books straight?
Your own crew is modelled as a real internal contractor row, not a special case. That means payables, contractor earnings, and completion evidence all flow through the same machinery whether a job is done in-house or handed to a subcontractor. Two tenant settings tune the money side: whether internal-crew jobs bypass the subcontractor compliance gate (they do by default — it's your own labour), and whether completing an internal job books a payable (off by default, because own labour is not a sub cost).
What never changes
Across every posture the non-negotiables hold: jobs are scheduled by the day, completed work is never mixed with active work, and the full triage sheet is always available. The delivery model is emphasis, not amputation.