How fintech teams use bem to automate financial operations
Invisible infrastructure matters in financial operations
We’re about to release our 1st feature of Q2, our Precision Router, so I thought it’d be fun to run through a real use case of how to automate financial operations with bem.
When you're moving money, every second counts — and every manual touch is a risk.
In fintech, ops leaders face a paradox: the more they scale, the more brittle internal processes become. Spreadsheets break. SOPs get copied and pasted. And “just forward it to the ops alias” turns into hours of human translation.
This is especially dangerous in workflows like:
Loan origination
Underwriting
Tax and compliance intake
Treasury and accounting handoffs
Most teams end up building workflows that behave like agents — nudging humans, creating queues, generating ops tickets. That gets expensive fast.
What you need instead is infrastructure that runs invisibly, behind the scenes — taking unstructured documents, classifying them, extracting data, and triggering downstream actions.
That’s what bem was built for.
⚡️ROI in 30 Days: Customers using bem for intake workflows in lending and insurance are eliminating 80–90% of manual data prep work — and in some cases, saving hundreds of hours a week in underwriting and portfolio ops.
Let’s walk through how to do this.
Use Case: Automate Document Intake for Credit Ops
Let’s say you’re running credit ops at a fintech or nonbank lender. You regularly receive:
Loan Applications (PDF or email)
Revenue Forecasts (Excel or CSV)
Balance Sheets (Excel, CSV, or PDF)
Each comes from a different stakeholder — borrowers, brokers, internal teams — and none of it is structured the same way twice.
You want to:
Automatically classify and route documents
Extract structured data into a clean JSON schema
Notify your ops or risk team once complete
This lets you operate at scale without increasing headcount — or asking engineers to build custom pipelines for every document variation.
1. Create Pipelines for Each Document Type
Each document type gets a pipeline that defines:
The schema for structured output
Whether you want per-page or per-row processing
Where to send the results
Endpoint:
POST /v1-beta/pipelines
Here's an example schema for a Loan Application Pipeline
{
"name": "Loan Application Pipeline",
"outputSchemaName": "LoanApplication",
"outputSchema": {
"type": "object",
"required": ["applicantInfo", "loanDetails", "submittedAt"],
"properties": {
"applicantInfo": {
"type": "object",
"properties": {
"fullName": { "type": "string", "description": "Applicant's full legal name" },
"email": { "type": "string", "format": "email", "description": "Primary contact email" },
"phone": { "type": "string", "description": "Phone number" },
"businessName": { "type": "string", "description": "Name of the applicant's company" }
}
},
"loanDetails": {
"type": "object",
"properties": {
"requestedAmountUSD": { "type": "number", "description": "Loan amount requested in USD" },
"loanPurpose": { "type": "string", "description": "Purpose of the loan" },
"termMonths": { "type": "integer", "description": "Loan term in months" }
}
},
"submittedAt": { "type": "string", "format": "date", "description": "Date of submission" }
}
}
}
Create similar pipelines for revenue forecasts and balance sheets with fields like forecastStartDate
, monthlyRevenue
, currentAssets
, currentLiabilities
, etc.
2. Set Up a Router to Classify Incoming Docs
Instead of relying on humans to manually label or route documents, bem can auto-classify incoming files based on email sender, content patterns, or metadata.
Endpoint:
POST /v1-alpha/action-type-configs
Use actionType: route
{
"actionType": "route",
"name": "Credit Intake Router",
"routes": [
{
"name": "loan_applications",
"origin": {
"email": {
"patterns": ["@loanportal.com", "@brokerxyz.com"] /*NEW in Precisioun Router! Optional if you want deterministic matching by pattern*/
}
},
"actionTypeConfigID": "actcfg_loanapp123"
},
{
"name": "revenue_forecasts",
"origin": {
"email": {
"patterns": ["@financials.com"]
}
},
"actionTypeConfigID": "actcfg_revenue456"
},
{
"name": "balance_sheets",
"origin": {
"email": {
"patterns": ["@accountingpartners.com"]
}
},
"actionTypeConfigID": "actcfg_balance789"
}
]
}
This gives you a dedicated bem email address that you can forward files to.
Forward anything there — we'll route it to the right pipeline automatically.
🔁 Strategic Value: Your intake process becomes repeatable and auditable, which reduces compliance risk and improves investor confidence in your data model.
3. Notify Your Team When New Docs Arrive
Once a document is transformed, trigger an email notification to your internal team with the metadata and reference ID.
Endpoint:
POST /v1-alpha/action-type-configs
Use actionType: email
{
"actionType": "email",
"name": "Notify Credit Ops",
"fromEmail": "no-reply@bem.ai",
"fromName": "Bem Bot",
"toEmail": "credit-ops@yourcompany.com",
"toName": "Credit Ops",
"subject": "New Intake: {{referenceID}}",
"body": "<p>A new document has been processed for reference ID {{referenceID}}. You can now review the structured data in your dashboard or downstream system.</p>"
}
Chain this email notification by including nextActionTypeConfigID
in your pipeline config.
4. Send Documents via API or Email
Option A — API Upload
Endpoint: POST /v1-beta/transformations
{
"pipelineID": "pl_abc123",
"transformations": [
{
"referenceID": "loan_9821",
"inputType": "pdf",
"inputContent": "<base64 file content>"
}
]
}
Option B — Just Email It
Send any file to your router or pipeline address. We'll handle ingestion, routing, transformation, and notifications.
💼 Business Impact: You shorten time-to-decision on every loan file, avoid duplicate intake work, and reduce the burden on your operations team.
5. Monitor and Audit Everything
View transformation status:
GET /v1-alpha/tasks
Inspect processed output:
GET /v1-alpha/events
Track and resolve errors:
GET /v1-beta/transformations/errors
Extra Credit: Embed Fine-Tuning Into Your Existing UI
Once you’ve automated intake and transformation with bem, you’ll likely still encounter edge cases — minor corrections your ops team makes manually in your internal tools or CRM.
Most teams stop there. But with just one more step, you can:
✅ Continuously improve data quality
✅ Reduce manual work over time
✅ Build a feedback loop into your ops product — without the user ever leaving
Here’s how:
Let’s say your credit ops team is reviewing an intake form in your dashboard. They spot that the "requested amount" field was misinterpreted. They correct it directly in your UI.
Instead of treating that as the end of the workflow — use that corrected value to fine-tune bem automatically via our PATCH
endpoint.
PATCH /v1-beta/transformations
This endpoint lets you submit a corrected version of the structured output for any specific transformationID
.
You don’t have to retrain anything. You don’t need to manage a model. bem handles that behind the scenes — using your correction as signal to improve future results for similar docs.
{
"transformations": [
{
"transformationID": "tr_2bxoJPNdSD4LgRT4YVC4gt72hlI",
"correctedJSON": {
"loanDetails": {
"requestedAmountUSD": 125000
}
}
}
]
}
You can even capture a batch of corrections periodically and send them all at once.
Most of our customers get to 99% accuracy with only 10-20 corrections.
The best ops automations are the ones that feel like nothing changed — until they do.
By closing the loop invisibly:
Your workflows get better the more people use them
Ops teams don’t need to refile corrections
Your AI system feels like it’s learning — because it is.
Summary: Fintech Ops that Scale with You
You don’t need a queue of analysts reformatting spreadsheets or parsing PDFs by hand.
You need invisible, composable infrastructure that runs in the background.
bem turns your email inbox or intake folder into structured, actionable data — in minutes, not hours.
Ready to Build?
You don’t need a massive engineering team to automate credit intake.
You just need the right primitives.
📬 Forward a sample doc: hi@bem.ai
💻 Or schedule a demo
Run faster, cleaner, and invisibly, with bem.