Rows of dark trailers parked at an angle in a night yard, seen from above. A trailer pulls out of its bay along a coral line.

Transportation and logistics

The control tower that acts.

Your visibility platform finds the stall. Our agents close it, day and night. They call the carrier, rebook the failed tender and bill the detention before your dispatchers log in.

Today

Every alert still ends in a phone call.

Ink drawing of a trailer backed into a dock door at night. The dock light is on and the apron is empty.
  • A load turns red. A dispatcher works three portals and a phone while the next load turns red.
  • Detention invoices go out without gate times and come back disputed.

Saturday night

A dark engraved network plate at night with hundreds of small loads on fine routes. Small coral squares mark the stalled loads being worked across the network.
  1. 01:52

    The status feed says in transit. The truck has not moved for forty minutes.

  2. 01:53

    Its agent trusts neither signal. It writes to the carrier's portal, emails dispatch and calls the driver.

  3. 02:09

    The tractor has broken down. The backup carrier accepts and sends a tractor for the trailer.

  4. 02:24

    The receiver's dock slot is rebooked for 14:10. Your customer knows before they ask.

  5. 03:40

    At another dock a trailer passes its free time. Its detention invoice builds while it waits.

  6. 04:00

    Dozens of other stalls across your network are worked the same way.

  7. 07:00

    Your dispatchers find three loads that need a person. The rest closed overnight.

Every load

Every load has its own agent.

It holds every promise made about the load. A driver who will run out of hours before the dock opens gets a new appointment at 21:00, not at 02:00.

freight/loads/TL-48213.py Live since tender
# Chicago to Columbus, tendered Friday 16:20load = Load("TL-48213")load.appointment = dock("Columbus DC", door=7, at="Sat 10:00")load.free_time = hours(2) # contract clause 6load.carrier = memory.carrier(load) # quiet after 22:00, picks up callsload.receiver = memory.dock(load) # books online, takes calls from 06:00 while not load.paid: risk = forecast(load) if risk.misses(load.appointment): hold_backup(load) move_appointment(load, risk.eta) tell_customer(load, risk.eta) chase(load, by=load.carrier.best_channel())

lane memory loadedappointment moved Fri 21:04backup held

Close view of a container door's locking bar and handle in dark steel, sealed with a coral bolt seal.

Evidence

The detention invoice is written while the truck waits.

The clock starts at gate-in, read from the geofence. GPS pings, the signed delivery note and the recorded calls go into the pack, which leaves at gate-out.

Detention, demurrage and claims
  • Free time and hourly rates are read from each contract, never typed into an invoice.
  • Drayage containers are watched against each terminal's free time and last free day. Per diem is challenged where the evidence disagrees.
  • For over, short and damaged freight the agent collects photos, seal numbers, delivery receipts and the bill of lading. It files the claim inside the contract's window.
  • When a carrier bills you detention, the same pack checks it against the gate times before it is paid.

Replay

On Monday the tower replays last week.

Changes to the chase policy and the carrier order run against every exception of last week. They ship when they close them sooner and every test passes.

What the replay changes
  • Which channel to try first for each carrier at each hour: portal, email or a call.
  • The carrier order on each lane, from tender acceptance, response times and the stalls of the week.
  • Chase clocks and retry budgets per mode, from parcel to air.
  • A dispatcher's correction during the week becomes a rule with a test, and the replay proves it against the whole week before it reaches every agent.

Architecture

  1. Operating Code

    Clocks, signal precedence and contract terms run as tested code.

    • freight/triage
    • freight/arbitrate
    • freight/chase
    • freight/tender
    • freight/dock
    • freight/detention
    • freight/claims
    • freight/notes
    • freight/replay
  2. Gate

    Agents read and draft freely. They tender and book only where you grant it.

  3. Your infrastructure

    Beside your TMS on your servers, or on Marbell Cloud.

  4. Fleet

    A lane per mode, parcel to air. A restart never books a load twice.

For your engineers
  • Operating Code is the agent's instructions, rules, plans and memory rewritten as code. A rule is an if, a plan is a loop, memory is a typed variable and a check is a test. It grew out of the recursive self-improvement harness our own persistent agents run on.
  • The freight/ package has a module per job. A StopEvent carries its time zone, a DetentionClock starts at gate-in and a SignalReading carries its source and confidence, so arbitration runs in code.
  • Preconditions stop bad work early: no rebooking while the original tender is live, no customer note while two signals disagree, no detention invoice without a gate time and a contract reference.
  • A confirmed delivery scan outranks a stale position. Two agreeing signals outrank a lone reading. A missed ping alone never triggers a rebook.
  • Tender responses are worked as they arrive. An accept is stamped to the load, a decline sends the tender to the next carrier and silence past the timeout counts as a decline.
  • Calls go out through the telephony stack under a Gate grant. Each call is recorded and its transcript sits next to the event that caused it.
  • Every rebooking carries a key built from the load and the failure event, so a restarted agent finds its own work and never tenders twice. Escalation runs the same at 02:00 on a Saturday: two retries from the checkpoint, then the coordinator, then your on-call dispatcher within the hour.
  • Our own research fleet of simulation agents runs day and night on the same queue and supervisor.
Gate policy

Grants are written per lane and per action. Revoke a grant and the agent's next request is denied.

// Gate policy (Cedar)
permit (principal in Agents::"tower", action in [Action::"read", Action::"draft"], resource in Freight::"network");

permit (principal in Agents::"tender", action == Action::"tender", resource is Load)
when { resource.lane in principal.granted_lanes
       && context.rate <= resource.contract_rate };

forbid (principal, action == Action::"amend", resource is RateConfirmation)
when { resource.accepted };

Systems

It works inside the TMS your desk already runs.

  • SAP TM
  • Oracle OTM
  • Blue Yonder
  • McLeod
  • MercuryGate
  • Telematics and ELD
All systems
  • EDI X12 204, 214 and 990
  • EDIFACT status and booking messages
  • Carrier portals and booking APIs
  • Parcel and LTL carrier systems
  • Terminal appointment systems and port feeds
  • Dock scheduling at shippers and receivers
  • Freight audit and payment
  • Your rate and contract repository
  • Email and telephony
  • ERP order module and CRM

Freight audit and procure-to-pay join next on the same queue once your first lane runs.

The long facade of a cross-dock at first light with every door shut. A coral line runs from a door threshold across the empty apron.

Start with a lane.

We replay last month's exceptions on a lane, then run it live. The pilot is paid to hit a number you pick: exception cycle time, detention recovered or dispatcher hours.