Back to case studiesLogistics

A regional 3PL was hand-keying every bill of lading and paying someone full-time just to reconcile carrier invoices. We automated both sides of the operation.

This 60-person 3PL in Elk Grove Village handles 200+ shipments a day. Every one required manual data entry. BOLs were scanned from email one at a time, keyed into NetSuite by hand, and filed in a shared drive nobody could search. On the carrier side, invoices from 30+ providers piled up for a full-time employee who matched them to orders, checked margins, and hunted for duplicates. We built two connected pipelines on Azure Logic Apps and Document Intelligence that handle both workflows automatically, plus a real-time margin dashboard that replaced a spreadsheet nobody trusted.

50K+
Docs processed per year
93%
Straight-through rate
1 FTE
Reallocated from billing
4 weeks
To full deployment
Company size
60 employees
Location
Elk Grove Village, IL
Industry
Regional 3PL provider handling LTL and full truckload for mid-market shippers

The Problem

Every shipment started with someone typing. Every carrier bill ended with someone checking.

This 3PL handles about 200 shipments a day for mid-market customers across the Midwest. Each shipment generates a bill of lading that needs key data entered into NetSuite: shipper, consignee, tracking number, weight, piece count, PO reference, and handling notes. Operators pulled these from email, opened each scan one at a time, and typed everything into the ERP by hand. The dock scanners sent documents to individual email inboxes, so half the time somebody was scrolling through their inbox just to find the right BOL for the right shipment. On the carrier side, invoices arrived from 30+ carriers in every format you can imagine. One person worked full-time matching each bill to the corresponding fulfillment record, checking whether the carrier's charge matched what the customer paid for shipping, looking for duplicate bills, reviewing accessorial fees, and flagging anything that looked off against historical patterns. She kept a running spreadsheet of carrier margins that was always a month behind reality. When a carrier billed for a liftgate that nobody requested, it went unnoticed until the next spreadsheet update. When fuel surcharges spiked, the margin impact surfaced weeks later. At 50,000 documents a year, even saving two minutes per BOL adds up to roughly 1,700 hours of manual handling. The carrier billing role was entirely consumed by reconciliation, which meant nobody was proactively managing carrier relationships or negotiating rates.

What we found

  • !50,000+ BOLs per year, each requiring 2+ minutes of manual data entry into NetSuite
  • !Dock scanners sent documents to individual email inboxes with no centralized intake or filing system
  • !One full-time employee dedicated entirely to carrier bill reconciliation across 30+ carriers
  • !Shipping margin visibility lagged by a month because the tracking spreadsheet was always behind
  • !Accessorial charges and duplicate bills went undetected until manual review, costing thousands per quarter

The Solution

Two pipelines, one platform. Shipping documents and carrier bills both run on autopilot.

We built two connected workflows on Azure Logic Apps. The BOL pipeline monitors a centralized inbox and a network folder connected to the dock scanners. When a document arrives, Document Intelligence extracts the key shipment fields. High-confidence extractions post directly to NetSuite through the REST API with no human involvement. Low-confidence fields route to a review queue where an operator sees the original scan next to the extracted data and confirms or corrects in a few clicks. Corrections feed back into the training data. The carrier bill pipeline works differently. Bills arrive by email and EDI. A classifier identifies the carrier and bill format, then extraction pulls charges, shipment references, and service details. Each bill matches against the corresponding fulfillment record in NetSuite. The system calculates the margin between what the customer paid and what the carrier charged, checks for duplicates within a 90-day window, validates accessorial charges against what the BOL specified, and flags anything outside historical norms for that lane and service type. Clean bills approve automatically. Flagged bills go to a review queue with the specific discrepancy highlighted. A Power BI dashboard replaced the margin spreadsheet entirely. Real-time visibility into shipping costs by carrier, lane, and service type. The operations team can spot margin compression the day it starts instead of a month later.

3PL provider automates 50,000 shipping documents and carrier bill auditing automation pipeline diagram
1

Centralized BOL intake

Redirected all dock scanners to a single watched network folder. Set up an IMAP trigger on a dedicated shipping inbox. Both channels feed into the same Logic Apps pipeline, so downstream processing doesn't care how the document arrived.

2

Document Intelligence extraction with confidence routing

Prebuilt and custom models extract shipper, consignee, tracking number, weight, piece count, PO reference, and handling notes. Fields above 0.88 confidence post directly to NetSuite. Fields below threshold route to review. Corrections are tracked and used to improve extraction accuracy over time.

3

Automated carrier bill classification

A classifier identifies the carrier and maps to the correct extraction template. Some carriers send clean EDI. Others send scanned PDFs with handwritten annotations. The system handles both. Each extracted bill matches to its fulfillment record in NetSuite by tracking number and shipment date.

4

Margin analysis and anomaly detection

Every matched bill gets a margin calculation: customer shipping charge minus carrier cost. The system flags duplicates within a 90-day window, validates accessorial charges against what the BOL actually specified, and compares each bill against 12 months of historical data for that lane and service type.

5

Real-time margin dashboard

Power BI dashboard connected to the processed billing data. Shipping margins by carrier, lane, customer, and service type, updated as bills process throughout the day. Replaced a monthly spreadsheet with a live view the operations team checks every morning.

Implementation

4 weeks from kickoff to processing live documents

We spent the first week on-site understanding both workflows end to end. The BOL side was straightforward once we centralized the scanner output into one folder. The carrier bill side was more involved because every carrier formats their invoices differently and the matching logic needed to handle partial shipments, split bills, and carriers that use their own reference numbers instead of the customer's PO. We built the BOL pipeline first because it was simpler and delivered visible value right away, then layered in the carrier bill automation. The final week was parallel processing and threshold tuning.

1
Week 1

On-site discovery. Observed both workflows, collected sample documents from all major carriers, mapped the NetSuite data model and API endpoints, centralized scanner output to a single network folder.

2
Week 2

Built the BOL intake pipeline. Document Intelligence model training on 400+ historical BOLs. NetSuite API integration for automated posting. Review queue for low-confidence extractions.

3
Week 3

Carrier bill classifier and extraction templates for top 15 carriers by volume. Matching logic against fulfillment records. Margin calculation, duplicate detection, and accessorial validation.

4
Week 4

Power BI dashboard build-out. Parallel processing of both pipelines with manual verification. Confidence threshold tuning. Staff training and go-live.

The Impact

Fifty thousand documents a year. Almost none of them need a person anymore.

After 60 days, the BOL pipeline had processed about 8,400 documents with a 93% straight-through rate. The 7% that routed to review were mostly multi-page BOLs with handwritten amendments or poor scan quality from the older dock scanner. Both are the kind of thing that genuinely benefits from a human look. The carrier bill system caught 14 duplicate charges totaling about $4,200 in the first two months. It also flagged a pattern of residential delivery surcharges from one carrier that turned out to be a systematic billing error on their end. The operations team used the margin dashboard to renegotiate rates with two underperforming carriers within the first month, saving roughly $800 per month on those lanes alone. The employee who had been doing carrier bill reconciliation full-time moved into a carrier management role focused on rate negotiation and service quality. That role is what the operations manager had wanted to create for over a year but couldn't staff because reconciliation consumed all the bandwidth.

Metric
Before
After
BOL processing
~2 min of manual entry per document
93% auto-processed, exceptions only
Carrier bill reconciliation
1 FTE, full-time manual matching
Auto-matched with exception review
Margin visibility
Monthly spreadsheet, 30+ days behind
Real-time Power BI dashboard
Duplicate detection
Caught at month-end (if at all)
$4,200 in duplicates caught in 60 days
Carrier rate optimization
Quarterly reviews based on gut feel
Data-driven, ~$800/month saved on two lanes
Mike was easy to work with. They spent time understanding how we actually operate before building anything. The whole thing was up and running in about a month and it's been solid. Freed up a lot of time on the dock side and we finally have real visibility into our carrier costs.
Dave, Operations Manager3PL provider, Elk Grove Village

Same problem? Let's talk.

30 minutes. We'll look at your document workflow and tell you exactly where automation fits — and where it doesn't.

See Logistics Solutions