Extract offering memorandums to structured JSON

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.

Why offering memorandums resist automated extraction

Inconsistent tables, embedded photos, and broker-specific formatting make OMs highly variable.

Mixed Content Parsing

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.

Financial Projection Tables

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.

Broker-Specific Formatting

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.

Fields we extract

Financial and property fields cover deal screening. Customize the schema for your acquisition model.

Property overview

Property name, address, property type, year built, total units/SF, lot size, zoning, parking, occupancy rate, asking price/cap rate

Financial data

Gross potential income, vacancy loss, effective gross income, operating expenses (itemized), NOI, cap rate, price per unit/SF, cash flow projections

Deal information

Broker name, broker contact, seller information, marketing highlights, comparable sales, rent comparables, market overview


{ /* SenseML: offering memorandum extraction */
"fields": [
{
"method": {
"id": "queryGroup",
"queries": [
{
// Property name or address
"id": "property_name",
"description": "property name, property address, subject property"
},
{
// Asking price or list price
"id": "asking_price",
"description": "asking price, list price, offering price",
"type": { "id": "currency" }
},
{
// Cap rate
"id": "cap_rate",
"description": "cap rate, capitalization rate, going-in cap rate",
"type": {
"id": "custom",
"pattern": "[0-9]{1,2}\\.?[0-9]{0,2}%"
}
},
{
// Net operating income
"id": "noi",
"description": "net operating income, NOI, annual NOI",
"type": { "id": "currency" }
}
// Additional fields for unit count, GPI, vacancy, expenses, etc.
]
}
}
]
}
Retail Center OM

Shopping center or retail investment memo with lease abstracts and cap rate analysis.

Office Building OM

Commercial office offering memorandum with tenant roster and NOI projections.

Multifamily Offering Memorandum

Investment offering for apartment properties with financials and unit mix.

Supported OM formats

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.

By broker

CBRE, JLL, Cushman & Wakefield, Marcus & Millichap, Newmark, Colliers, Berkadia, local/regional brokers

By property type

Multifamily, office, retail, industrial, mixed-use, hospitality, self-storage, senior living

Trusted by operations and engineering teams at

Common Questions

Answers about OM parsing, financial projection extraction, and broker format support.

How does Sensible handle the complex tables in OMs?

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.

What property details does Sensible capture from OMs?

Sensible extracts property address, type, year built, total units or square footage, lot size, zoning, occupancy rate, and asking price. It also captures seller and broker information.

Can Sensible extract financial projections from offering memorandums?

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.

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.