Unstructured Vendor Data Normalizer
An intake agent that reads invoices, packing slips, and shipping notices from a shared inbox, matches them to open POs, and stages clean records for the ERP’s bulk import.
- Client
- Mid-size manufacturer
- Industry
- Procurement
- Services
- AI AgentsMarketing Automation
Results
- 75–80%Of incoming vendor documents extracted, matched, and staged with no manual data entry.
- ~12 hrsStaff time recovered weekly, as manual processing fell from 15+ hours to about 3.
- Same dayRoutine documents ready for import the day they arrive, down from 2–3 business days.
- Fewer entry and reconciliation errors, with mismatches caught before import instead of at receiving or AP.
As measured during the implementation.
Agent profile
- Watches for
- A vendor email or attachment arrives in the shared procurement inbox
- Runs
- As documents arrive
- Connects to
- Shared procurement inbox
- ERP bulk import
- Google Sheets review queue
- Hands off to a person
- Records without a reliable PO match, with unresolved line items, or below the confidence and validation thresholds are held, with the field or rule that failed named. Nothing reaches the import queue silently, and staff approve every batch.
One of 3 agents in the same system
Work moves through them in order, and each agent hands the next one cleaner data.
- Step 1Unstructured Vendor Data NormalizerAn intake agent that reads invoices, packing slips, and shipping notices from a shared inbox, matches them to open POs, and stages clean records for the ERP’s bulk import.
- Step 2Vendor Performance Drift DetectorA weekly agent that reconciles promised ship dates against actual receipts for every active vendor, scores the trend, and alerts procurement before drift becomes a stockout.
- Step 3Supply Chain Exception EscalatorAn agent that catches short shipments, silent vendors, and buried backorder notices, checks approved alternates, and puts a ranked shortlist in front of a buyer.

A manufacturer with more than 400 vendors received shipping notices, invoices, packing slips, and PO confirmations by email, much of it from smaller suppliers without EDI. Procurement and receiving staff spent more than 15 hours a week opening attachments, finding the matching purchase order, and re-keying data into the ERP. Transcription errors surfaced later as receiving discrepancies and extra accounts-payable work.
The ERP had no practical API for creating these records, but it did accept structured bulk imports, so the job was to prepare imports the ERP would trust without going around its controls.
What we built
How the system works, step by step.
Read
Identifies the vendor and document type across native PDFs, scans, multi-page packing slips, spreadsheets, and order details written in the email itself.
Extract
Pulls PO number, vendor ID, line items, quantities, unit prices, ship dates, carrier, and tracking.
Normalize
A vendor mapping layer turns each supplier’s terms (“Qty,” “Units,” “No. of Pieces”) into one internal schema.
Validate
Checks each record against open POs for partial shipments, line-level differences, duplicates, unmatched SKUs, and quantity tolerances. Reading a document correctly isn’t enough to approve it.
Stage for review
Clean records land in a review queue in ERP-ready form, beside the source document. Staff can correct one field and revalidate without starting over.
Export
Approved batches become the CSV the ERP’s existing bulk import expects, each record traceable to the original email.
- Google Sheets
- ERP bulk import
Have a workflow like this? Let’s map it.
Bring us the workflow that eats your team's week. We'll show you what an agent or a better system could take off its plate.