Skip to content
Logistics

Shipping Document Extractor

Reads bills of lading, commercial invoices and packing lists into the shipment record and checks them against each other before anything is filed.

Today's jobs

Today's export jobs, each read from its documents and put in one of three lanes

The Shipping Document Extractor on a wide screen: a dark sidebar with Jobs, Mismatches, Exports and Activity; the top bar names the fictional forwarder Charminar Demo Cargo & Customs Pvt Ltd with a Synthetic data badge and the signed-in documentation executive, Priyanka Goud. The Jobs screen shows today's figures (10 jobs in, 6 ready to file, 1 to check, 3 on hold) above the jobs list: job number with Ocean or Air, shipper and consignee, the route with its port codes, the documents in, the lane and what is waiting. Three jobs on Hold, each with one mismatch, sit at the top.The real screen, on synthetic data
Three jobs on Hold, each waiting on one mismatch, at the top of the list

Demo built on synthetic data.

1 of 5: Today's jobs

The problem

The bill of lading says 1,240 kilograms, the packing list says 1,420, and nobody notices until the filing is questioned. Documentation executives spend their day keying these documents in.

What it does

Bill of ladingGross weight1,240 kgInvoicep1Total$18,400Shipment recordJOB-DEMO-0412From the bill of ladingShipperp1Consigneep1Gross weight1,240 kgp1Packages42 cartonsp1Loading portNhava Shevap1HS code3004.90p1From the invoiceInvoice value$18,400p1

It reads each document into fields — shipper, consignee, weights, package counts, HS codes, values.

Bill of lading42 cartonsInvoicePacking list40 cartonsPage 2Documents comparedJOB-DEMO-0412ConsigneeSame on all threeHS codesAgreeInvoice totalEquals its linesPackages differ42 cartonsB/L p140 cartonsPacking list p2

It checks the documents in a shipment against each other and lists every mismatch with its page.

Bill of ladingInvoicePacking listShipment recordConsigneeNet weight1,180 kgIncotermsHS code3004.90Not stated on any document

It leaves a field empty when a document doesn't state it.

Export recordExport recordJOB-DEMO-0412ABCDJobCartonsGross kgHS code23JOB-DEMO-0398JOB-DEMO-0412421,2403004.90JobsMismatchesFreight system, job screenReceivedPackages42 cartonsGross weight1,240 kgHS code3004.90

It exports the record to your freight system or a spreadsheet.

Try to break it

On the call we'll trigger these, live:

  • Weights differ between two documents. The shipment is held with both figures shown.
  • A scan is blurred. The fields it can't read are marked for a person.
  • The same invoice is uploaded twice. It's stored once.
Packing listPage 2Total gross weight1,420 kgBill of ladingPage 1Gross weight1,240 kgJOB-DEMO-0412HoldGross weight differs1,240 kgB/L p11,420 kgPacking list p2Accept AAccept BA person decidesExport record

Where it runs

An office server or a cloud account in your name.

Who else does something like this

Raft sells AI document processing to freight forwarders.

The Extractor runs on your side and checks documents against each other before filing.

The rules it respects

Every field keeps the document and page it came from.

What our tests measured

How we test

These figures come from test runs on Google's Gemini (gemini-3.5-flash-lite), a hosted model, on synthetic data. We'll add runs on a local model.

Fields read correctly from bills of lading, air waybills, invoices and packing lists99.86%
Fields a document doesn't state, or a page can't show, left empty100%
Seeded mismatches between documents found100%
Mismatches raised that were real100%
Shipments with a mismatch put in Ready to file0
Shipments with an unreadable page put in Ready to file0
Second copies of an invoice stored0
Median time to read and check one shipment4644 ms
  • Run on 14 October 2026
  • Model: gemini:gemini-3.5-flash-lite
  • 150 examples
For your engineers
Engines
Extractor, Gatekeeper, Proof Console
Sealed mode
Test passed: with sealed mode on, it refuses every outbound connection except to the model you've approved.

Data flow

Shipment documents (synthetic)Bill of ladingor air waybillCommercial invoicePacking listStored oncecontent hash, own numberEach page readable?else held for a personExtractor engineeach field with its lineCross-document rulesin code, no modelGatekeeper enginea mismatch holdsDocumentation deskaccepts a value or holdsShipment recordeach field with its pageFreight systemsimulatedSpreadsheetCSVaudit_log, append-only