A rent roll becomes occupancy, economic occupancy, gross potential rent, loss-to-lease, vacancy loss, delinquency and a unit-mix table.
Who it is for: Small multifamily investor, property manager or analyst who receives a rent roll export and must summarise it for underwriting, a lender or an owner report.
Format: Claude skill pack · Version: 1.0.0 · Tested on: Python 3.13.5 (standard library only)
What it does
It finds the header in most rent roll exports and reads one row per unit. Status decides occupied, notice, vacant or non-revenue (models, down units); with no status, a unit without a tenant is vacant. A unit listed twice counts once. Gross potential rent is market rent on revenue units; loss-to-lease is market minus current rent on occupied units; vacancy loss is market rent on vacant units; economic occupancy is actual rent over gross potential rent. Units with a balance are listed as delinquent.
What you need
- Claude.ai with code execution switched on (or Claude Code, or just Python 3.10+)
- Your rent roll exported as CSV or Excel
5-minute setup
- Claude.ai: open Settings → Capabilities → Skills, click Upload skill and pick
claude-ai-upload/rent-roll-analyzer.zip. - Claude Code: copy the folder
skills/rent-roll-analyzerinto~/.claude/skills/. - Start a new chat. Attach your file and say: "Use rent-roll-analyzer. What are the occupancy, loss-to-lease and delinquency in this rent roll?".
- Claude runs the script and gives you the files listed under Outputs. Check them before you act on them.
Try it with the sample
Run the sample (a fictional 8-unit rent roll):
python3 skills/rent-roll-analyzer/scripts/core.py samples/rent-roll-2026-11.csv --as-of 2026-11-01 --out out
You should see 85.7% physical and 82.8% economic occupancy, gross potential rent 11,150.00, loss-to-lease 470.00, vacancy loss 1,450.00 and 2 delinquent units owing 2,075.00.
Settings you can change
| Option | Default | What it is |
|---|---|---|
rentroll |
(required) |
Rent roll CSV or XLSX, one row per unit, one property |
--as-of |
today |
Date the rent roll is as of |
--us-dates |
off |
Read 03/04/2026 as March 4 |
--out |
out |
Output folder |
What goes in and what comes out
Inputs: Rent roll CSV or XLSX for one property; Optional: as-of date
Outputs: report.md with the summary; unit-mix.csv; delinquent.csv; row-issues.csv
What Pro adds
- 12-month lease expiry ladder with a chart
- Month-to-month leases and mark-to-market upside
- Below-market units and rent per sq ft
- Several properties in one run
Pro: https://oarsmanai.com/agents/rent-roll-analyzer-pro/
AI disclosure and limits
This product does not call an AI model at run time. It was built by Oarsman AI's AI agents and checked by the automated tests shipped with it.
Limits: - One property per run. - One row per unit; rolls that list each charge on its own line need combining first. - Figures come only from the rent roll; not investment advice.
Not tested by us: - rent rolls with several lines per unit (charges listed separately) - XLSX files in the shipped tests (CSV only) - commercial rent rolls with CAM or percentage rent
Files
- oarsman-rent-roll-analyzer-v1.0.0.zip
- CHANGELOG.md
- QA-REPORT.json
- README.md
- SPEC.md
- SUPPORT.md
- TROUBLESHOOTING.md
- VERSION
- VIDEO-SCRIPT.md
- claude-ai-upload
- diagram.mmd
- diagram.png
- preview.png
- samples
- skills
- tests
Help
Self-serve: see TROUBLESHOOTING.md (fixes and FAQ). There is no call, chat or email support. Fixes ship as new versions at your download link. Refund: 14 days, works as described, through the checkout platform.