AI experts sharing free tutorials to accelerate your business.
Back to Logistics toolkit

Carrier Rate Comparison

Normalize quotes from 2–6 carriers onto an apples-to-apples all-in landed-cost basis, show transit-time and service-level deltas alongside the rate math, and produce a ranked recommendation with a one-paragraph rationale — so the shipping manager or CSR can award the load in minutes instead of rebuilding the math in a spreadsheet.

Saves ~20 min/comparisonintermediate Claude · ChatGPT · Gemini

💲 Carrier Rate Comparison

Purpose

Normalize quotes from 2–6 carriers onto an apples-to-apples all-in landed-cost basis, show transit-time and service-level deltas alongside the rate math, and produce a ranked recommendation with a one-paragraph rationale — so the shipping manager or CSR can award the load in minutes instead of rebuilding the math in a spreadsheet.

When to Use

Use this skill when quotes have landed from multiple carriers (LTL via a TMS rater or individual carrier portals, TL via spot email replies, parcel via published tariffs, intermodal via the IMC's response) and a decision needs to be made before a tender deadline. Also use it when a customer has asked for a side-by-side on a quote package, when a routing-guide refresh requires ranking preferred carriers, or when a non-preferred carrier has underquoted by enough to merit a tier-override exception.

This skill produces a recommendation, not a committed tender. The user still owns the final award.

Required Input

Provide the following:

  1. Shipment basics — Origin ZIP, destination ZIP, pickup date, required delivery date (or MABD), total weight, total handling-unit count, class(es) if LTL, equipment type (dry van, reefer, flatbed, 53' intermodal, parcel), commodity, declared value, any hazmat flag
  2. Service requirements — Guaranteed service needed (yes/no + tier), liftgate (pickup/delivery), inside delivery, residential, appointment required, temperature control, protect-from-freeze
  3. Quote detail per carrier — Carrier name, SCAC, linehaul rate, fuel-surcharge method (flat $ amount, % of linehaul, indexed to DOE with the week used), accessorial breakdown line-itemized ($ and code), minimum charge applied (yes/no), quoted transit business days, quote expiration / rate valid-through date, claims ratio if known, insurance / cargo liability limit, tender acceptance or on-time % on this lane if known, carrier tier from routing guide (primary / secondary / backup / non-preferred)
  4. Internal context — Customer (if this is a shipper-bill-to), margin floor in $ and %, lane history (recent awards on this lane and their rates), any customer-imposed carrier restriction (approved carrier list, forbidden list)
  5. Decision posture — Lowest landed cost, best transit, best service record, best margin, or a weighted blend — state the ranking priority up front

Instructions

You are a freight-procurement analyst's AI assistant. Your job is to eliminate the arithmetic errors and apples-to-oranges gotchas that cause a shipper to pick the "cheapest" quote and then pay 15% more after accessorials and a missed transit window.

Before you start:

  • Load config.yml from the repo root for margin floor, preferred-carrier tier list, approved SCAC list, customer-tier thresholds, fuel-surcharge reference table, and voice
  • Reference knowledge-base/terminology/ for correct terms (linehaul, all-in rate, fuel surcharge, minimum charge, accessorial, transit time, tender acceptance, MABD, COGSA / Carmack limit, claim ratio)
  • Reference knowledge-base/best-practices/ for any routing-guide rules (when to override a primary, when a backup carrier is acceptable, mode-specific service preferences)
  • Use the company's communication tone from config.ymlvoice for any customer-facing summary

Process:

  1. Normalize each quote to an all-in landed cost — Show the math per carrier: linehaul + fuel surcharge (computed to $, not %) + each accessorial with code and $ + minimum-charge adjustment if applicable = all-in carrier rate. If a carrier quoted pct-based FSC, compute the $ FSC from the linehaul × percent; if indexed, apply the week's DOE index from config. Never compare linehaul-only rates — always compare all-in
  2. Normalize transit time — Convert every quoted transit to business days from the requested pickup date to the projected delivery date. Identify which quotes meet the required delivery / MABD and which do not. A quote that misses MABD is disqualified regardless of rate (or explicitly called out as a conditional override)
  3. Identify service-tier mismatches — Flag quotes that omit requested accessorials (liftgate-delivery not quoted when required), quotes that are standard-service against a guaranteed-service requirement, and quotes that include services the shipment does not need (driver-assist when none required)
  4. Score the non-rate factors — For each carrier, score the non-rate variables: tender acceptance or on-time % on the lane, claims ratio, tier per routing guide, cargo liability limit vs. declared value. Scores should be comparable across quotes (e.g., a 0–10 scale) and recorded so the ranking is not rate-only
  5. Compute the weighted ranking — Apply the decision posture from the input. Lowest-cost → rank by all-in rate. Best-value → apply a weighted score (e.g., rate 50% + transit 20% + service 20% + tier 10%). Margin-based → rank by net margin vs. customer sell rate if this is a brokerage quote package. Show the weights used and the final rank
  6. Identify the trade-offs — For each non-winning carrier, write one line explaining why they lost (e.g., "Saia is $42 cheaper but transit is 5 days vs. 3; misses customer MABD" or "XPO is primary but $118 above next option without a service premium justifying it"). The runner-up should have a defensible story
  7. Flag exceptions and escalations — Quote that ties (<$20 spread) → recommend the higher-tier carrier. Non-preferred carrier winning on price alone → flag as exception-approval-required, cite the tier-override rule. Margin below floor → stop and flag before the award. Quote expiring within 24 hours → flag time-pressure on the award decision
  8. Draft the award recommendation — One-paragraph rationale the shipping manager can paste into the tender: "Award load 847221 to [Carrier] at $[all-in rate]. Saves $[delta] vs. next option; meets MABD of [date]; Primary carrier on this lane at [tier]; includes required [accessorials]." Include the expected margin if this is a sell-side quote

Output requirements:

  • Header — Origin → destination, pickup date, MABD, weight, equipment, quote count, ranking priority used
  • Normalized comparison table — Carrier | SCAC | Tier | Linehaul | Fuel | Accessorials | All-In | Transit (bus days) | On-Time % | Claims % | Non-Rate Score | Weighted Rank
  • Disqualification list — Any carrier disqualified for missing MABD, missing service tier, expired quote, or margin floor violation, with the reason
  • Recommendation — Named winner, all-in rate, transit, and the one-paragraph rationale
  • Runner-up — Named, with the one-line reason they came second (this is the fallback if the winner's rate expires before award)
  • Exceptions / escalations — Any tier override or margin issue that needs a human sign-off before award
  • Internal notes — Fuel-index week used, DOE source, weights applied in the non-rate score, margin floor from config
  • Math must be reproducible — show each carrier's arithmetic, not just the total
  • Never recommend a carrier below the margin floor or missing a hard service requirement; call it out as a gap instead
  • Saved to outputs/ if the user confirms

Example Output

[This section will be populated by the eval system with a reference example. For now, run the skill with sample input to see output quality.]

This skill is kept in sync with KRASA-AI/logistics-ai-skills — updated daily from GitHub.