SSM-Audit Q&A Series – Shipping & Logistics (Question 24)

On-time is green, yet dwell and demurrage keep rising

Question
Carrier schedules improved and our on-time delivery KPI is green. But containers keep rolling at the transshipment hub, yard dwell is creeping up at two ports, and demurrage/detention charges are climbing. Weekend arrivals spill into Monday, last-mile misses bunch after cutoffs, and customer calls are up. If we’re “on time,” why does the network feel so costly and brittle?

Answer
Headline on-time can hide flow instability. When arrivals bunch, customs clears unevenly, drayage slots fill late, or chassis supply wobbles, you hit the ETA while costs and stress rise. SSM-Audit adds a stability band beside the logistics KPIs you already track, revealing whether movement is calm and repeatable or spiky and rollover-prone—before it shows up as charges and escalations.

What the bands would have shown 📊
Port/yard dwell stability sliding from A+ to A0 / A- at the two congested gateways
Transshipment rollover rate degrading to A- / A– despite better schedule reliability
Customs clearance time variance worsening to A- (documents complete but timing uneven)
Drayage appointment fill discipline tilting A0 → A- (late bookings, queueing at gates)
Chassis availability stability slipping to A- on peak days
Last-mile capacity match weakening (A0 → A-), causing post-weekend spillovers
Demurrage/detention cost share rising (A-), concentrated on two lanes

What to do now 🛠️

  1. Band by lane and node: dwell, rollover, clearance variance, drayage discipline, chassis stability, last-mile match.
  2. Smooth arrivals: prefer services that land Tue–Thu; split big arrivals across two windows when bands drop.
  3. Pre-clear documents: lock docs 48–72 hours earlier for lanes with A- clearance bands.
  4. Guard drayage & chassis: pre-book gate slots; implement a shared chassis pool where the availability band < A0.
  5. Buffer DC receiving: add Sunday night crew when last-mile bands soften; cross-dock fast movers first.
  6. Report “on-time without rollover” and “dwell under X days” as paired KPIs to prevent green masking.

How SSM-Audit helps (practicalities) 🌟

  • No additional infrastructure: runs beside your TMS/WMS, carrier EDI, and BI exports.
  • Numbers unchanged: your ETA/OTD metrics stay the same; stability is a read-only overlay.
  • Easy to use: spreadsheet/BI friendly; one weekly band panel per lane and hub.
  • Universal language: A++ / A+ / A0 / A- / A– aligns logistics, planning, and finance quickly.

CLI 💻 — try our mini Calculator to identify the drift
(Mini CLI Download Page)

Feed your CSVs and see bands and drift at a glance (numbers unchanged).

# Port/yard dwell stability (days vs target)
ssm_audit_mini_calc logistics.csv --kpi "Port/Yard Dwell" \
  --out bands_dwell.csv --plot_kpi "Port/Yard Dwell" --build_id ship

# Transshipment rollover rate (pct rolled at hub)
ssm_audit_mini_calc logistics.csv --kpi "Transshipment Rollover Rate" \
  --out bands_rollover.csv --plot_kpi "Transshipment Rollover Rate" --build_id ship

# Customs clearance time variance (hours)
ssm_audit_mini_calc logistics.csv --kpi "Customs Clearance Variance" \
  --out bands_clearance.csv --plot_kpi "Customs Clearance Variance" --build_id ship

# Drayage appointment fill discipline (booked on time)
ssm_audit_mini_calc logistics.csv --kpi "Drayage Appointment Discipline" \
  --out bands_drayage.csv --plot_kpi "Drayage Appointment Discipline" --build_id ship

# Chassis availability stability (ratio vs need)
ssm_audit_mini_calc logistics.csv --kpi "Chassis Availability Index" \
  --out bands_chassis.csv --plot_kpi "Chassis Availability Index" --build_id ship

# Demurrage/Detention cost share (% of freight)
ssm_audit_mini_calc logistics.csv --kpi "Demurrage/Detention Share" \
  --out bands_demdet.csv --plot_kpi "Demurrage/Detention Share" --build_id ship

Outputs you will get:

  • CSVs with stability bands for each timestamp (e.g., bands_dwell.csv).
  • Drift charts per KPI (--plot_kpi) showing where flow becomes spiky.
  • Optional alerts if you enable thresholds in your setup.

Technical notes

Representation: x = (m, a) with a in (-1, +1)
Collapse parity: phi((m,a)) = m
Order-invariant pooling:
  U = sum(w_i * atanh(a_i))
  W = sum(w_i)
  a_out = tanh( U / max(W, eps_w) )

Typical bands (example):
  A++: a >= 0.75
  A+:  0.50 - 0.75
  A0:  0.25 - 0.50
  A-:  0.10 - 0.25
  A--: a < 0.10

Navigation
Back: SSM-Audit Q&A Series – Healthcare & Life Sciences (Question 23)
Next: SSM-Audit Q&A Series – Board & Governance (Question 25)

Page disclaimer
Illustrative scenario for research and education. Observation-only; do not use for critical decisions without independent validation.