Atlas opens a live AIS session for Anushka's reefer fleet, compares each voyage's vessel-reported ETA against the booked ETA, and drafts a factual customer notification when a voyage shifts past 24 hours. Anushka reviews and approves before any draft lands in Outlook - nothing leaves the bank without her one-click sign-off.
06:00 Europe/Berlin, Monday morning. Atlas's cron scheduler fires the
vessel_eta_tracking workflow. Anushka's 5 in-flight
reefer voyages get checked - without her touching Outlook,
SAP, or vessel-tracker.com.
One WebSocket session against AISStream.io, filtered by MMSI for Anushka's 5 contracted vessels. Each row carries a PositionReport (lat/lon, speed, course) and a ShipStaticData frame (destination, vessel-reported ETA). Source-receipted in the audit log.
| Vessel | BL | Position | Speed / course | Destination |
|---|---|---|---|---|
|
MV Cool Express
MMSI 211281000 · Hapag-Lloyd
|
DOLE-CR-2026-0142 |
36.73°N · 38.60°W |
16.7 kn · 075° |
HAMBURG, DE |
|
Maersk Stratford
MMSI 219024580 · Maersk Line
|
DOLE-CR-2026-0143 |
33.71°N · 37.18°W |
17.2 kn · 080° |
HAMBURG, DE |
|
Star Lysefjord
MMSI 257123450 · Star Reefers
|
DOLE-EC-2026-0089 |
29.45°N · 28.92°W |
15.8 kn · 070° |
ROTTERDAM, NL |
|
Cool Eagle
MMSI 305987210 · Seatrade
|
DOLE-EC-2026-0090 |
21.18°N · 30.41°W |
8.4 kn · 062° |
ROTTERDAM, NL |
|
Baltic Summer
MMSI 477234680 · Eastern Pacific
|
DOLE-CR-2026-0144 |
41.02°N · 41.85°W |
18.1 kn · 085° |
ALGECIRAS, ES |
Each row's vessel-reported ETA gets compared against the booked
expected_eta on the BL. One voyage out of five has
slipped past the 24-hour rule. The other four continue silently -
Anushka isn't pinged for clean runs.
| Voyage | Booked ETA | Reported ETA | Delta | Status |
|---|---|---|---|---|
|
MV Cool Express
DOLE-CR-2026-0142
|
Jun 02 14:00 UTC |
Jun 02 18:30 UTC |
+4.5h |
on time |
|
Maersk Stratford
DOLE-CR-2026-0143
|
Jun 04 08:00 UTC |
Jun 04 11:15 UTC |
+3.3h |
on time |
|
Star Lysefjord
DOLE-EC-2026-0089
|
Jun 05 16:00 UTC |
Jun 05 22:42 UTC |
+6.7h |
on time |
|
Cool Eagle
DOLE-EC-2026-0090
|
Jun 07 10:00 UTC |
Jun 08 22:18 UTC |
+36.3h |
delay > 24h |
|
Baltic Summer
DOLE-CR-2026-0144
|
Jun 09 12:00 UTC |
Jun 09 09:50 UTC |
−2.2h |
on time |
Atlas drafts one short, factual notification for the delayed voyage. The non-claim boundary on the LLM step keeps the language tight - no new arrival date, no remediation promise, no compensation commitment.
The draft lands in Atlas's approval queue. Anushka sees the summary, the rationale, the source receipts, and one of three actions. Nothing leaves Outlook until she clicks Approve.
operator_note. She can later one-click
promote that reason into a permanent agent_lesson rule
- the agent reads it before every future LLM step. No auto-promote;
every rule is her conscious decision.
Approved drafts write to Anushka's Outlook drafts folder via the MS Graph connector. Atlas never auto-sends - Outlook is the operator's control surface. Anushka can do a final review, attach an internal note, then send when she's ready.
maritime.vessel_positions
is the new primitive shipped for this demo; it falls back to
deterministic synthetic positions when AISSTREAM_API_KEY is unset,
so the operator UI works locally without secrets.
The agent ships as one YAML in the Dole pilot module. ~3 days of operator-side work: pick the contracted MMSIs, wire the customer email list, set the AISStream key, choose the cron cadence. Same shape covers port-disruption alerts, transshipment chases, and SLA dashboards next.