Logistics

Extract bills of lading to structured JSON

Bills of lading document what is being shipped, by whom, and to where. They serve as a receipt, a contract of carriage, and sometimes a document of title. Sensible turns BOL data into structured JSON for shipment tracking, freight audit, and trade compliance.

freight billing | customs clearance | TMS ingestion

Validated JSON

Schema-enforced output; every field matches your contract

Source coordinates

Every value links back to page + bounding box for audit

Per-document pricing

Predictable cost. No token-volatility surprises

Trusted by teams turning documents into production data

What makes bills of lading hard to extract

BOLs arrive as faxes, photos, and low-resolution scans. Domestic straight BOLs look nothing like ocean BOLs. Format variability and document quality make this a natural fit for hybrid extraction.

01

Shipper and Consignee Field Confusion

The shipper, consignee, notify party, and bill-to fields occupy similar positions across different carrier forms but swap locations. A shipper field on one carrier's BOL sits where the consignee field goes on another. Sensible identifies the correct entity for each role based on context, not just position.

02

Format Variability Across Carriers

Domestic straight BOL. Ocean bill of lading. Multimodal transport document. Same name, entirely different structures. The hybrid approach (LLM flexibility for layout variation, SenseML rules for consistent output) handles all three.

03

Dense Cargo Tables

Handling units, freight class, NMFC codes, weights, dimensions, hazmat indicators: all packed into compact cargo rows. Each line item gets extracted with its full detail, even when columns shift or merge across carriers.

Managed services

Don't want to build it? We'll write your configs from your samples.

Solutions engineers handle plan, build, deploy, and adjust on your behalf. You see clean JSON in your API response. Same engine as self-serve, just with the configuration work outsourced.

What's included

01Plan.Engineers review your samples and pick the right method

02Build.SenseML configs written from your samples

03Deploy.Same engine as self-serve, ready for production

04Adjust.We update configs when formats shift or new edge cases appear

05Integrate.Help with custom integration into your downstream systems

Fields we extract

Every bill of lading is different, so we build the config around your exact schema rather than a fixed list. These are the fields logistics teams request most; we map whatever else your TMS or freight-audit workflow needs.

01

Parties

Shipper name/address, consignee name/address, carrier name, notify party, third-party billing, broker name

02

Cargo

Handling units, package type, weight, dimensions, freight class, NMFC number, commodity description, declared value, hazmat indicator

03

Shipment

BOL number, PRO number, PO number, ship date, delivery date, freight terms (prepaid/collect), equipment type, seal number

config.json

SenseML

{ /* SenseML: bill of lading extraction */
"fields": [
{
"method": {
"id": "queryGroup",
"queries": [
{ "id": "bol_number", "description": "bill of lading number, BOL #, B/L number" },
{ "id": "shipper", "description": "shipper name, shipper, ship from" },
{ "id": "consignee", "description": "consignee name, consignee, ship to, deliver to" },
{ "id": "total_weight", "description": "total weight, gross weight, weight" }
// + more fields, mapped to your schema
]
}
}
]
}

Supported BOL types

Common BOL formats can be found in Sensible's logistics template library. Domestic, ocean, and multimodal variants can be custom configured to match your freight workflows.

Domestic

Straight BOL (non-negotiable), order BOL (negotiable), uniform straight BOL, short form BOL

International

Master ocean BOL, house ocean BOL, multimodal BOL, through BOL, combined transport document

Common Questions

Answers about BOL types, cargo table extraction, and document quality handling.

Does Sensible handle ocean bills of lading with container information?

For ocean BOLs, container numbers, seal numbers, vessel name, voyage number, port of loading, port of discharge, and place of delivery come back by default. These are the common ocean fields, not the limit. Because extraction is defined in configuration, you add, drop, or reshape what gets pulled to match your schema.

Can Sensible extract all party information from a BOL?

Shipper, consignee, carrier, notify party, and third-party billing all come back, including company names, addresses, and contact details. If a BOL carries a party role you don't see here, the configuration is extended to capture it. You extract whatever you define.

Does Sensible extract cargo details from BOLs?

By default Sensible captures handling units, package type, weight, dimensions, freight class, NMFC number, commodity description, and declared value for each line item. The fields live in configuration, so you can add ones specific to your freight or trim down to the cargo data your workflow actually uses.

What shipment details does Sensible extract from bills of lading?

The defaults cover BOL number, PRO number, PO number, ship date, delivery date, freight terms, the shipper and consignee, the carrier, and special instructions. That's a starting set you control in configuration. Add the shipment fields your downstream system expects, or drop the ones it ignores.

Do you support webhooks?

Yes. Sensible sends extraction results to your webhook endpoint when processing completes. You can also poll the API for status.

Does Sensible support human review?

Yes. Sensible flags extractions with low confidence for human review. You can configure review thresholds and workflows.

What security certifications does Sensible have?

Sensible is SOC 2 Type II certified and HIPAA compliant. Data is encrypted in transit and at rest.

How long is document data retained?

Document data is stored indefinitely by default. Custom retention policies are available and can be configured for same-day deletion if needed.

Is there a free trial?

Yes. Sensible offers a 14-day free trial on the Growth plan. No credit card required to start.

How is pricing structured?

Sensible uses per-document pricing for predictable costs. No token-based billing or usage surprises. Volume discounts are available for higher throughput.

How do I integrate with Sensible?

Sensible provides REST APIs and SDKs for Python and Node.js. Most integrations take a few hours. Webhooks, Zapier, and direct API calls are all supported.

What file formats does Sensible support?

Sensible processes PDFs (native or scanned), Microsoft Word (DOC, DOCX), spreadsheets (XLSX, XLS, CSV), single-page images (JPEG, PNG), multi-page images (TIFF), and email bodies with attachments.

How accurate is the extraction?

Accuracy depends on document quality and configuration. Most production deployments achieve 95%+ accuracy with proper validation rules and confidence signals.

How fast is document processing?

Processing speed depends on document size, page count, OCR requirements, and which extraction methods are used. Simple single-page documents process in seconds. Larger or more complex documents that use LLM-based extraction take longer.

Start free

Turn your next bill of lading into JSON.

Free 14-day trial. No credit card required. Start extracting in minutes.