Real Estate
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.
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






Inconsistent columns, merged cells, and a different export from every PMS make rent rolls a table-parsing problem. We line the columns up to one schema and tell real units from concession and summary rows.
01
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.
02
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.
03
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.
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
Every rent roll is different, so we build the config around your exact schema rather than a fixed list. These are the fields real-estate teams request most; we map whatever else your valuation or underwriting model needs.
01
Unit information
Unit number, unit type, square footage, bed/bath count, floor plan, market rent, move-in date
02
Tenant and lease
Tenant name, lease start date, lease end date, monthly rent, security deposit, lease type (market/affordable), rent status (current/delinquent)
03
Property summary
Total units, occupied units, vacant units, vacancy rate, gross potential rent, loss to lease, concessions, effective gross income
config.json
SenseML
{ /* SenseML: rent roll extraction */
"fields": [
{
"method": {
"id": "queryGroup",
"queries": [
{ "id": "unit_number", "description": "unit number, unit #, unit, apt" },
{ "id": "tenant_name", "description": "tenant name, resident name, lessee" },
{ "id": "monthly_rent", "description": "monthly rent, rent amount, current rent, market rent" },
{ "id": "lease_end", "description": "lease end date, lease expiration, lease to" }
// + more fields, mapped to your schema
]
}
}
]
}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.
Yardi, RealPage, AppFolio, MRI, Buildium, Entrata, Rent Manager, manual/Excel rent rolls
Multifamily apartments, student housing, senior living, commercial office, retail, industrial
Answers about PMS support, unit-level extraction, and property summary handling.
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.
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.
By default Sensible captures unit number, square footage, bed/bath count, unit type, market rent, actual rent, deposit amount, and lease terms, across both residential and commercial rent rolls. The columns it reads are configuration, so you can add charges, concessions, or any field your PM software exports.
Each tenant row comes out with unit number, tenant name, lease start and end dates, monthly rent, rent status, and additional charges or concessions. What gets pulled is defined in configuration, so you can extend the row to whatever a given rent roll reports without reworking your pipeline.
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.