Extract rent rolls to structured JSON

Rent rolls list every unit in a property with tenant names, lease terms, and rent amounts. Lenders and investors rely on this data for valuation and underwriting. Sensible converts rent roll data into structured JSON regardless of property management software or format.

Why rent rolls break standard table extraction

Inconsistent columns, merged cells, and PMS variations make rent roll extraction a table-parsing problem.

Property Management Software Variation

Yardi exports look nothing like RealPage. AppFolio differs from MRI. Each PMS uses its own column headers, date formats, and summary structure. Sensible normalizes all of them into your target schema.

Vacant Unit and Concession Handling

Vacant units may show zero rent, be omitted entirely, or carry "VACANT" in the tenant name column. Concessions and lease incentives appear as negative line items, footnotes, or separate sections. Sensible identifies vacancy status and concession amounts regardless of how the PMS represents them.

Summary Row Disambiguation

Rent rolls for multi-building portfolios include subtotals per building, per floor, or per unit type interspersed with actual unit rows. Extraction engines that treat every row as a unit will ingest summary rows as phantom units. Sensible distinguishes summary rows from unit data so your totals are accurate.

Fields we extract

Unit-level and property-level fields ship by default. Customize for your valuation or underwriting model.

Unit information

Unit number, unit type, square footage, bed/bath count, floor plan, market rent, move-in date

Tenant and lease

Tenant name, lease start date, lease end date, monthly rent, security deposit, lease type (market/affordable), rent status (current/delinquent)

Property summary

Total units, occupied units, vacant units, vacancy rate, gross potential rent, loss to lease, concessions, effective gross income


{ /* SenseML: rent roll extraction */
"fields": [
{
"method": {
"id": "queryGroup",
"queries": [
{
// Unit number or identifier
"id": "unit_number",
"description": "unit number, unit #, unit, apt"
},
{
// Tenant name
"id": "tenant_name",
"description": "tenant name, resident name, lessee"
},
{
// Monthly rent amount
"id": "monthly_rent",
"description": "monthly rent, rent amount, current rent, market rent",
"type": { "id": "currency" }
},
{
// Lease expiration date
"id": "lease_end",
"description": "lease end date, lease expiration, lease to",
"type": { "id": "date" }
}
// Additional fields for square footage, vacancy status, deposit, etc.
]
}
}
]
}
Yardi Rent Roll

Rent roll exported from Yardi property management software.

Commercial Rent Roll

Office or retail property rent roll with tenant mix, square footage, and lease expiration.

Multifamily Rent Roll

Apartment complex rent roll listing units, tenants, lease terms, and monthly rent.

Supported rent roll formats

Pre-built templates cover major PMS platforms. New formats from any property management system can be configured using SenseML's hybrid approach: LLM parsing for layout variation, deterministic rules for output consistency.

By software

Yardi, RealPage, AppFolio, MRI, Buildium, Entrata, Rent Manager, manual/Excel rent rolls

By property type

Multifamily apartments, student housing, senior living, commercial office, retail, industrial

Trusted by operations and engineering teams at

Common Questions

Answers about PMS support, unit-level extraction, and property summary handling.

Does Sensible handle different rent roll formats?

Yes. Property management software produces different formats. Pre-built rent roll templates are available in the configuration library, and Sensible adapts to format variations and normalizes the output into a consistent schema.

Can Sensible calculate vacancy from rent rolls?

Sensible extracts occupied and vacant units with their details. The structured JSON output makes it straightforward to calculate vacancy rates, loss-to-lease, and effective gross income programmatically.

What unit-level details does Sensible capture?

Sensible extracts unit number, square footage, bed/bath count, unit type, market rent, actual rent, deposit amount, and lease terms. It handles both residential and commercial rent rolls.

How does Sensible extract tenant data from rent rolls?

Sensible extracts each tenant row with unit number, tenant name, lease start and end dates, monthly rent, rent status, and any additional charges or concessions.

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.