---
name: "real_estate_analyzer"
description: "Analyze a rental property deal: run cap rate, cash-on-cash return, DSCR, and quick screens (1% rule, 50% rule, GRM), rebuild honest expense line items, flag expense traps, and render a pass/consider/pursue verdict. Use when evaluating a rental listing, underwriting a purchase, comparing deals, or stress-testing an existing property."
---

# Real Estate Analyzer

## Purpose
Turn a listing plus a few facts into an honest go/no-go verdict on a rental property in one pass. The skill screens fast with rules of thumb, then underwrites with real line items, because seller pro formas are almost always optimistic. For the full expense line-item checklist and trap list, see `references/expense_traps.md`. For a worked example, see `references/worked_example.md`.

## Workflow

1. **Gather inputs.** You need, at minimum: purchase price (or asking), gross monthly rent (market rent, not just the sitting tenant's), unit count, and location. For full underwriting also: property tax bill, insurance quote, management rate, HOA dues, who pays utilities, age/condition notes, and financing terms (rate, down payment, closing costs).
2. **Quick screens (60 seconds).** Compute all three; none of them is a verdict alone:
   - **1% rule:** monthly gross rent / purchase price >= 0.01.
   - **50% rule:** estimated cash flow = (annual gross rent x 0.5) - annual mortgage P&I. Positive is a green flag.
   - **GRM** = price / annual gross rent. <= 10 is strong, 10-15 typical, > 15 rich.
3. **Rebuild the expense line items.** Start from market rent, subtract vacancy allowance (default 8%), then subtract operating expenses. Never accept the seller's expense total at face value. Default reserve rates when the user has no local data: maintenance 8%, CapEx 8%, management 10% (even if they plan to self-manage; their time is not free). See `references/expense_traps.md` for the full checklist and the traps that kill deals (HOA special assessments, tax reassessment at sale, flood-zone insurance, turnover costs).
4. **Run the CLI.** `bin/deal.py` takes the inputs and prints NOI, cap rate, cash-on-cash, DSCR, and the quick screens, plus a stress test (income -10%, expenses +15% simultaneously). Feed it a JSON file to keep the record:
   ```
   python3 ~/workspace/skills/real_estate_analyzer/bin/deal.py deal.json
   ```
   Input format is documented at the top of `deal.py`.
5. **Verdict.** Use these thresholds, adjusted for the user's stated risk tolerance:
   - **PURSUE:** cash-on-cash >= 8%, cash flow >= $100/door/month, DSCR >= 1.25, survives stress test.
   - **CONSIDER:** cash-on-cash 6-8%, marginal cash flow, or price negotiation could flip it.
   - **PASS:** cash-on-cash < 6%, negative cash flow, DSCR < 1.0, or fails the stress test.
   State the limiting factor in plain language ("the deal dies on the HOA dues, not the mortgage").

## Output Contract
A deal analysis report with:
- Inputs used (with sources: listing, quote, assumption).
- Quick screens (1% rule, 50% rule, GRM) with pass/fail.
- Full expense build: line items, reserve rates applied, which figures are quoted vs estimated.
- Metrics: NOI, cap rate, pre-tax cash flow, cash-on-cash return, DSCR.
- Stress-test result.
- Verdict (PURSUE / CONSIDER / PASS) with the single biggest limiting factor.
- Open questions: the 3 facts that would most change the answer (usually: real tax bill, insurance quote, actual market rent).

## Operating Rules
1. **Every number gets a source or an "assumed" flag.** Assumed figures use the default reserve rates above. Never present an assumption as a fact.
2. **Cap rate excludes financing.** No mortgage in NOI, ever. Cash-on-cash is where leverage lives.
3. **Always price management**, even for self-managers. 10% of gross rent.
4. **Always run the stress test.** A deal that only works in the base case is not a deal.
5. **Flag expense traps explicitly** from `references/expense_traps.md` when the listing hints at them (old build year, HOA, flood zone, below-market sitting rent, new construction premium).
6. **Rules of thumb screen, line items decide.** If a quick screen fails but the line items pass, the line items win (with the screen result noted).
7. **No fabricated comparables.** If asked about market rent or local cap rates, research them or say so; never invent a comp set.
