Standardize the Chaos
Your supply chain runs on PDFs, scans, and emails from thousands of different forwarders and carriers. bem acts as the translation layer, ingesting any format and outputting the rigid EDI or JSON your ERP needs.
Turn Bills of Lading, Customs Forms, and Rate Cons (from PDFs and faxes, to EDI) into rigid, standardized data. Connect your fragmented supply chain with a single, deterministic translation layer.
Start AutomatingUsed by industry leaders
Automatically create shipments in your TMS/ERP from emailed Rate Cons and Booking Confirmations. Capture weights, dimensions, and PRO numbers instantly.
Extract HS Codes, Country of Origin, and Values from Commercial Invoices. Validate against your master parts catalog to prevent customs delays.
Match Carrier BOLs against your original Booking Request. Automatically flag discrepancies in container count, weight, or seal numbers.
Your supply chain runs on PDFs, scans, and emails from thousands of different forwarders and carriers. bem acts as the translation layer, ingesting any format and outputting the rigid EDI or JSON your ERP needs.
Stop treating documents as just paperwork. They are the source of truth for your supply chain performance. bem extracts the hidden data to drive strategic decisions.
Extract "Arrival Dates" from Notices and compare them against the original "ETA" from Booking Confirmations. Automatically track carrier reliability and on-time performance.
Unlock line-item cost data from PDF Rate Cons and Invoices. Aggregate historical lane pricing to identify overspending and negotiate better contracts.
Don't wait for goods receipt. Ingest Packing Lists at the point of origin (factory) to know exactly which SKUs are in which container, enabling dynamic inventory allocation.
Logistics workflows are messy. You get 50-page PDFs containing Mixed Invoices, PLs, and Certs. bem decomposes this chaos into atomic, optimizable steps.
Forward emails or upload massive PDF packets. bem automatically splits the PDF into individual documents (BOL, Invoice, Cert of Origin).
Semantic classification determines document type and language. Routes "Commercial Invoice (Chinese)" to the APAC workflow.
Layout-aware models extract tabular data (SKUs, Weights) and key-value pairs (Vessel Name, ETA) into your rigid schema.
Convert fuzzy text ("Elec Parts") to specific HS Codes (8542.31). Match "Yantian Port" to UN/LOCODE "CNYTN".
Post clean JSON/EDI to your TMS, WMS, or ERP. Trigger events for "Shipment Created" or "Customs Ready".
New Alias Saved
Future docs with "Cat Lai" will auto-map to VNSGN.
Logistics is constantly changing. New forwarders, new layouts, new languages. bem adapts in real-time.
Whether you use SAP, Oracle, Wisetech (CargoWise), or a custom TMS, bem pushes clean, enriched JSON directly to your API.
const bolSchema = {
type: "object",
properties: {
shipper_name: { type: "string" },
vessel_name: { type: "string" },
containers: {
type: "array",
items: {
type: "object",
properties: {
container_id: { type: "string" },
seal_number: { type: "string" }
},
required: ["container_id"]
}
}
},
required: ["shipper_name", "containers"]
};Define the exact structure your TMS expects. bem validates every extraction against this JSON schema before it ever reaches your system.
// Lookup Port Codes from UN/LOCODE Master
{
"functionName": "port-enricher",
"type": "enrich",
"config": {
"steps": [
{
"sourceField": "port_of_loading",
"collectionName": "un-locode-master",
"targetField": "normalized_locode",
"searchMode": "hybrid",
"topK": 1
}
]
}
}Don't just extract text. Hydrate it. Automatically look up UN/LOCODEs, HS Codes, and Vendor IDs from your own master data collections.
{
"name": "process-inbound-bol",
"relationships": [
{
"sourceFunction": { "name": "bol-extractor", "versionNum": 1 },
"destinationFunction": { "name": "port-enricher", "versionNum": 1 }
}
]
}Chain functions together safely. Pass the output of your BOL Extractor directly into the Port Enricher and then to your TMS Sync function.
// Fire and forget transformation
await fetch("https://api.bem.ai/v2/calls", {
method: "POST",
body: JSON.stringify({
calls: [{
workflowName: "process-inbound-bol",
callReferenceID: "shp_8892_ref",
input: {
singleFile: {
inputType: "pdf",
inputContent: "base64_encoded..."
}
}
}]
})
});Push documents asynchronously. We handle the queuing, retries, and scale. Your webhook receives the final payload when ready.
Your financial data is sensitive. We treat it that way. Deploy bem in your own VPC or use our zero-retention cloud environment.
View Security Specs→