Clean Gantt calendar. 34 vehicles across 8 docks. All blocks in their assigned positions. NOW line at 14:00. Vitals show 0/34 Departed, On-Time 100%.
The plan was generated by Shipsy's constraint optimization engine. It's not a heuristic or a spreadsheet — it's mathematically optimal given the constraints.
COV-V3 (Coventry, Vehicle 3) has an +10m amber badge. Not red. The feed says "Absorbed within buffer." No reschedule happened.
Nobody notices. The 10-minute delay compounds silently. By 2am it's a 30-minute problem.
System detected it, confirmed the buffer absorbs it, and logged it. If it grows past 15 min, it escalates automatically.
BHM-V2 (Birmingham, Vehicle 2) was supposed to depart at 20:45. It's now 21:10 and still hasn't left.
At 20:55, the agent detected the late departure and sent an automatic nudge to the driver: "Depart now to meet your 22:50 dock slot at Hinckley." The driver acknowledged but departed 35 minutes late.
Controller discovers at 01:00 that Dock 3 has been empty for 2 hours. Makes 4 phone calls. Manually rearranges 3 vehicles. Takes 45 minutes. Other docks back up while they figure it out.
Detected at 20:55. Nudge sent automatically. Rescheduled in 2.5 seconds. Cascade resolved. All vehicles still complete before cutoff. Controller was never interrupted.
DER-V2 (Derby, Vehicle 2) departed on time but is now moving slower than expected. Toast: "Congestion on A38. ETA revised." The delay badge grows as the ETA drifts.
The driver is stuck on the A38. Nobody at the hub knows. The dock sits reserved but empty. The next vehicle queues behind it.
Live ETA tracking detected the slowdown mid-transit. Hub controller sees the revised time. If the slot is blown, the system reschedules before the vehicle arrives.
Toggle to Map view. Show the vehicle dots — DER-V2 is the one with the red/amber indicator. All other dots are green and converging on Hinckley. "This is what fleet visibility looks like. Every vehicle, every ETA, live."
Cutoff countdown card turns RED and pulses (< 30 min remaining). A vehicle that accumulated delays is at risk of completing after 04:00. Red toast: "CUTOFF RISK — controller decision required."
At 03:45 someone realises a trailer is still being unloaded. Panic. Phone calls to the night shift manager. No data on alternatives. Rushed decision.
At 03:30 the controller has the alert, three costed options, and 30 minutes to decide calmly.
| Scene | Level | System Action | Human Action | Detection Lead |
|---|---|---|---|---|
| ① Plan Set | Setup | Optimised by solver | None | — |
| ② Absorb | Level 1 | Buffer absorbs it | None needed | Instant |
| ③ Cascade | Level 2 | Auto-reslot + cascade | None needed | 4 hours before impact |
| ④ Congestion | Level 2 | Live ETA revision | None needed | 90 min before arrival |
| ⑤ Cutoff Risk | Level 3 | Escalate with options | Controller decides | 30 min before cutoff |
No. Four-level response: Absorb (buffer handles it, no move), Reslot (find minimum-disruption move including pulling early vehicles forward), Escalate (present options to controller, no auto-decision), Disrupt mode (freeze auto-scheduling for systemic events). The goal is minimum disruption, not just "push later."
Surge vehicles get auto-inserted if hub utilization is below the configured threshold (default 85%). Above that, they queue in the yard with a wait time estimate. If yard wait exceeds 45 minutes, the system recommends redirecting to an alternate hub. Priority hierarchy is always enforced — a surge vehicle won't bump a contracted customer slot.
Tier 0 (Contracted) vehicles are immovable during cascade. The solver gives them 160,000x weight — meaning a single Nike slot is worth more than all depot vehicles combined. During live rescheduling, the cascade protection rule ensures contracted vehicles never get displaced. This is configurable in Setup → Rules & Priority.
The dock plan pushes to hub ops, transport teams, and drivers via API. GPS/telematics feed into the live ETA engine. The solver takes forecast data from your booking system. All standard REST APIs — same integration pattern as Shipsy's existing TMS deployments.
Baseline planning: ~5-10 seconds for 34 vehicles across 8 docks. Live rescheduling: instant (< 100ms). Batch re-solve for systemic disruptions: 5-15 seconds.
Demo files: dpd-hub-planner.html (planner) · dpd-control-tower.html (control tower)
Folder: ~/Desktop/DPD UK/demo/v3-calendar-first/
Server: python3 server.py (port 5050, optional — JS fallback works without it)