a Sagan program ยท currently in private beta

Rent Roll Parser Agent

The summary sheet shows lease trade-out, pre-lease occupancy, and rate distribution per unit type after you confirm the agent's unit-type mappings in the interactive review table, then download the Excel workbook.
before

Upload rent rolls to Archer or similar tool, wait 1-2 days for output, receive parsed data with format-related errors, spend 1-3 hours manually fixing mistakes and building summary tables with lease trade-out and rate distribution.

after

Upload current and pre-lease rent rolls, confirm unit-type mappings in an interactive review table (under 10 minutes), download a side-by-side summary with weighted-average rates, lease trade-out percentage, pre-lease occupancy, leasing-ladder distribution, and other-income totals formatted to your existing output style.

real estate / real estate investment / student housing / property management / commercial real estate / data enrichment / reporting / operations / Excel / Entrata / RealPage / Yardi Voyager /  real estate / real estate investment / student housing / property management / commercial real estate / data enrichment / reporting / operations / Excel / Entrata / RealPage / Yardi Voyager / 
the problem

Student housing acquisitions teams wait 1-2 days for rent-roll parsing, then spend hours fixing algorithmic mistakes.

Every deal analysis starts with two rent rolls: current (what's leased today) and pre-lease (what's signed for next academic year).

01
Current workflow

Upload rent rolls to Archer, wait 1-2 days, receive parsed output, spend 1-3 hours fixing format-related errors, manually build summary tables with lease trade-out and rate distribution.

02
Algorithmic brittleness

Student properties use different unit-naming conventions (Berkeley 1x1 vs Madison 1x1), bed-level lease structures (unit 1404A and 1404B as separate leases), and other-income line items (pet rent, utility fees, LLP program charges) that vary by property. Rigid parsing rules fail on the variability.

03
Pre-lease complexity

Pre-lease rent rolls often omit unit numbers because students sign leases for 'any 2x2 with my friend' without committing to a specific unit. The parser must group these by bed type rather than treating them as orphan rows.

the math, if you want to look

Parse two rent rolls, confirm unit-type mappings, download a side-by-side summary with lease trade-out and rate distribution in under 10 minutes.

proof 01
Minutes instead of days

End-to-end time from upload to downloadable summary: under 10 minutes for typical 500-1500 row pairs, including your manual review of ambiguous mappings.

proof 02
Format-agnostic parsing

Handles Entrata, RealPage, Yardi Voyager, and other PMS exports without algorithmic rule rewrites. The LLM detects unit-type variants and bed-level structures; you confirm or correct; deterministic code computes the summary.

proof 03
Leasing-ladder rate distribution per unit type

See the distribution of lease rates per unit type (10 leases at $800, 10 at $900, 30 at $1000, 10 at $1100), not just weighted averages. Reveals whether you're pricing at the market edge or leaving rate upside on the table.

proof 04
Other-income accuracy

Pet rent, utility fees, LLP program charges, and late fees are detected and totaled separately. Typically 10-15% of total revenue; missing this skews underwriting.

The agent reads both current and pre-lease rent rolls, detects unit types by combining square footage and unit-name patterns, handles bed-level lease structures (the A/B convention varies by property), and surfaces ambiguous mappings for you to confirm before running deterministic analysis. You get a summary table per unit type with weighted-average rates, lease trade-out percentage, pre-lease occupancy, and the leasing-ladder distribution (how many leases at each price tier). Other-income line items (pet rent, utility fees, LLP program) are pulled out and totaled separately. Download the workbook formatted to your existing output style.

how it works

Upload, review, analyze.

The agent parses both rent rolls in parallel, detects unit types and lease structures, flags ambiguous rows for your confirmation, then computes the summary statistics deterministically.

step 01
Upload current and pre-lease rent rolls

Drop in two .xlsx files from your property management system (Entrata, RealPage, Yardi Voyager, or Excel export). The agent assumes both files are from the same property.

step 02
Agent parses and detects unit types

The LLM reads both files, identifies distinct unit types by combining square footage and unit-name patterns (e.g., Berkeley 1x1 vs Madison 1x1), recognizes bed-level lease structures (1404A and 1404B as separate leases in one unit), and categorizes line items into Lease Rent, Other Income (pet rent, utility fees, LLP program, late fees), and anomalies. Typical parse time: 1-3 minutes.

step 03
Review and confirm mappings

The agent surfaces three sections: confidently classified unit types (collapsed by default), rows that need your review (ambiguous mappings or new unit types the agent detected), and flagged anomalies (rent rates 3x the unit-type average, lease dates outside the academic year, units with no Lease Rent line). You confirm, reassign, or merge unit types. Click 'Run analysis' to commit.

step 04
Download summary workbook

The agent computes weighted-average rates, lease trade-out percentage, pre-lease occupancy, min/max/standard deviation, and the leasing-ladder distribution per unit type. Download an Excel workbook formatted to your existing output style, with separate sheets for each unit type and a summary dashboard.

ai agent · estimator console inputs transform outputs public preview
inputs
Current rent roll (.xlsx) +

Excel file from your property management system (Entrata, RealPage, Yardi Voyager) showing every unit, lease, and charge line for the in-progress academic year. Typically 500-1500 rows per property.

Pre-lease rent roll (.xlsx) +

Excel file showing leases signed for the next academic year, even though those leases haven't started yet. Often omits unit numbers because students sign for 'any 2x2 with my friend' without committing to a specific unit.

transformation
Parse and detect unit types +

LLM reads both files, identifies distinct unit types by combining square footage and unit-name patterns, recognizes bed-level lease structures (1404A and 1404B as separate leases), and categorizes line items into Lease Rent, Other Income, and anomalies.

Map current to pre-lease unit types +

Assign stable unit-type IDs across both rent rolls so current vs pre-lease is directly comparable. Handle cases where a unit type exists in one rent roll but not the other.

Review and confirm ambiguous mappings +

Surface rows where the agent's confidence was below threshold or where it created a new unit type. You confirm, reassign, or merge unit types before deterministic computation runs.

Compute summary statistics +

Deterministic JavaScript calculates per unit type: count of units, count of beds, square footage range, weighted-average in-place rate, weighted-average pre-lease rate, lease trade-out percentage, pre-lease occupancy percentage, count of new leases vs renewals, min/max/standard deviation of rates, and leasing-ladder distribution (histogram of lease rates by price tier).

Categorize and total other-income line items +

Detect Pet Rent, Utility Fees (often multiple sub-types), LLP Program, Late Fees, Lease Premium, Deposit Held, and catch-all Other. Total each category across the property. Typically 10-15% of total revenue.

outputs
Summary table by unit type +

Rows for each unit type showing: unit count, bed count, square footage range, weighted-average in-place rate, weighted-average pre-lease rate, lease trade-out percentage, pre-lease occupancy percentage, new vs renewal lease count, min/max/standard deviation.

Leasing-ladder distribution per unit type +

Histogram showing how many leases are signed at each price tier (e.g., 10 leases at $800, 10 at $900, 30 at $1000, 10 at $1100). Reveals whether you're pricing at the market edge or leaving rate upside on the table.

Other-income summary +

Total per category (Pet Rent, Utility Fees, LLP Program, Late Fees, etc.) across the property. Typically 10-15% of total revenue; missing this skews underwriting.

Side-by-side current vs pre-lease per unit type +

Comparison table showing in-place and pre-lease metrics for each unit type in a single view, not separate tables.

Downloadable Excel workbook +

Formatted to your existing output style, with separate sheets for each unit type, summary dashboard, and leasing-ladder histograms. Ready for downstream underwriting analysis.

draft ready for estimator review _
tech used
Excel rent-roll imports from Entrata, RealPage, Yardi VoyagerOpenRouter LLM for unit-type detection and line-item categorizationDeterministic JavaScript computation for lease statistics and leasing-ladder analysis
tool alternatives
Archer or another commercial rent-roll parser with algorithmic categorization
honest qualification

Is this for you?

built for you if
  • + Student housing acquisitions analysts - Teams evaluating deal economics and lease velocity. You need to compare current vs pre-lease rent rolls, model lease trade-out and pre-lease velocity, and surface rate distribution to identify pricing upside. The agent cuts your analysis time from 1-2 days to under 10 minutes.
  • + Underwriting teams at multifamily and student housing firms - Rent-roll parsing is one of many inputs into deal evaluation. The agent handles format variability across Entrata, RealPage, Yardi Voyager, and other PMS exports without algorithmic rule rewrites. You confirm mappings and download a summary ready for downstream analysis.
  • + Properties with variable unit-naming conventions and bed-level leases - If your property uses sub-variants (Berkeley 1x1 vs Madison 1x1), bed-level lease structures (1404A and 1404B as separate leases), or other-income line items that vary by PMS, the agent's LLM-driven parsing handles the variability. Algorithmic tools like Archer break on this; the agent adapts.
  • + Teams that need leasing-ladder rate distribution per unit type - If you want to see the distribution of lease rates per unit type (not just weighted averages) to identify pricing opportunities, the agent surfaces this automatically. Brian's use case: 'if it's a wide band, maybe there's opportunity, maybe they missed the market.'
not for you if
  • - Single-unit or single-lease comparisons - The agent's value comes from comparing current vs pre-lease rent rolls at the property level and aggregating by unit type. If you need to analyze one unit or one lease in isolation, this is overkill.
  • - Continuous rent-roll monitoring or comp scraping - The agent parses a pair of rent rolls on demand. It does not continuously monitor your property's rent roll or scrape competitor rents over time. That's a separate agent.
  • - Aspirational or post-business-plan rent-roll modeling - The agent parses and summarizes observed data. It does not forecast future rent rolls or model the impact of business-plan improvements (renovations, rate increases, occupancy changes). That's analyst territory.
  • - Properties with non-standard lease structures - The agent assumes academic-year lease cycles (August through July) and standard unit-type variants. If your property uses non-standard lease structures (e.g., month-to-month, multi-year corporate leases), the agent may require custom configuration.
pricing

Scoped build plus usage-based runs.

to build

The agent is built to your specifications during the engagement. After launch, you pay per run based on LLM token usage (parsing both rent rolls) and storage (historical runs for audit). Typical run cost: $5-15 depending on rent-roll size and LLM model selection.

then
  • Scoped build includes: file upload UI, LLM parsing and unit-type detection, interactive review step, deterministic summary computation, Excel workbook generation, and SQLite storage for audit.
  • Usage-based runs: you pay for OpenRouter LLM tokens consumed during parsing. Typical 500-1500 row pair: 1-3 minutes of LLM time, $5-15 per run.
  • No per-user or per-property licensing. One agent instance serves your entire acquisitions team.
  • Storage: historical runs stored on Railway volume for debugging and audit. Included in the build cost; no separate storage fee.
FAQ
How long does it take to parse a rent roll pair with this agent?

End-to-end time from upload to downloadable summary is under 10 minutes for typical 500-1500 row pairs, including your manual review of ambiguous mappings. The LLM parsing step itself takes 1-3 minutes; the review step is as fast as you confirm the unit-type mappings.

What happens if the agent isn't sure about a unit-type mapping?

The agent surfaces ambiguous rows in an interactive review table before running the deterministic analysis. You confirm, reassign, or merge unit types. Only after you click 'Run analysis' does the computation proceed. This prevents hallucinated numbers and keeps you in control of the mapping decisions.

Does this work with rent rolls from different property management systems?

Yes. The agent handles Entrata, RealPage, Yardi Voyager, and other PMS exports without algorithmic rule rewrites. It detects unit-type variants and bed-level lease structures by combining square footage and unit-name patterns, so format variability doesn't break the parsing. You confirm the mappings, and the agent adapts.

What is lease trade-out, and why does it matter?

Lease trade-out is the year-over-year rate change for the same unit type. It's the primary metric for underwriting growth in student housing. The agent compares current and pre-lease rent rolls per unit type to show you the trade-out percentage, so you can model revenue growth and identify pricing opportunities.

Does the agent handle bed-level leases where one unit has multiple lease lines?

Yes. Student properties often use bed-level leases, where a 2-bedroom unit shows up as two separate lease lines (e.g., 1404A and 1404B). The agent recognizes this convention and groups them correctly as one unit with multiple beds, so your summary table reflects the actual unit count, not the lease count.

What is the leasing-ladder distribution, and how does it help with pricing decisions?

The leasing ladder shows how many leases are signed at each price tier (e.g., 10 leases at $800, 10 at $900, 30 at $1000, 10 at $1100). It reveals whether you're pricing at the market edge or leaving rate upside on the table. A wide band suggests pricing opportunity; a tight band suggests you've captured the market efficiently.

Does the agent capture other-income line items like pet rent and utility fees?

Yes. The agent detects and totals other-income categories separately: pet rent, utility fees, LLP program charges, late fees, lease premiums, and deposit-held amounts. These typically represent 10-15% of total revenue at student properties. Missing them skews underwriting, so the agent surfaces them in a dedicated summary section.

What if the pre-lease rent roll doesn't have unit numbers because students signed without committing to a specific unit?

The agent handles this. When pre-lease records lack unit numbers, it groups them by bed type (1x1, 2x2, etc.) rather than treating them as orphan rows. This lets you compare pre-lease velocity and rate distribution per unit type even when students haven't been assigned to specific units yet.

related builds
qoe-agent-c6e1c4d2rent-roll-parser-agent-prd-v1-0-a6644eb0
next step

Ready to cut rent-roll parsing from 1-2 days to under 10 minutes?

Upload your current and pre-lease rent rolls, confirm the agent's unit-type mappings, and download a side-by-side summary with lease trade-out and leasing-ladder distribution. No algorithmic rules to fix. No waiting for external tools. Start analyzing the same day.