PortPulsePortPulse

Freight forwarders (3PL)

Stabilize routing and capacity with port-level truth. Comparable metrics across regions let ops teams set lane buffers, trigger exceptions, and evaluate alternative POL/POD before booking.

3PL control tower using PortPulse congestion & momentum signals
One schema, reproducible methods, audit-friendly freshness for lane planning and exception automation.

Pain

  • Volatile delays across trunk & feeder legs; weekend bunching.
  • DIY “wait time” definitions differ by port and vendor.
  • Stale snapshots and opaque freshness break customer updates.
  • Hard to compare gateways for alternative routings.

How we help

  • Comparable avg_wait_hours, dwell, and normalized congestion_score.
  • Freshness SLO (p95 ≤ 2h) with as_of/last_updated for audit.
  • Lane-level rules, alerts, and buffer recommendations you can automate.
  • CSV/JSON parity with strong ETag/304 to keep pulls fast and cheap.

Result KPIs

  • Lower average delay vs. plan on key SKUs.
  • Fewer exceptions & rehandles in cut-off weeks.
  • Reduced demurrage & detention (D&D) exposure.
  • Higher OTIF and customer trust in status updates.

Ops story — from screens to contract

A regional control tower relied on screenshots and vendor dashboards to flag port issues, but the definitions behind “waiting time” varied. Weekend bunching in South China caused last-minute truck reschedules and rolled cargo. PortPulse exposed consistent avg_wait_hours and a normalized congestion_score across LA/LB, Singapore, and feeder hubs. Within a week, the team moved to lane rules and Slack/webhook alerts. Rolled cargo dropped, and buffer days could be justified with data.

curl -H "X-API-Key: DEMO_KEY" \
"https://api.useportpulse.com/v1/ports/CNSZX/trend?days=30&fields=date,avg_wait_hours,congestion_score"

Use the same fields for every port. Add a single cross-port threshold (e.g., congestion_score ≥ 0.65) to standardize alerts and buffers.

Lane widget showing 30-day wait trend and a buffer suggestion
A reusable “lane” widget: last 30 days, current percentile, and a recommended buffer window.

3PL playbook — monitor → decide → act

Monitor

  • Track avg_wait_hours and congestion_score for origin POL and downstream hubs.
  • Watch weekend bunching patterns on feeder transshipment hubs.
  • Keep an eye on p95 dwell for risky terminals (rollover hotspots).

Decide

  • Raise lane buffer when score ≥ 0.65 for 5 consecutive days.
  • Prefer alternative gateway with lower p95 dwell in the last 14 days.
  • Escalate when feeder rollover ratio exceeds policy threshold.

Act

  • Push Slack/webhook exception with last 5 points and action hint.
  • Auto-populate customer status with consistent definitions & freshness.
  • Trigger booking rules to switch gateway or adjust cut-off.

Rule template — raise lane buffer

Use a single, cross-port policy for apples-to-apples automation.

{
  "lane": "APAC -> USWC",
  "ports": ["CNSZX","CNSHA","USLAX","USLGB"],
  "signal": "congestion_score",
  "threshold": 0.65,
  "consecutive_days": 5,
  "action": { "type": "raise_buffer_days", "value": 1 }
}

Rule template — choose alternative gateway

Compare percentiles on recent dwell and pick the safer gateway.

{
  "candidate_ports": ["NLRTM","BEANR","FRLEH"],
  "metric": "dwell_p95_hours",
  "lookback": "14d",
  "select": "min",
  "action": { "type": "recommend_gateway" }
}

Quick demo — fetch & rank gateways

Pull last 30 days and compute a simple risk score that blends absolute hours and normalized congestion.

curl -s -H "X-API-Key: DEMO_KEY" \
"https://api.useportpulse.com/v1/ports/NLRTM/trend?days=30&fields=date,avg_wait_hours,congestion_score" | jq '.'

// Combine with BEANR/FRLEH, compute:
// risk = 0.6 * p95(avg_wait_hours) + 0.4 * max(congestion_score)
// Pick the min-risk gateway for the week.

API endpoints (v1)

  • GET /v1/health
  • GET /v1/meta/sources
  • GET /v1/ports/{code}/overview
  • GET /v1/ports/{code}/trend
  • GET /v1/ports/{code}/snapshot
  • GET /v1/ports/{code}/dwell
  • GET /v1/ports/{code}/alerts
  • GET /v1/hs/{code}/imports (beta)

Contract-first: v1 is frozen; breaking changes go to v1beta with a ≥90-day deprecation window.

Comparable by design

avg_wait_hours, queue_length, berth_efficiency, and normalized congestion_score — definitions you can inspect and trust.

Transparent SLO

Freshness p95 ≤ 2h; edge p95 < 300ms with ≥60% cache-hit target; timestamps & ETags for audit.

Ops-ready

Lane rules, alerts, and buffers map directly to 3PL workflows and customer updates.

Start in days, not months

Start a 14-day evaluation (up to 5 ports) or talk to us about bundles for network-wide coverage.

FAQ

How do we set the same rule across different ports?

Use the normalized congestion_score with a common threshold (e.g., 0.65) and consecutive-day logic. Combine with absolute hours for guardrails.

Can we automate customer updates?

Yes. Use our snapshot/trend endpoints to drive a templated status message with consistent definitions and as_of freshness.

Does CSV match JSON exactly?

Yes — CSV is a first-class contract. It supports strong ETag/304 for cache-friendly pulls in schedulers.

What about transshipment volatility?

Track feeder rollover and yard dwell p95 at key hubs. Use rule templates to raise buffer or route via a safer gateway when variance spikes.