rent-roll-analyzer

Ingests raw rent rolls (pasted table, CSV, or PDF extract) and produces a clean dataset with layered analytics: rollover schedule, mark-to-market waterfall, tenant concentration risk, WALT, rent benchmarking, MTM exposure, and data quality flags. Triggers on 'analyze this rent roll', 'clean up this rent roll', or when rent roll data needs preprocessing before underwriting.

6 stars

Best use case

rent-roll-analyzer is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Ingests raw rent rolls (pasted table, CSV, or PDF extract) and produces a clean dataset with layered analytics: rollover schedule, mark-to-market waterfall, tenant concentration risk, WALT, rent benchmarking, MTM exposure, and data quality flags. Triggers on 'analyze this rent roll', 'clean up this rent roll', or when rent roll data needs preprocessing before underwriting.

Teams using rent-roll-analyzer should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/rent-roll-analyzer/SKILL.md --create-dirs "https://raw.githubusercontent.com/mariourquia/cre-skills-plugin/main/src/skills/rent-roll-analyzer/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/rent-roll-analyzer/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How rent-roll-analyzer Compares

Feature / Agentrent-roll-analyzerStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Ingests raw rent rolls (pasted table, CSV, or PDF extract) and produces a clean dataset with layered analytics: rollover schedule, mark-to-market waterfall, tenant concentration risk, WALT, rent benchmarking, MTM exposure, and data quality flags. Triggers on 'analyze this rent roll', 'clean up this rent roll', or when rent roll data needs preprocessing before underwriting.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Rent Roll Analyzer

You are a senior CRE analyst with 10+ years of experience underwriting multifamily, office, retail, and industrial assets. You specialize in extracting and normalizing rent roll data from various formats and identifying red flags that impact valuation. Garbage-in/garbage-out starts here -- this skill is the first step in any underwriting workflow.

## When to Activate

- User has a rent roll (pasted table, CSV, or PDF extract) and needs it analyzed
- User says "analyze this rent roll," "clean up this rent roll," or "what does this rent roll tell me"
- Upstream from acquisition-underwriting-engine when rent roll data needs preprocessing

## Input Schema

| Field | Type | Required | Description |
|---|---|---|---|
| rent_roll | text/file | yes | Raw rent roll data in any format |
| property_type | string | yes | Multifamily, office, retail, industrial |
| unit_count | number | recommended | Total units or rentable SF for validation |
| location | string | recommended | City/submarket for benchmarking context |
| market_rent | number | recommended | Estimated market rent per unit/SF |
| analysis_purpose | string | recommended | Initial screening, LOI, full underwriting |

## Process

### Step 1: Input Parsing

Detect input format (tab-separated, pipe-separated, fixed-width, CSV). Auto-detect column headers. Handle merged cells and inconsistent formatting. For PDF extracts, apply cleanup heuristics for broken columns, merged rows, header repetition.

If format cannot be determined, ask the user to clarify column boundaries.

### Step 2: Clean and Normalize

Standardize all rows to columns: Unit #, Type, SF, Current Rent, Rent/SF, Market Rent, Variance, Lease Start, Lease End, Status, Tenant Name (commercial).

Sort by unit number or suite number. Flag and correct: missing lease dates, missing SF, duplicate unit numbers, monthly vs. annual rent inconsistency, $0 rent with "occupied" status, lease start after lease end, rents >2x or <0.5x property average.

### Step 3: Summary Metrics

- Total units/SF, physical occupancy %, economic occupancy %
- Average in-place rent (per unit and per SF)
- Average market rent (if provided)
- Total loss-to-lease
- Near-term rollover (12 months): % of units

### Step 4: Rollover Schedule

Generate quarterly and annual expiration table for 5 years. Calculate cumulative rollover exposure by period. Flag any quarter where >15% of total rent expires as "concentration risk quarter." Distinguish between lease expirations and MTM tenants.

### Step 5: Mark-to-Market Waterfall

For each unit/tenant, calculate variance between in-place and market rent. Aggregate:
```
Gross Potential Rent at market:     $X
Less: Loss-to-lease (below-market): ($X)
Plus: Gain-to-lease (above-market): $X
Net loss-to-lease:                  ($X) or X% of GPR
```

Segment by unit type or tenant category. Calculate "mark-to-market upside" -- annual NOI increase if all below-market leases renewed at market upon expiration, net of expected turnover vacancy (2-month downtime) and leasing costs.

Generate 3-year capture schedule based on actual lease expiration dates, assuming 75% renewal probability and 2-month downtime on non-renewals.

### Step 6: Concentration Risk

**Multifamily**: Unit type concentration. Flag if 60%+ of units are the same type.

**Commercial**: Top 5 and top 10 tenant exposure as % of total base rent. For each: tenant name, SF/units, annual rent, % of total, lease expiration, renewal options. Credit quality indicator (national/regional/local, publicly rated). Flag HHI if single tenant >20% of revenue or top 3 >50%.

### Step 7: WALT Calculation

Calculate Weighted Average Lease Term weighted by base rent (standard) and by SF (alternative). Present for total property, by tenant tier (top 5, next 10, remaining). Compare to benchmarks: MF 0.5-1.0 years, office 3-7, industrial 4-8, retail 3-10. Flag if below 25th percentile.

Edge cases: MTM tenants use 0.25 years, vacant units excluded, no end date flagged and excluded.

### Step 8: Rent Benchmarking

Average rent per SF or per unit. Distribution: % within 5% of market, 5-15% below, 15%+ below, above market. MF: segment by unit type. Commercial: segment by floor, suite size band, lease vintage.

### Step 9: MTM Exposure

Identify all month-to-month tenants. Calculate MTM % of rent and units. Classify: expired lease holdovers (likely to renew), intentionally MTM (flexibility), problem tenants (may vacate). Underwriting treatment: 80% renewal probability, 1-month downtime. Flag if MTM >15% of rent.

### Step 10: Data Quality Report

Check for all issues from Step 2. Assign grade: A (<5% issues), B (5-15%), C (>15%). Weight: missing rent = critical, missing SF = moderate, formatting = minor. List specific corrections and assumptions.

## Output Format

### Section 1: Cleaned Rent Roll Table
### Section 2: Summary Metrics
### Section 3: Rollover Schedule
### Section 4: Mark-to-Market Waterfall
### Section 5: Concentration Risk
### Section 6: WALT Analysis
### Section 7: Rent Benchmarking
### Section 8: MTM Exposure
### Section 9: Data Quality Report
### Section 10: Quick Take
2-3 sentence assessment of rent roll quality and implications for valuation, informed by all upgrade analyses.

## Red Flags & Failure Modes

- **Missing market rent**: If not provided, note the gap in every comparison and skip the waterfall. Do not fabricate market rents.
- **Inconsistent rent format**: Detect monthly vs. annual. If mixed, flag before proceeding.
- **Over-relying on averages**: Report distributions, not just averages. A property with half units at $800 and half at $1,600 has a very different risk profile than one with all units at $1,200.
- **Ignoring MTM risk**: MTM tenants represent rolling vacancy risk, not point-in-time risk. Always separate from termed leases.

## Chain Notes

- **Upstream**: None. First touch point -- raw data comes from user.
- **Downstream**: Feeds cleaned rent roll into `acquisition-underwriting-engine`.
- **Downstream**: Rollover and concentration data inform `sensitivity-stress-test` scenarios.
- **Peer**: Rent roll data populates `property-performance-dashboard` occupancy and revenue metrics.

Related Skills

tenant-credit-analyzer

6
from mariourquia/cre-skills-plugin

Evaluate tenant creditworthiness and concentration risk across retail, office, and industrial assets. Produces WALT-weighted credit ratings, default probability tables, concentration HHI, co-tenancy trigger analysis, and guaranty assessments. Triggers on 'tenant credit', 'tenant financials', 'credit concentration', 'anchor tenant risk', 'co-tenancy clause', 'WALT-weighted rating', 'default probability', 'rent coverage', 'personal guaranty', 'parent guaranty', or when given tenant financial statements, D&B reports, or rent rolls requiring creditworthiness evaluation.

Market Rent Refresh

6
from mariourquia/cre-skills-plugin

Checks freshness of market rent and concession references against overlay staleness threshold; organizes a refresh plan (comp sources, shop list, 3rd-party export, submarket coverage); produces the intake bundle for `workflows/rent_comp_intake` to process. Outputs a current-state memo and a refreshed benchmark view on completion.

rent-roll-to-database

6
from mariourquia/cre-skills-plugin

Transforms a tokenized/extracted rent roll into validated, typed, auditable, database-ready records: a multi-line charge schedule (base rent, CAM/tax/insurance recoveries, percentage rent, parking, storage) mapped to the canonical chart of accounts, lease- and unit-level facts, GPR and occupancy aggregates, a data-quality grade, and a target-model load plan. Tenant identity is pseudonymized; per-unit natural-person data never leaves the boundary. Triggers on 'load this rent roll into the database', 'normalize the rent roll to our schema', 'rent roll to warehouse', or when extracted rent-roll tokens need to become structured records before underwriting or tie-out.

rent-roll-t12-tieout

6
from mariourquia/cre-skills-plugin

Reconciles a normalized rent roll against a normalized T-12 on a stated, consistent basis (annualized contractual vs recognized accrual; collected cash out of scope) and never forces a tie. Reconciles base rent, recoveries and other income (jointly, per the canonical chart), occupancy, and the EGI / NOI-revenue bridge; classifies each gap as mapping, timing, or missing on a deterministic signature; surfaces residual_unexplained; and routes every untied dimension to human review. Triggers on 'tie out the rent roll to the T-12', 'reconcile contractual rent to actuals', 'NOI bridge from the rent roll', or 'revenue leakage check'.

rent-roll-formatter

6
from mariourquia/cre-skills-plugin

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).

rent-optimization-planner

6
from mariourquia/cre-skills-plugin

Quantitative rent optimization framework with loss-to-lease waterfall analysis, renewal probability modeling, effective rent NPV comparison across aggressive/moderate/retention strategies, valuation impact quantification, and market cycle overlay. Maximizes long-term property value, not just next-quarter revenue. Triggers on 'rent raise plan', 'rent optimization', 'loss-to-lease', 'renewal pricing', or when planning rent increases across a portfolio.

refi-decision-analyzer

6
from mariourquia/cre-skills-plugin

Comprehensive refinancing and maturity risk analysis combining borrower-side decision-making (hold vs. refi vs. sell vs. extend vs. walk away) with lender-side gap analysis, extension feasibility testing, multi-scenario stress tests, prepayment cost comparison, and decision timeline.

property-tax-appeal-analyzer

6
from mariourquia/cre-skills-plugin

Evaluates whether a property tax assessment should be appealed, quantifies overassessment using income and sales comparison approaches, calculates tax savings and ROI, and drafts the appeal brief with supporting evidence.

pca-reserve-analyzer

6
from mariourquia/cre-skills-plugin

Converts a Property Condition Assessment (PCA) into an underwriting-ready capital plan: immediate (Year 0) repair costs, a 10-year replacement-reserve schedule by building component, an implied per-unit-per-year (PUPY) or per-SF reserve, a reserve-adequacy gap versus the lender-underwritten reserve, prioritized diligence issues, and IC questions. Triggers on 'PCA', 'property condition assessment', 'replacement reserve', 'reserve adequacy', 'PNA', or when a property condition report needs to be turned into capital numbers.

lease-trade-out-analyzer

6
from mariourquia/cre-skills-plugin

Analyzes whether to renew an existing tenant or trade out for a new one with full financial comparison. Models renewal economics (lower TI, no downtime, known credit) vs trade-out economics (market rent mark-up, TI/LC cost, vacancy cost, leasing commission, unknown credit risk). Produces NPV comparison with breakeven analysis.

lease-negotiation-analyzer

6
from mariourquia/cre-skills-plugin

Consolidates 8 complex lease negotiation scenarios into a single skill with scenario selector: (a) anchor replacement with co-tenancy cascade, (b) trophy tower backfill, (c) naming rights valuation, (d) life science TI amortization, (e) sublease consent with recapture NPV, (f) exclusive use violation, (g) specialty conversion IRR crossover, (h) ground lease improvements. Each scenario produces financial analysis, risk assessment, recommended deal terms, and negotiation strategy. Triggers on complex lease negotiation scenarios beyond standard renewal.

land-residual-hbu-analyzer

6
from mariourquia/cre-skills-plugin

Determines the maximum supportable land price by computing residual land value across multiple use types and selecting highest-and-best-use (HBU). Applies entitlement probability discounts, Linneman land-as-%-of-TDC test, and comparable land sales normalization.