Use cases · Product teams
Ship the product. bem does the structured work behind every upload.
Your users upload documents, calls, and email. bem reads them, checks them, and hands your product typed records with a score on every field. Your engineers keep building features, not extraction.
First 100 function calls every month, free. No credit card.
65%
faster paper invoice processing, with accuracy held. Fleetio
What your users upload
- W-9s and tax forms
- Certificates of insurance
- ID documents
- Invoices and receipts
- Support attachments
- Vendor and KYC packets
A user uploads a file. Your product gets a record.
Classify labels each upload and sends it down the right path. Extract returns typed fields with a score on each. Your product receives a record it can save.
Input
- DOCVendor packetPDF, uploaded by your user
Components
- 01ClassifyLabels it as a W-9, an insurance certificate, or a bank letter, and sends it to the right Extract.
- 02ExtractName, EIN, and address into your schema. Each field carries a confidence score.
- 03SendDelivers the record to your product's webhook, or you read it from the call response.
Your product
A typed record, saved
The vendor's details land in your database. Anything below your threshold goes to your review queue.
Your team should ship features, not an extraction stack.
Every product that takes uploads hits the same wall. Users want to upload a file. The roadmap wants OCR, classifiers, schema management, review queues, model evaluation, and an audit trail. Engineers disappear into a side project, and the customer only wanted to upload a PDF.
- 01
Layouts drift
A customer's file changes shape and the parser breaks. The team rewrites it instead of shipping the product.
- 02
Every customer, another format
The integrations team turns into a documentation team, because each customer brings a different file and your product sits in the seam.
- 03
Model upgrades, forever
Extraction in-house means keeping up with every model change, or freezing on one and watching quality decay.
Six places your product shouldn't make users type.
Every one runs on the same API. Compose the functions you need, expose them in your own interface, and let your users get back to the work they came to do.
- Extract · Enrich · Join
Invoice intake
Drop a PDF, get line items, totals, vendor IDs, and GL codes. Match against the purchase order and the goods receipt in one workflow.
- Classify · Extract · Payload Shaping
Customer onboarding
W-9s, certificates of insurance, ID documents, agreements. A new customer drops their old data or emails it from the previous system, and the record fills itself. Your team handles the exceptions.
- Classify · Parse · Enrich
Support attachments
A user emails a screenshot, a PDF, or a CSV. Your support product reads it, tags it, and links it to the ticket.
- Extract · AI Forms
Form auto-fill
Your user uploads a document and your form fills itself. They review, edit, and submit. Every correction becomes training data.
- Classify · Extract · Evaluate
Vendor and KYC documents
Banking details, tax forms, SOC 2 reports, government IDs, proof of address. Read each one, check it, and hand your reviewer everything in one place.
- Enrich
Catalog matching
What a user types or uploads is matched, by meaning and by text, to your catalog, your SKUs, and your source of truth. No more empty search results.
One API, four SDKs.
Use the SDK when you want full control, AI Forms when you want the front end, Forge when your ops team builds the workflows, and webhooks to stay in sync.
import Bem from "bem-ai-sdk";
const bem = new Bem(); // reads BEM_API_KEY from the environment
export async function onUpload(upload: { id: string; base64: string }) {
// 1. A user uploads a file in your product. Classify labels it and sends it to the right Extract.
const { call, error } = await bem.workflows.call("vendor-onboarding", {
input: { singleFile: { inputType: "pdf", inputContent: upload.base64 } },
callReferenceID: upload.id,
wait: true, // blocks up to 30 seconds; use a webhook for longer files
});
if (error || !call) throw new Error(error ?? "bem returned no call");
// 2. The terminal output is the Extract event: typed JSON, and a score for every field.
for (const output of call.outputs) {
if (output.eventType !== "extract") continue;
saveVendor(upload.id, output.transformedContent);
if ((output.avgConfidence ?? 1) < 0.9) queueForReview(upload.id, output.fieldConfidences);
}
}- API
API and SDKs
One REST API, and SDKs for TypeScript, Python, Go, and C#, generated from it. A first call takes an afternoon.
- UI
AI Forms
User-facing forms bem builds for you. Embed them by iframe or as a React component, and gate each workflow behind your own auth.
- UI
Forge
A visual builder for the teammates who do not live in code. From a sample file to a live API in minutes.
- HOOK
Webhooks
Subscribe to a function and bem sends each event to your endpoint when it completes, so your systems stay in sync.
Built for engineers who have been burned before.
The parts that usually become a permanent tax on the team are the parts bem carries.
- 01
Model changes stay behind the API.
bem abstracts the model layer. When an inference provider retires a model, you do not notice. Vision, language, and embedding models run underneath so you do not have to.
- 02
Accuracy checked against your data.
bem builds a golden dataset from your own files and tests against your standards: F1 scores, regression testing, drift detection. Accuracy is treated like code coverage.
- 03
Training is an API call.
No ML operations and no fine-tuning infrastructure. Your users correct a value in your product, and the correction trains the model.
- 04
Event-driven and observable.
Every extraction and match can be traced. Full audit trail, webhooks, and structured logs, for the teams that have to explain what happened and why.
You still build the product, with the right toolkit.
The model landscape changes every quarter, your customers' schemas change every release, and the accuracy bar moves every year. bem carries that layer, so your team builds faster and keeps control of the product.
Extraction in-house
- Hire engineers who can wire vision models, OCR, and schema validation
- Build the review queue, the evaluation harness, and the labeling UI
- Rework the parser every time a customer ships a new layout
- Keep up with model upgrades forever, or freeze on one and watch quality decay
- Defend a 0.5% error to a customer who never asked you to be in this business
With bem
- Install the SDK. The first call works in minutes
- Models upgrade behind the API, and your code does not change
- Schemas are versioned, and layouts that drift go to review
- Confidence scores, an audit trail, and human review come with it
- Your engineers go back to the product
Product teams already in production.
Fleet management, logistics, procurement, and more. The teams shipping with bem decided early that extraction was not the product.
- Fleetio
- 65%
- faster paper invoice processing
- With accuracy held.
- PromptWell
- 80%
- less engineering overhead
- Handling diverse data formats.
- Ply
- 15h
- saved per team member per week
- Automating supplier RFPs.
“We have not experienced any hiccups so far. The process has exceeded expectations as far as what we thought was going to happen.”
100 function calls a month. No credit card.
Sign up, install the SDK, and run your first workflow before lunch. Pay as you go from there, with no minimums, no platform fees, and no annual commitments. Add-ons for fine-tuning, Private Link, and dedicated support are flat-rate.
$0.09
per function call, down to $0.04 with volume
One price for any input type and any length. Pricing is per task, not per token or page.
What you get on day one
- Every function type
- Workflows and Forge
- AI Forms
- The operator review queue
- An audit trail with replay
- Webhooks and four SDKs
Put structured work behind your product.
The first 100 function calls are free. Pricing is per task, not per token or page. Pay as you go, with no lock-in.