> ## Documentation Index
> Fetch the complete documentation index at: https://developers.kardinal.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Parcel & express

> PUDO gated by capacity, zone preference, a mixed last-mile fleet, and predictive traffic on one urban network.

A parcel and express network runs a mixed fleet — vans, bikes, walkers — out of one or a few urban depots, serving high-volume same-day and next-day deliveries alongside PUDO (pickup/drop-off point) rounds. Drivers tend to specialize in a sector they know, and travel time in a dense city center is dominated by traffic that's largely predictable hour to hour.

## What makes this vertical distinctive

* **PUDO gated by capacity** — a PUDO pickup only gets scheduled once the vehicle still has room for it, not on a fixed slot regardless of load.
* **Preferred zones** — drivers are softly tied to their usual sector, and only pulled elsewhere once it's been served or would otherwise overflow.
* **Mixed last-mile fleet** — vans, bikes, and walkers each cover the part of the city they're actually suited to.
* **Predictive traffic** — forecast travel time is baked into the route calculation itself, not patched onto the result afterward.

## Combined example

```json theme={null}
{
  "resources": [
    {
      "id": "van-1",
      "vehicleProfile": { "type": "car", "withTraffic": true },
      "capacities": { "parcels": 40, "weight": 600 },
      "preferredStopTags": ["zone:usual-sector-7"]
    },
    {
      "id": "bike-1",
      "vehicleProfile": { "type": "bicycle" },
      "capacities": { "parcels": 12 },
      "tags": ["zone:dense-center"]
    },
    {
      "id": "walker-1",
      "vehicleProfile": { "type": "pedestrian" },
      "capacities": { "parcels": 6 },
      "tags": ["zone:pedestrian-only"]
    }
  ],
  "orders": [
    {
      "id": "order-standard-delivery",
      "stops": [
        {
          "type": "single",
          "id": "stop-customer-1",
          "position": { "lon": 2.3622, "lat": 48.8386 },
          "kind": "delivery",
          "operationDuration": "PT8M",
          "capacities": { "parcels": 1, "weight": 150 },
          "tags": ["zone:usual-sector-7"]
        }
      ]
    },
    {
      "id": "order-late-pickup",
      "stops": [
        {
          "type": "single",
          "id": "stop-pudo-pickup",
          "position": { "lon": 2.3222, "lat": 48.8716 },
          "kind": "pickup",
          "operationDuration": "PT3M",
          "capacities": { "parcels": 1, "weight": 15 }
        }
      ]
    }
  ],
  "additionalConstraints": [
    {
      "type": "atLeastOneValidCapacity",
      "capacities": { "weight": 300 },
      "name": "pudo-pickup-once-under-300kg"
    }
  ]
}
```

### Gating a pickup by remaining capacity

`order-late-pickup`'s stop carries no time window of its own — instead, an `atLeastOneValidCapacity` constraint requires every vehicle to stay under 300 kg of load at every stop. Since the pickup adds to that load, the engine can only place it once the van already has enough room, which in practice pushes it toward the end of a round rather than the start. See [Sequencing pickups after deliveries](/guides/advanced-constraints#sequencing-pickups-after-deliveries) for the general mechanism.

### Preferred zones

`van-1.preferredStopTags: ["zone:usual-sector-7"]` is matched against the same tag on `stop-customer-1`. This is a soft pull, scored through the `maximizePreferredStops` objective, not a hard restriction — a van without spare capacity in its sector still gets sent to overflow stops tagged `zone:overflow` elsewhere. It's the same `preferredStopTags` mechanism [Driver skills and qualifications](/guides/advanced-constraints#driver-skills-and-qualifications) documents for a skill preference, applied here to a zone instead.

### Mixed last-mile fleet

`vehicleProfile.type` differs per resource (`car`, `bicycle`, `pedestrian`), each sized with its own `capacities` — a walker carries a handful of parcels, a van dozens. The engine assigns each stop to whichever profile can legally and practically reach it. See [Vehicle profiles](/reference/data-model#vehicle-profiles).

### Predictive traffic

`van-1.vehicleProfile.withTraffic: true` makes the engine use forecast travel times for that vehicle's legs instead of free-flow distances, so the plan already accounts for congestion rather than needing a correction pass after the fact.

## See also

* [Modeling advanced constraints](/guides/advanced-constraints#sequencing-pickups-after-deliveries) — the `atLeastOneValidCapacity` mechanism behind PUDO gating.
* [Modeling advanced constraints](/guides/advanced-constraints#driver-skills-and-qualifications) — `preferredStopTags`, the soft mechanism behind zone preference.
* [Data model](/reference/data-model#vehicle-profiles) — vehicle profile types and the fields that vary per profile.
* [Data model](/reference/data-model#constraints-catalog) — the full `additionalConstraints` and `globalConstraints` catalog.
