Delivery models: dispatch, self-perform, or both

A field business either dispatches work to subcontractors, does the work itself, or both. Biloh serves all three through a single tenant setting — subcontract, self_perform, or hybrid — that changes emphasis via progressive disclosure. Full triage control is always present; only the primary action shifts.

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.

Related

Last updated 2026-07-07