Capital Markets
Offering memorandums present investment properties with financial projections, property details, and market analysis. OMs blend narrative with dense financial tables. Sensible converts OM data into structured JSON for deal screening, underwriting, and portfolio analysis.
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






OMs mix narrative, photos, and financial projection tables, and every brokerage brands and orders them its own way. We pull the numbers and terms that matter into a consistent schema, whatever the design.
01
Photos, market narratives, financial tables, all in one PDF. The extraction focuses on the numbers: structured data from financial sections, property details from the description, marketing content ignored.
02
Pro forma projections, cap rate analyses, cash flow schedules: each varies by broker and property type. Tables are extracted with their full multi-year structure into arrays your underwriting model consumes directly.
03
CBRE, JLL, Cushman, Marcus & Millichap: every brokerage uses their own branded OM template with different layouts, page ordering, and section naming. There is no structural standard. Sensible adapts to each broker's design while outputting the same acquisition analysis schema.
Managed services
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
We configure every offering memorandum extraction to your exact schema, not a fixed field list. The fields below are the ones acquisitions teams pull most often — tell us what your acquisition model needs and we map the rest.
01
Property overview
Property name, address, property type, year built, total units/SF, lot size, zoning, parking, occupancy rate, asking price/cap rate
02
Financial data
Gross potential income, vacancy loss, effective gross income, operating expenses (itemized), NOI, cap rate, price per unit/SF, cash flow projections
03
Deal information
Broker name, broker contact, seller information, marketing highlights, comparable sales, rent comparables, market overview
config.json
SenseML
{ /* SenseML: offering memorandum extraction */
"fields": [
{
"method": {
"id": "queryGroup",
"queries": [
{ "id": "property_name", "description": "property name, property address, subject property" },
{ "id": "asking_price", "description": "asking price, list price, offering price" },
{ "id": "cap_rate", "description": "cap rate, capitalization rate, going-in cap rate" },
{ "id": "noi", "description": "net operating income, NOI, annual NOI" }
// + more fields, mapped to your schema
]
}
}
]
}Sensible processes OMs from any brokerage: CBRE, JLL, Cushman, Marcus & Millichap, and regional firms. The hybrid approach adapts to each broker's format while enforcing your target schema.
CBRE, JLL, Cushman & Wakefield, Marcus & Millichap, Newmark, Colliers, Berkadia, local/regional brokers
Multifamily, office, retail, industrial, mixed-use, hospitality, self-storage, senior living
Answers about OM parsing, financial projection extraction, and broker format support.
Sensible's table extraction handles multi-page financial schedules, rent rolls embedded in OMs, and comparable sales tables. Column headers and row labels are preserved in the structured output.
By default Sensible pulls property address, type, year built, total units or square footage, lot size, zoning, occupancy rate, asking price, and the seller and broker details. OMs differ widely in what they report, so the field set is configuration you shape, adding or dropping items to match the deal data you track.
Yes. Sensible extracts income and expense tables, pro forma projections, cap rates, NOI, and cash flow schedules. Multi-year projection tables are returned as structured arrays.
Yes. Sensible sends extraction results to your webhook endpoint when processing completes. You can also poll the API for status.
Yes. Sensible flags extractions with low confidence for human review. You can configure review thresholds and workflows.
Sensible is SOC 2 Type II certified and HIPAA compliant. Data is encrypted in transit and at rest.
Document data is stored indefinitely by default. Custom retention policies are available and can be configured for same-day deletion if needed.
Yes. Sensible offers a 14-day free trial on the Growth plan. No credit card required to start.
Sensible uses per-document pricing for predictable costs. No token-based billing or usage surprises. Volume discounts are available for higher throughput.
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.
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.
Accuracy depends on document quality and configuration. Most production deployments achieve 95%+ accuracy with proper validation rules and confidence signals.
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
Free 14-day trial. No credit card required. Start extracting in minutes.