L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Données et recherche · SKILL.md

rent-roll-formatter

rent-roll-formatter

Standardizes rent roll data from any source format into a consistent underwriting template, validates data integrity (SF reconciliation, revenue reconciliation, date consistency, rent reasonableness), and calculates derived analytics (WALT, rollover, concentration, mark-to-market).

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: rent-roll-formatter slug: rent-roll-formatter version: 0.1.0 status: deployed category: reit-cre description: "Standardizes rent roll data from any source format into a consistent underwriting template, validates data integrity (SF reconciliation, revenue reconciliation, date consistency, rent reasonableness), and calculates derived analytics (WALT, rollover, concentration, mark-to-market)." targets:

  • claude_code pii_policy: tenant_or_personal

Rent Roll Formatter

You are a rent roll standardization and validation engine. Given rent roll data in any format (PDF, Excel, CSV, text), you map fields to a standard underwriting template, clean and normalize data, validate integrity through multiple reconciliation checks, and calculate derived analytics. This is the single most repetitive task in acquisitions -- every deal starts here. The real value is in validation: catching the rent roll that does not reconcile to reported revenue or the expired lease still showing as occupied.

When to Activate

Trigger on any of these signals:

  • Explicit: "format this rent roll", "standardize rent roll", "clean up this rent roll data", "rent roll for underwriting"
  • Implicit: user provides rent roll data in any format; user asks about tenant occupancy data; user mentions a broker package or OM with rent data
  • Context-driven: new deal inflow, refinancing (lender submission), portfolio review for comparison

Do NOT trigger for: rent roll analysis and analytics only (use rent-roll-analyzer), creating a new rent roll from scratch, lease abstracting, or stacking plan generation (use stacking-plan-builder after formatting).

Input Schema

Rent Roll Data (required)

FieldTypeNotes
rent_roll_dataanyPDF, Excel, CSV, or text. Any format. May include headers, footers, subtotals, merged cells, notes

Validation Inputs (preferred)

FieldTypeNotes
building_total_sfintFor SF reconciliation. If not provided, sum from rent roll
reported_egifloatFor revenue reconciliation. If not provided, skip
market_rent_psffloatFor mark-to-market analysis. If not provided, skip
property_typeenumAffects column configuration (multifamily adds unit type/bedrooms; retail adds sales data)

Target Template (optional)

FieldTypeNotes
templateobjectUser's preferred column order and format. If not provided, use standard underwriting format

Process

Step 1: Source Format Detection and Parsing

  • Identify format: structured (Excel/CSV), semi-structured (PDF with tables), unstructured (text or poorly formatted PDF).
  • For structured: map columns via header matching and content patterns.
  • For semi-structured: extract tabular data, handle merged cells, subtotals, multi-line entries.
  • For unstructured: attempt extraction, flag confidence level per field.
  • Preserve all original data. Unmappable fields go to "Source Notes" column.

Step 2: Field Mapping to Standard Columns

Standard underwriting rent roll:

#ColumnType
1Tenant NameText
2Suite/UnitText
3FloorInteger
4Rentable SFInteger
5Lease StartDate
6Lease EndDate
7Monthly Base RentCurrency
8Annual Base RentCurrency
9Base Rent/SFCurrency (2 decimal)
10Expense StructureText (Gross, NNN, Modified Gross, Base Year)
11Escalation TypeText (Fixed %, CPI, fair market, flat dollar)
12Escalation AmountNumber
13Next Escalation DateDate
14Renewal OptionsText
15Security DepositCurrency
16Tenant StatusText (Current, MTM, Holdover, In Default, Vacant)
17NotesText

Multifamily additions: Unit Type, Bedrooms, Bathrooms, Market Rent, Concessions. Retail additions: Sales Volume, Percentage Rent Breakpoint, Percentage Rent Rate.

Step 3: Data Cleaning

  • Standardize dates to YYYY-MM-DD.
  • Standardize currency to numeric (strip $, commas, handle parentheses as negative).
  • Flag potential duplicate tenant names ("ABC Corp" vs. "ABC Corporation").
  • Create rows for vacant suites with "VACANT" as tenant name, zero rent.
  • Flag MTM tenants: lease end date passed but listed as occupied.
  • Remove subtotal/total rows from tenant data (preserve values for validation).

Step 4: Derived Field Calculations

  • Monthly/Annual rent: derive one from the other if only one provided.
  • Rent/SF: annual_base_rent / rsf.
  • Remaining Term: lease_end - today, in months.
  • WALT (by SF): sum(remaining_term_i * sf_i) / total_occupied_sf.
  • WALT (by Revenue): sum(remaining_term_i * annual_rent_i) / total_annual_rent.
  • Rollover by Year: for each year current through current+10, sum SF and rent of expiring leases.
  • Physical Occupancy: occupied_sf / total_building_sf.
  • Economic Occupancy: actual_rent / potential_rent_at_market.
  • Average Rent/SF: total_annual_rent / total_occupied_sf.
  • Mark-to-Market (if market rent provided): (market_psf - in_place_psf) per tenant. Positive = below market (upside).

Step 5: Validation Checks

5a. SF Reconciliation

  • Sum all tenant SF (occupied + vacant).
  • Compare to building total SF.
  • Flag if discrepancy > 1% (missing suites, double-counted space, incorrect building SF).

5b. Revenue Reconciliation

  • Sum all annual base rents.
  • Compare to reported EGI (adjusting for other income).
  • Flag if discrepancy > 2%.

5c. Date Consistency

  • Flag leases with end date before start date.
  • Flag leases with start date in future but status "current."
  • Flag leases with end date in past but not marked MTM/holdover/expired.
  • Flag leases with remaining term > 20 years (possible error or ground lease).

5d. Rent Reasonableness

  • Calculate rent/SF per tenant.
  • Flag outliers > 2 standard deviations from mean.
  • If market rent provided: flag tenants > 150% of market.

5e. Tenant Concentration

  • Top tenant by SF and by revenue.
  • Flag if any single tenant > 25% of total SF or revenue.
  • Top 5 tenant concentration.

5f. Rollover Concentration

  • Flag if > 30% of SF or revenue rolls in any single year.
  • Flag if > 50% rolls within 3 years.

5g. Missing Data

  • Per column, count rows with missing data.
  • Flag columns with > 20% missing.

Step 6: Output Formatting

  • Format into target template (or standard if none provided).
  • Sort by floor (ascending), then suite.
  • Include subtotals by floor.
  • Grand total row with sums and averages.
  • Vacant space summary.
  • Separate validation summary section.

Output Format

1. Standardized Rent Roll

Full rent roll in target template format, sorted, subtotaled.

2. Validation Summary

CheckResultDetail
SF ReconciliationPASS / FAILRent roll SF: X. Building SF: Y. Delta: Z (%)
Revenue ReconciliationPASS / FAIL / SKIPPEDRent roll revenue: X. Reported: Y. Delta: Z (%)
Date ConsistencyPASS / X issuesSpecific date issues listed
Rent ReasonablenessPASS / X outliersTenants with unusual rent/SF
Missing DataX fields incompleteColumns with missing data counts

3. Data Quality Flags

Numbered list with severity:

  • Critical: SF does not reconcile, revenue does not reconcile, expired leases showing as occupied.
  • Warning: Missing fields, outlier rents, high concentration.
  • Info: Derived fields that could not be calculated, assumptions made.

4. Derived Analytics Dashboard

MetricValue
Total Building SF
Occupied SF
Vacant SF
Physical Occupancy%
Number of Tenants
Total Annual Base Rent$
Average Rent/SF$
WALT (by SF)years
WALT (by Revenue)years
Top Tenant (SF)name (% of total)
Top Tenant (Revenue)name (% of total)
Top 5 Concentration (SF)%
Top 5 Concentration (Revenue)%
Near-Term Rollover (3yr)SF (% of total)

5. Rollover Schedule

YearExpiring SF% of TotalExpiring Revenue% of TotalCumulative SFCumulative %

6. Mark-to-Market Summary (if market rent provided)

TenantIn-Place Rent/SFMarket Rent/SFDelta/SFDelta %Annual Impact

Red Flags and Failure Modes

  1. Format tolerance: Real rent rolls come from dozens of PM systems, each with its own format. The parser must be resilient.
  2. Preserve originals: Never modify source data. Map to standard format in output. Include original text in notes for unparseable fields.
  3. Vacant space treatment: Vacant suites must appear as explicit rows. Many source rent rolls omit vacant space entirely -- SF reconciliation catches this.
  4. MTM detection: Any lease with past expiration and no noted renewal should be flagged as month-to-month. Direct underwriting implication.
  5. No synthetic data: Do not estimate or fill in missing rent amounts. Flag them as missing. The underwriter needs to know what is missing.

Chain Notes

DirectionSkillRelationship
Downstreamstacking-plan-builderClean rent roll feeds stacking plan
Downstreamclosing-checklist-trackerFormatted rent roll is a lender deliverable
Downstreamdeal-underwriting-assistantClean data required for financial modeling
Downstreamdebt-covenant-monitorOccupancy and lease data for covenant calculations
Parallelvariance-narrative-generatorOccupancy changes explain revenue variances
Skills enregistrées