Wheels Up

How it works

Code decides, AI only talks. Every check, total and ranking comes from the official rulebook and rate card, so the same booking always gets the same answer.

  1. Input
    Chat or the Bookings + Items workbook
  2. Booking model
    Raw value, clean value and source per field
  3. 10 checks
    Plus missing details, each with evidence
  4. Carrier
    Eligible by weight, then ranked by priority
  5. Result
    Verdict, fixes, carrier and next steps
AI’s only job
Turn a chat message into proposed edits. Code validates each one before anything changes.
If AI is down
A built-in parser and the guided booking fields take over. Every check still runs.
Nothing silent
Fixes need the seller’s click, every change is logged, and the upload is never modified.

Decisions and assumptions

10 judgement calls, each written down

Show
R-02 tolerance
“Within 1%” is measured against the item total: |declared − Σ(qty × price)| ÷ Σ ≤ 1%. Exactly 1% passes. Compared in pence.
R-05 and the “chosen carrier”
The sheet has no chosen-carrier column, and a seller priority is not a carrier choice. R-05 is checked against the carrier we select (or the one the seller explicitly names in chat). If the seller's ideal service can't take the weight but another can, R-05 passes and we show a trade-off notice instead of blocking a shipment that can travel.
Balanced priority
Minimax regret over the services that can carry the weight: for cost, transit days and on-time rate, each option's distance from the best option is scaled 0–100% of the range; we pick the option whose biggest sacrifice is smallest. Ties go to the smaller total sacrifice, then cheaper, then faster. Recomputed every time, never hardcoded.
Weight limits
Weight per pallet = gross weight ÷ pallets, rounded to 0.01 kg. A limit is inclusive: exactly 500 kg is accepted by a 500 kg service; 750.01 kg is accepted by none.
Repacking scenarios
Shown separately and only applied when the seller approves. Gross weight is kept unchanged (the data has no pallet tare weight), and the scenario says so.
Transit and dates
Transit days are treated as calendar days, so delivery dates are estimates. “Today” is the current date in India (IST); a ready date of today passes R-10.
Dangerous goods (R-06)
Whole-word phrase matching on descriptions, with negations removed first (“battery-free”, “phone case”, “empty bottle”). Devices that usually contain a lithium battery (laptops, phones, speakers…) are flagged Red until the seller confirms there's no battery.
HS codes
Spaces and dots are ignored (6912.00 → 691200). A 5-digit code is flagged with a note that Excel may have dropped a leading zero; it is never padded automatically.
Fix confidence
Arithmetic correction: a total recomputed from the item lines. Evidence-supported: the only option the rest of the booking agrees with (e.g. the quantity that also matches the declared value). Needs seller confirmation: facts only the seller knows. Nothing is changed without the seller's click, and every change can be undone.
Verdict
Blocked (any red) → Incomplete (missing details) → Passed with warnings (amber only) → Passed. The final state is “Ready for booking”: this MVP does not place the order with a carrier.

Rulebook

R-01 to R-10 · six Red (block), four Amber (warn)

Show
R-01
Every item must have an HS code of at least 6 digits
Customs need the exact HS code to classify the goods; general or catch-all codes are not accepted, so the shipment is held.
Red
R-02
Total declared value must equal the sum of quantity × unit price across all items (within 1%)
Customs compare the invoice, packing list and declared value; a mismatch leads to a hold and possible penalties.
Red
R-03
For each item, units per carton × cartons must equal quantity
The receiving warehouse counts cartons; if the numbers don't add up, units are reported missing.
Red
R-04
Total cartons on the booking must equal the sum of cartons across all items
The carton count on the booking is what the warehouse checks on arrival; a gap is logged as missing stock.
Red
R-05
Weight per pallet (total gross weight ÷ pallets) must not exceed the chosen carrier's max weight per pallet
The carrier refuses pallets above its limit at collection.
Red
R-06
No lithium batteries, aerosols or flammable liquids
These standard road services do not accept dangerous goods; the carrier refuses the shipment.
Red
R-07
Total gross weight must be at least the sum of unit weight × quantity across all items
Carriers and customs re-weigh shipments; a declared weight lighter than the goods themselves is queried.
Amber
R-08
Shipments to a warehouse must have a delivery appointment booked
Warehouses turn away deliveries that arrive without a booked slot.
Amber
R-09
Every item must have a country of origin
A missing or wrong country of origin is treated as misdeclaration; both exporter and importer can be penalised.
Amber
R-10
Ready to ship date must not be in the past
Collection cannot happen on a date that has already passed.
Amber

Rate card

Fixed · 3 services × 3 destination countries

Show
CarrierRoute£ / palletTransitOn-timeMax kg / pallet
Carrier A Road economyUK → Germany£1805 days92%500
Carrier B Road standardUK → Germany£2203 days95%750
Carrier C Road expressUK → Germany£3402 days98%400
Carrier A Road economyUK → France£1705 days92%500
Carrier B Road standardUK → France£2103 days95%750
Carrier C Road expressUK → France£3302 days98%400
Carrier A Road economyUK → Netherlands£1605 days92%500
Carrier B Road standardUK → Netherlands£2003 days95%750
Carrier C Road expressUK → Netherlands£3202 days98%400

Weight bands: up to 400 kg per pallet all three services qualify; 400–500 kg Economy and Standard; 500–750 kg Standard only; above 750 kg none.