1. Pull from each forwarder. API, portal export, or daily email feed. Each forwarder gets its own source pipeline.
2. Standardize the schema. Container number, BOL, PO, vessel, ETA, status. One column structure across all forwarders.
3. Dedupe. Same container, multiple sources, one row in the output.
4. Calculate the position. On the water, at port, in customs, in transit, delivered. Plus days to ETA and days overdue.
5. Output the table. Single dashboard view, exception list for at-risk shipments, Slack alert for changes.