1 · Rent roll (paste from Excel or CSV)
Columns detected by header: unit, type/BR, status, rent, and square feet if present. Tab, comma, or pipe separated. Rows that fail to parse are counted, not silently dropped.
2 · Assumptions (editable, prefilled with defaults)
The read
Dual-scenario NOI · A as presented, B adjusted
Same method my Claude Code underwriting agents run: conclusions key off Scenario B.
Valuation and supportable debt (Scenario B)
Sensitivity · value at cap rate x vacancy
Data red flags
About this prototype
Fully client-side by design: paste anything, nothing is transmitted, stored, or logged. This is the first-pass layer; the production version grounds the same method in Yardi and RealPage data through governed connectors, with the full deliverable set (feasibility, counter-offer tiers, structure comparisons, loan packages) produced by the Claude Code agent suite my underwriting practice runs on.
- MethodScenario A prices the roll as presented. Scenario B re-rents every unit to market, applies economic vacancy, normalizes management and reserves, and takes the larger of stated and benchmark expenses. Value and debt conclusions key off B.
- Debt sizingSupportable loan is the lesser of the LTV constraint and the DSCR constraint at a 30-year amortization; the output names which one binds.
- Portfolio SentinelCompanion tool: portfolio-wide data validation (rent roll integrity, hotel ops consistency, T-12 completeness) with human-in-the-loop exceptions.
- russh.workSix production AI systems, built and operated end to end.
Built as a single deployable file by Russell Harris · russh.work · [email protected] · 302-824-0225