AI Adoption GuideProcurementReceive
Delivery discrepancy classification
Vision and NLP classify goods receipt issues, such as short delivery, wrong item, or damage, from delivery notes and photographic evidence.
Procurement processRequestApproveSourceEvaluateSelectOrderReceiveReview
By Don, DoneThat’s AI coach · updated
Give AP, the warehouse, and the supplier the same exception code
The job is to type what happened on the dock: short, wrong item, damaged, or late. That code has to be the same on the goods receipt, in the AP exception, and on the claim the supplier sees. A photograph is evidence a person can open. It is not a claim, and it is not a debit.
A short pallet, a substituted SKU, a crushed carton, and a truck that missed its window all stop the invoice from matching. Three-way match automation can tell you the numbers disagree. It cannot tell the supplier whether to ship the balance, take a return, or inspect a quality file.
Do not publish a defect rate from this classifier. Those figures move with planned partials, missing photos, and recodes after the fact. The test is whether the code on the GR is the code on the claim, and whether a named person confirmed before money moved.
This is not receipt quality scoring. Scoring turns typed events into a supplier KPI. Classification is the event. Score first and you will mix shorts you caused with damage the carrier caused.
Classify from the ASN, the delivery note, the photos, and the GR quantity
Run the classifier on four inputs while the truck is at the door. Do not wait for the invoice. Invoice data extraction will only turn a dock mess into a cleaner wrong number if the GR was parked as quantity mismatch.
ASN. What this shipment was supposed to contain, including planned splits and backorders. Compare the count to this ASN, not to the open PO.
Delivery note. Item text, quantity, lot, and remarks such as "balance to follow" or "substituted."
Photographs. Condition, crush, wet packaging, label versus expected SKU, empty positions. No photo: you can still type short or late. You cannot type damage.
GR quantity. Posted count in the PO unit of measure. Case versus each is master data, not a shortage.
Warehouse systems in the Manhattan and Blue Yonder class already hold the ASN, the dock appointment, and the receipt. ERP and source-to-pay suites such as SAP and Coupa already hold the PO, the GR, and the claim or return. Put the code on those records.
Calling a planned partial a short is the first failure. If this ASN is 400 and the PO still has 800 open for next week, posting 400 is complete for this truck. Emit short and AP will debit cases that were never on the trailer. Read the ASN split and the delivery-note remark before you type shortage.
Treating a blurry photo as damage is the second. A dark, motion-blurred, or cropped image is a failed capture. Type photo unusable and send the receiver back, or leave damage untyped. Do not infer crush from a smear.
Late is promised date or ASN window versus GR time, or the dock timestamp if you have one. Delivery lead time prediction forecasts a miss. This job types it after it happened. Do not type late because the invoice is late, or because a night receipt posted the next morning.
Wrong item needs the label or delivery-note SKU against the PO line. A different GTIN on a photo is evidence. "Looks different" without a photo is a hold for a person, not a claim.
If two things are true, emit two codes. A late truck that is also short is not late only.
Route each type onto the claim path that can close it
Short goes to the shortage claim: ASN quantity, delivery-note quantity, and GR quantity. Empty-pallet photos help. They do not replace the count. AP should see the same short code so the invoice waits or a debit is proposed.
Wrong item goes to return or RMA. Do not debit as if the ordered quantity never arrived while the wrong SKU sits in a hold location.
Damaged goes to the quality claim with usable photos, the PO, the ASN, the lot if present, and the GR. A seal shot and a first-view pallet shot separate supplier or carrier damage from dock damage after the seal was broken. Do not send damage to the shortage desk.
Late goes to performance and expedite, not a quantity debit. Keep it on the GR so historical performance retrieval can pull dated late receipts instead of a blended delivery-issue pile.
The classifier proposes a type, attaches evidence, and names an owner. It does not post a debit, a return, or a freight claim.
Illustrative example: planned split, crushed layer, auto-debit
This is a worked example with made-up names, not a case study and not a measured result.
Northvale Foods receives corrugated. PO 458821 is 1,200 cases from Harborfield Packaging on two ASNs: 600 this Wednesday, 600 next Wednesday. Wednesday's truck arrives. The delivery note says 600 cases and "balance next week." The dock posts GR 590. One layer on the rear pallet is crushed. The receiver takes a sharp photo of the crushed layer and a motion-blurred shot of the trailer wall. Ten cases are not on the trailer.
What the job should emit:
- Short: 10 cases against this ASN (600 expected, 590 counted), not 610 against the open PO.
- Damaged: crushed layer, sharp photo attached.
- Not late: the ASN window was today.
- Not wrong item: the carton print matches the PO.
Harborfield should see two claims, not a single quantity discrepancy of 610. AP should see short 10 on this shipment, not a hold on 1,200.
They almost typed short 610 by comparing GR to the open PO. Next week's 600 became a shortage, and next Wednesday's ASN would have looked like a duplicate.
They almost typed damage from the blur as well as the crushed-layer shot. Harborfield opened the blur, said they could not see a defect, and parked the whole claim. A person should have dropped the unusable file first.
They auto-debited 10 cases plus an estimated damage value because the classifier was sure. Finance posted before the buyer confirmed the count and before quality agreed the crush was Harborfield's, not a forklift after GR. The debit had to be reversed.
The control is the recode after walking the trailer. The model proposed short 10 and damage with one photo. The quality lead confirmed both, dropped the blur, and issued two claims on two paths. No debit posted from the model.
A person confirms before anyone posts a debit
The output is a proposed code, the evidence pack, and a named owner. It is not a posting.
Do not wire classification to evaluated receipt settlement (ERS), to an automatic debit memo, or to a blocked invoice that only IT can lift. A proposed short can park the invoice and open the shortage claim. A person still checks the ASN split and whether the missing cases are on the next ASN. A proposed damage can open the quality claim. A person still decides whether the photo shows supplier damage, carrier damage, or dock damage after the seal.
If the photo is unusable, do not guess damage. Recapture, or leave damage untyped.
If the dock does not photograph today, you can still type short, wrong, and late. You cannot type damage at scale. Fixing capture is a receiving-process project.
Show proposed codes to warehouse quality and the buyer before AP acts. Trial on one inbound category where you already take photos and already issue claims. Run in parallel with the reason codes SAP, Coupa, Manhattan, or Blue Yonder already store on the GR.
If the first week produces shorts on every planned split, damage on every dark photo, or a debit that posted without a name, stop. Fix the ASN join, the photo gate, and the posting rule before you expand.
Is this worth automating for you?
Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other.
DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.
Measure the baseline first