---
name: "real_estate_investment_analyzer"
description: "Underwrite rental property deals: NOI, cap rate, cash-on-cash return, DSCR, GRM, scenario modeling across financing options, and red-flag checks, with a ready-to-run Python underwriter CLI. Triggers on rental deal analysis, 'is this property a good investment', cash flow modeling, or cap rate questions."
---

# Real Estate Investment Analyzer

## Purpose

Turn a rental property listing into a defensible yes/no: compute NOI, cap rate,
cash-on-cash return, DSCR, GRM, and the 1% rule from a handful of inputs; model
multiple financing scenarios side by side; and surface the red flags that kill
deals. It never invents numbers: every output traces back to stated inputs, and
missing inputs are flagged, not guessed.

## Workflow

1. **Collect the inputs.** Purchase price, monthly rent, vacancy assumption,
   annual operating expenses (tax, insurance, HOA, management, maintenance,
   CapEx, other), and financing terms (down payment, rate, term, closing costs,
   initial repairs). If the user is short on expense detail, use the reference
   budgeting rules (references/formulas.md) and mark each as an assumption.
2. **Run the underwriter.** `python3 bin/underwrite.py <deal.json>` reads a deal
   file (schema in references/deal-schema.md, sample at assets/sample-deal.json)
   and prints a full worksheet to stdout. Add `--scenario` with extra financing
   scenarios to compare side by side, or `--markdown report.md` for a file.
3. **Read the truth metrics first.** NOI, cap rate, cash-on-cash, DSCR, GRM,
   in that order. Gross rent and appreciation are context, not the verdict.
4. **Stress the deal.** Rerun with a vacancy shock (vacancy up 5 points) and a
   rate shock (rate up 1.5 points on an adjustable/renewal assumption, or just
   to see sensitivity). If it breaks under both, say so.
5. **Call the flags.** The CLI flags: cap rate above 12% (risk premium zone),
   GRM above 15, DSCR below 1.0 (below 1.25 = below typical lender bar),
   negative cash flow, break-even occupancy above 90%, missing management or
   CapEx budget, zero reserves at closing.
6. **Deliver the worksheet.** The Output Contract report, with assumptions
   labeled separately from seller claims.

## Output Contract

Every analysis returns:

- **Inputs ledger**: every number used, marked as seller-provided, user-provided,
  or assumption.
- **Truth metrics**: NOI, cap rate, annual cash flow, cash-on-cash return, DSCR,
  GRM, 1% rule pass/fail.
- **Scenario table** (when multiple financings): each scenario's monthly payment,
  cash invested, cash flow, cash-on-cash, DSCR.
- **Red flags**: each triggered flag with the number behind it and why it matters.
- **Verdict**: PASS / WATCH / FAIL with one sentence of reasoning. No deal is
  "a great investment" on appreciation hope alone; say when the math needs a
  story.

## Operating Rules

1. Never fill in missing expense or rent figures with confident-sounding
   defaults. If the user cannot supply them, use the reference budgeting rules
   and label every one as an assumption in the inputs ledger.
2. Compute NOI without debt service, depreciation, or income taxes. Those live
   in the cash-flow and total-return lines, never in NOI.
3. Report cash-on-cash on total cash invested (down payment + closing costs +
   initial repairs), never on down payment alone.
4. Treat rules of thumb as filters, not verdicts: the 1% rule and GRM screen
   deals in; only the truth metrics screen them out.
5. A deal that passes only with optimistic assumptions (below-market vacancy,
   no management fee, zero CapEx) fails the WATCH test: show the user what the
   base case looks like with standard budgets.
6. This skill is analysis, not advice: it does not recommend buying, does not
   predict market movement, and never represents seller projections as verified
   fact.
