1. Pull shipment data from each carrier. UPS, FedEx, DHL, regional parcel carriers, your TMS, the freight forwarder portal. The flow reads from APIs and parses what only comes as a PDF or email attachment.
2. Pull the ERP record. NetSuite or your finance system holds the booked cost, expected ship date, and customer. Bring it in alongside the carrier records.
3. Standardize the fields. Carrier names spell themselves four different ways across four systems. Tracking numbers carry leading zeros that one system strips and another keeps. Normalize once so the join works.
4. Calculate the metrics. On-time delivery rate, damage rate, average transit time, cost per shipment, exception count. Per carrier, per lane, per service level.
5. Grade against thresholds. A carrier hitting 96% OTD with a 0.4% damage rate gets a green light. Anything below your floor gets flagged with a reason.
6. Roll up the period. Monthly, quarterly, or rolling 90 days. Output a single scorecard view sorted with the worst offenders first.
7. Send it where the team works. Emailed PDF for the procurement review, CSV for the warehouse leads, Slack alert if a carrier slips two periods in a row.