Shipment Tracking for an Antwerp Freight Forwarder
Designed a shipment tracking portal and operations console for an Antwerp freight forwarder moving ocean and air freight between Asia and Europe, and built the ops console as a clickable demo: shipment files with predicted and carrier ETAs, milestone timelines that show their sources, an exception queue against response targets and carrier data feed health.
Most of our work is under NDA. Per agreement, we can share the work but not the company details - all names and identifying information shown here have been changed.
Ops dashboard, shipment files, a shipment file workspace with 10 tabs, the exceptions queue with its exception panel and data feeds health. Every file in the list opens its own workspace.
Predicted ETA with a confidence band, the carrier's ETA and the ETA promised at booking, each labelled with its source and when it was received.
ETA slip beyond 24 h for ocean or 6 h for air, no event for 48 h in transit, rollover, missed transshipment, customs hold, documents missing 3 days before arrival and free time ending. All thresholds are client policy.
Ocean FCL, LCL and air shipments in every status for 10 customers, with 7 carriers, 10 vessels, 14 exceptions, 9 data feeds and ISO 6346 container numbers with valid check digits.
Kaaiveld's customer service team spent most of the day answering "where is my container?" by email and phone, checking the carrier's website, a vessel tracking site and the forwarding system for each reply. Documents lived in email threads, delays were found when the customer complained rather than when the vessel slipped, nobody could say which lanes and carriers were on time, and large customers were asking for an API.
Dunnage gives Kaaiveld's roughly 600 shipper customers one portal for every shipment from booking to delivery, and gives its operations team a console on the same data: shipment files with every ETA and its source, milestone timelines that flag conflicting events, an exception queue that links one root cause to every affected file, and health checks on each carrier and data feed.
A forwarder does not move the freight itself. Its view of a shipment is pieced together from carriers, AIS positions, airlines, customs and its own forwarding system, and each source can be late, missing or wrong.
A carrier can report a vessel departing at one time while AIS shows it clearing the pilot station seven hours later. Carrier ETAs, predicted ETAs and the ETA promised at booking all differ, and a customer needs to know which one they are looking at.
A vessel that waits to berth or omits a port can hit dozens of files across several customers at once. Without a shared root cause, each coordinator finds the same problem separately, and the customer often hears first from their own buyer.
Containers use ISO 6346 numbers with a check digit, vessels IMO and MMSI numbers, air waybills an airline prefix, and locations UN/LOCODE. Ocean milestones follow the DCSA Track and Trace model and air milestones Cargo iQ codes, and events that match no file still have to land somewhere.
EU imports fall under the Union Customs Code, with ICS2 safety and security filings at house and master level. Bills of lading can be original, telex release, sea waybill or eBL, and the portal must show their status without ever acting as the title record.
Mapped 12 roles across shipper customers and Kaaiveld staff, 34 screens (17 ops console, 15 customer portal and 2 public) plus 4 slide-over panels, and the data model for shipments, legs, containers, vessel positions, milestone events, documents, customs status, exceptions, alert rules, tracking links, quotes, invoices, emission estimates and webhooks. Wrote down the rules the design follows: the GDPR and the Belgian Act of 30 July 2018, the Union Customs Code and ICS2, bill of lading types and eBL, ISO 6346, UN/LOCODE, DCSA and Cargo iQ events, ISO 14083 and the GLEC Framework, and Belgian Peppol e-invoicing from 1 January 2026.
Built the ops console's 5 key screens on a production dashboard kit: the dashboard with KPIs, exceptions by type and age, My work by role and an arrivals board for Antwerp, Rotterdam, Zeebrugge, Brussels and Liège; shipment files with filters, bulk assign and a bulk Customs released milestone; the file workspace with route strip, timeline by leg, containers, vessel and voyage, documents, customs mirror, charges and messages; the exceptions queue; and data feeds health. Staff can sign in as 4 roles, and actions run on local mock data.
Integration with the forwarding system (such as CargoWise eAdaptor), container tracking (project44, Vizion or DCSA carrier APIs), AIS positions (Spire Maritime or MarineTraffic), ETA prediction (Portcast), airline status messages, eBL platforms (WAVE BL, essDOCS or Bolero), Mapbox, Postmark, Twilio, Svix webhooks and SSO through Entra ID or Okta. Plus the customer portal and shared tracking links, the milestone inbox, bookings and quotes desk, reports, settings, an audit log and automated tests for cross-tenant data leaks.
The predicted ETA appears as a range with its confidence next to the carrier ETA and the ETA promised at booking, each with its source and received time. When ops overrides an ETA it needs a reason, and the customer sees it as confirmed by Kaaiveld.
The timeline groups events by leg with planned against actual, marks events reported more than 24 hours late and flags sources that disagree, so the coordinator chooses which event the customer sees. Internal events never reach the customer.
An exception links all shipments hit by the same vessel or flight, such as one vessel delay across 4 files at 3 customers. Its age runs in Belgian working hours against the acknowledge target, amber at 3 and red after 4, with a suggested customer message ready to send.
Each feed shows events in the last 24 hours against its 7-day average, error rate and latency, with carrier coverage and failed subscriptions to retry. Every shipment file carries a tracking health dot that turns amber after 48 hours without an event and red after 96.

Designed and built a clickable dispatch console for a Guadalajara distributor of building materials and beverages: import tomorrow's orders, plan routes for four depots on a map, route list and timeline, check every manual change against the fleet's limits, publish before the 20:00 deadline and watch the day live.

Designed an offline-first driver app and built a clickable supervisor web view for an Istanbul last-mile parcel carrier: a live board of every driver on shift, one queue for exceptions, a proof-of-delivery audit that shows how far from the stop each parcel was handed over, and driver records with document expiry and scores.
Enterprise Software Engineering - Human + AI
Contact Us
© 2026 - Copyright. All Rights reserved Oceanlab
Location
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
Enterprise Software Engineering - Human + AI
Contact Us
Locations
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
© 2026 - Copyright. All Rights reserved Oceanlab