Skip to main content
A bulky and heavy goods operation delivers and installs large items with a mix of in-house two-person crews and solo drivers, alongside subcontracted routes that need a guaranteed minimum payout to be worth running, and customer returns that can’t be picked up while the truck is already loaded past a safe weight.

What makes this vertical distinctive

  • Capacity-gated customer returns — a customer return is only picked up once the truck’s delivery load has dropped under a set weight, not on a fixed slot.
  • Subcontractor revenue floor — every subcontracted drop guarantees a minimum payout per stop, on top of its per-unit rate.
  • Equipment-dependent service time — a solo crew without a dolly takes measurably longer on a heavy item than a two-person crew.
  • Two-person crews — heavy items are only assigned to crews certified for two-person handling.

Combined example

Capacity-gated customer returns

Every delivery stop declares how much it adds to weight_delivery and weight_pickup; order-customer-return’s pickup adds to weight_pickup instead. The atLeastOneConstraint requires, at every stop, either no pickup has happened yet (weight_pickup: 0) or the remaining delivery load is under 400 kg (weight_delivery: 400) — so the return can only be placed once the truck has already dropped enough deliveries to be safely under that threshold. See Multi-compartment vehicles for the general atLeastOneConstraint mechanism, and Sequencing pickups after deliveries for the simpler single-capacity version of this same pattern.

Subcontractor revenue floor

team-two-person.cost.costsByCapacity.revenue sets a costFloor of 650 with costCoeff: 1 — the resource’s cost is charged as if it had generated at least 650 units of revenue, regardless of the actual sum from its assigned stops (here, order-subcontracted-drop.capacities.revenue: 40). Comparing that guaranteed-minimum cost against the resource’s real payout is what turns a per-unit rate into a revenue floor. See Guaranteeing a minimum per-tour revenue via costsByCapacity — the exact worked example this follows.

Equipment-dependent service time

additionalOperationDurations adds 20 minutes to every job:heavy-item stop when it’s served by a resource tagged equipment:solo-no-dolly — the base operationDuration on the stop stays the crew-agnostic default, and the solo penalty is added only for the resources it actually applies to. See Plan-level fields.

Two-person crews

order-heavy-item.requiredSkills: ["team_of_two_required"] only matches resources carrying that same skill — team-two-person qualifies, team-solo doesn’t. See Driver skills and qualifications.

See also

  • Cost modeling — the costsByCapacity revenue-floor pattern.
  • Modeling advanced constraints — capacity-based sequencing, and the atLeastOneConstraint/atLeastOneValidCapacity building blocks.
  • Data model — the full additionalConstraints and globalConstraints catalog.