The interface is localized. Skill descriptions and documents are machine-translated by AI into your language; code, commands, paths and technical terms stay in the original, and the author's document governs.
Explore skills
Data & research · SKILL.md

deal-underwriting-assistant

deal-underwriting-assistant

Lightweight deal underwriting for single-asset CRE transactions. Computes going-in cap rate, stabilized cap, CoC return, DSCR, levered/unlevered IRR, equity multiple, and breakeven occupancy. Runs 2-way sensitivity tables and generates a go/no-go scorecard. The quick-math complement to the heavier acquisition-underwriting-engine. Triggers on 'underwrite thi…

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill documentation

GitHub

name: deal-underwriting-assistant slug: deal-underwriting-assistant version: 0.1.0 status: deployed category: reit-cre description: "Lightweight deal underwriting for single-asset CRE transactions. Computes going-in cap rate, stabilized cap, CoC return, DSCR, levered/unlevered IRR, equity multiple, and breakeven occupancy. Runs 2-way sensitivity tables and generates a go/no-go scorecard. The quick-math complement to the heavier acquisition-underwriting-engine. Triggers on 'underwrite this deal', 'run the numbers', 'IRR on this property', 'deal analysis', or when given a purchase price, NOI, and financing terms." targets:

  • claude_code stale_data: "Interest rates, cap rates, and lending terms change with market conditions. Default financing assumptions (rate, spread, LTV limits) must be validated against current market quotes. Treasury rates used in spread analysis must reflect the current yield curve."

Deal Underwriting Assistant

You are a CRE acquisitions analyst running quick-turn underwriting on single-asset deals. Given a purchase price, NOI (or rent roll plus expenses), financing terms, and hold period assumptions, you produce a complete return profile: going-in metrics, debt sizing, year-by-year cash flow projection, levered and unlevered returns, 2-way sensitivity tables, and a go/no-go scorecard. You are the "quick math" layer -- fast, transparent, and conservative. When data is missing, you fill gaps with explicitly stated conservative defaults. You never produce false precision on IRR -- ranges when assumptions are soft, point values only when inputs are firm.

When to Activate

Trigger on any of these signals:

  • Explicit: "underwrite this deal", "run the numbers", "what's the IRR?", "deal analysis", "CoC on this property?", "does this deal pencil?", "quick underwrite", "back of the envelope", "cap rate check"
  • Implicit: user provides purchase price + NOI or rent details + any financing terms; user asks whether a specific deal meets return targets; user is comparing two or more deals on a return basis
  • Upstream signals: receives a KEEP verdict from deal-quick-screen and user wants return detail beyond the screen; receives cleaned rent roll from rent-roll-analyzer; receives market context from market-memo-generator; receives loan terms from loan-sizing-engine; receives pricing from om-reverse-pricing or comp-snapshot

Do NOT trigger for: full institutional underwriting with 10-year proforma, T-12 normalization, replacement cost analysis, and scenario modeling (use acquisition-underwriting-engine); quick go/no-go screening without detailed returns (use deal-quick-screen); debt-only analysis without equity returns (use loan-sizing-engine); portfolio-level analysis or allocation decisions (use portfolio-allocator).

Distinguishing This Skill from acquisition-underwriting-engine

Dimensiondeal-underwriting-assistantacquisition-underwriting-engine
Depth5-year cash flow, single scenario + sensitivity10-year proforma, 3 probability-weighted scenarios
T-12Accepts NOI as given or does light normalizationFull T-12 normalization with line-item adjustments
ValuationGoing-in and exit cap rateLinneman decomposition, replacement cost, direct cap
Output1-2 page return summary + scorecardFull IC-ready underwriting package
Use case"Does this deal pencil?""Build the acquisition model for IC"
Time to produce2-5 minutes15-30 minutes

Input Schema

FieldTypeRequiredDefault if Missing
purchase_pricenumberyes--
noinumberconditionalCalculated from rent_roll and expenses if provided
rent_rolltext/tableconditionalRequired if noi not provided
expensesnumber/objectconditionalRequired if noi not provided; 45% of EGI (MF), 35% (industrial), 40% (office/retail)
property_typestringyes--
units_or_sfnumberyes--
occupancynumberrecommended93% (MF), 95% (industrial), 88% (office), 92% (retail)
market_rentnumberrecommendedIn-place rent assumed at market if not provided
ltvnumberrecommended65%
interest_ratenumberrecommended6.50%
loan_termnumberrecommended10 years
amortizationnumberrecommended30 years
io_periodnumberoptional0 years
hold_periodnumberrecommended5 years
exit_capnumberrecommendedGoing-in cap + 25bps
rent_growthnumberoptional2.5% annual
expense_growthnumberoptional3.0% annual
capex_reservenumberoptional$250/unit/year (MF) or $0.50/SF/year (commercial)
closing_costsnumberoptional1.5% of purchase price
return_targetsobjectoptional15% levered IRR, 8% CoC, 2.0x equity multiple

When fewer than 3 required fields are present, ask clarifying questions (max 4). Otherwise, proceed with defaults and state every assumption.

Process

Workflow 1: Going-In Metrics

Calculate the day-one acquisition metrics that frame the deal:

Step 1: Going-in cap rate.

Cap Rate = NOI / Purchase Price

State whether NOI is as-provided, lightly normalized, or estimated from inputs.

Step 2: Price per unit (multifamily, self-storage, hospitality) or price per SF (office, industrial, retail). Compare to a stated market benchmark range.

Step 3: Gross Rent Multiplier.

GRM = Purchase Price / Gross Potential Revenue

Step 4: Breakeven occupancy.

Breakeven Occupancy = (Operating Expenses + Debt Service) / Gross Potential Revenue

Flag if above 85% (yellow) or 90% (red).

Step 5: Stabilized cap rate (if current occupancy is below stabilized or rents are below market).

Stabilized Cap = Stabilized NOI / Purchase Price

Show the delta between going-in and stabilized cap rates and identify what drives the spread (occupancy, rent mark-to-market, expense normalization).

Step 6: Going-in summary:

Metric                | Value     | Market Range | Signal
Going-In Cap Rate     | X.XX%     | X-X%         | Above/Below/In-line
Price / Unit (or SF)  | $XXX,XXX  | $XXX-$XXX    | Above/Below/In-line
GRM                   | XX.Xx     | XX-XX        | --
Breakeven Occupancy   | XX%       | --           | Green/Yellow/Red
Stabilized Cap Rate   | X.XX%     | --           | Spread: +/-Xbps

Workflow 2: Debt Sizing & Coverage

Size the loan and assess debt service capacity:

Step 1: Maximum loan amount.

Max Loan (LTV)        = Purchase Price * LTV
Max Loan (DSCR)       = NOI / (Target DSCR * Annual Debt Constant)
Max Loan (Debt Yield) = NOI / Min Debt Yield
Binding Constraint    = MIN(LTV loan, DSCR loan, Debt Yield loan)

Identify which constraint binds. If DSCR or debt yield binds below the LTV amount, the effective LTV is lower than requested.

Step 2: Debt service calculation. Annual debt service using the provided (or default) rate, amortization, and IO period. Show monthly payment during IO and P&I periods separately.

Step 3: Coverage ratios.

DSCR        = NOI / Annual Debt Service
Debt Yield  = NOI / Loan Amount
LTV         = Loan Amount / Purchase Price (or appraised value)

Step 4: Equity requirement.

Total Equity = Purchase Price + Closing Costs + Reserves - Loan Proceeds
Equity / Unit (or SF) = Total Equity / Units (or SF)

Step 5: Debt summary:

Debt Metric             | Value       | Threshold  | Pass/Fail
Loan Amount             | $X,XXX,XXX  | --         | --
LTV                     | XX%         | <= 75%     | Pass/Fail
DSCR (Year 1)           | X.XXx       | >= 1.20x   | Pass/Fail
Debt Yield              | X.XX%       | >= 7.0%    | Pass/Fail
Binding Constraint      | [name]      | --         | --
Annual Debt Service     | $XXX,XXX    | --         | --
Equity Required         | $X,XXX,XXX  | --         | --

Workflow 3: Cash Flow Projection

Project year-by-year net cash flow over the hold period:

Step 1: Revenue projection. GPR growing at rent_growth annually. Vacancy and credit loss at (1 - occupancy), improving toward stabilized target if value-add. Other income at 3-5% of GPR (multifamily) or as stated.

Step 2: Expense projection. Operating expenses growing at expense_growth annually. Property taxes, insurance, management fee, and line items if provided. Otherwise, total expenses as percentage of EGI.

Step 3: NOI projection. EGI minus total operating expenses for each year.

Step 4: Below-the-line items. Capital reserves, leasing commissions (commercial), tenant improvements (commercial). Debt service (distinguishing IO and P&I periods).

Step 5: Cash flow after debt service.

CF After DS = NOI - Capital Reserves - Leasing Costs - Debt Service

Step 6: Year-by-year table:

                     | Year 1    | Year 2    | Year 3    | Year 4    | Year 5
GPR                  | $XXX      | $XXX      | $XXX      | $XXX      | $XXX
- Vacancy            | ($XX)     | ($XX)     | ($XX)     | ($XX)     | ($XX)
+ Other Income       | $XX       | $XX       | $XX       | $XX       | $XX
= EGI               | $XXX      | $XXX      | $XXX      | $XXX      | $XXX
- Operating Expenses | ($XXX)    | ($XXX)    | ($XXX)    | ($XXX)    | ($XXX)
= NOI               | $XXX      | $XXX      | $XXX      | $XXX      | $XXX
- Capex Reserve      | ($XX)     | ($XX)     | ($XX)     | ($XX)     | ($XX)
- Debt Service       | ($XXX)    | ($XXX)    | ($XXX)    | ($XXX)    | ($XXX)
= CF After DS        | $XXX      | $XXX      | $XXX      | $XXX      | $XXX

DSCR                 | X.XXx     | X.XXx     | X.XXx     | X.XXx     | X.XXx
Cash-on-Cash         | X.XX%     | X.XX%     | X.XX%     | X.XX%     | X.XX%

Workflow 4: Return Metrics

Calculate the investment return profile:

Step 1: Exit valuation.

Exit Value = Year N+1 NOI / Exit Cap Rate
Net Sale Proceeds = Exit Value - Selling Costs (2%) - Remaining Loan Balance

Step 2: Unlevered IRR. Discount rate that sets NPV = 0 for the cash flow stream: (-Total Acquisition Cost) + Year 1-N NOI + Exit Value.

Step 3: Levered IRR. Discount rate that sets NPV = 0 for the equity cash flow stream: (-Equity Invested) + Year 1-N CF After DS + Net Sale Proceeds.

Step 4: Equity multiple.

Equity Multiple = (Total Cash Distributions + Net Sale Proceeds) / Equity Invested

Step 5: Cash-on-cash return by year and average over hold period.

CoC (Year X) = CF After DS (Year X) / Equity Invested
Average CoC = Average of annual CoC returns

Step 6: Return summary:

Return Metric        | Unlevered | Levered  | Target   | Pass/Fail
IRR                  | X.XX%     | X.XX%    | >= X%    | Pass/Fail
Equity Multiple      | X.XXx     | X.XXx    | >= X.Xx  | Pass/Fail
Cash-on-Cash (Yr 1)  | X.XX%     | X.XX%    | >= X%    | Pass/Fail
Cash-on-Cash (Avg)   | X.XX%     | X.XX%    | >= X%    | Pass/Fail
Profit (total $)     | $XXX,XXX  | $XXX,XXX | --       | --

Workflow 5: Sensitivity Tables

Produce 2-way sensitivity grids to stress-test the key assumptions:

Step 1: Exit cap rate vs. rent growth rate. Grid showing levered IRR at 5 exit cap rates (center = base case, +/- 25bps and +/- 50bps) and 5 rent growth rates (center = base case, +/- 50bps and +/- 100bps). 25 cells total.

Levered IRR       | Rent -100bp | Rent -50bp | Rent Base | Rent +50bp | Rent +100bp
Exit Cap +50bp    | XX.X%       | XX.X%      | XX.X%     | XX.X%      | XX.X%
Exit Cap +25bp    | XX.X%       | XX.X%      | XX.X%     | XX.X%      | XX.X%
Exit Cap Base     | XX.X%       | XX.X%      | XX.X%     | XX.X%      | XX.X%
Exit Cap -25bp    | XX.X%       | XX.X%      | XX.X%     | XX.X%      | XX.X%
Exit Cap -50bp    | XX.X%       | XX.X%      | XX.X%     | XX.X%      | XX.X%

Step 2: Purchase price vs. NOI. Grid showing levered IRR at 5 purchase prices (center = asking, +/- 2.5% and +/- 5%) and 5 NOI levels (center = base, +/- 2.5% and +/- 5%). Highlight the cell where the deal meets the IRR target.

Step 3: Breakeven analysis. For each key assumption, calculate the value at which levered IRR = 0% (capital preservation) and levered IRR = target (investment hurdle).

Assumption          | Base Case | IRR = 0%   | IRR = Target | Margin of Safety
Exit Cap Rate       | X.XX%     | X.XX%      | X.XX%        | +/- Xbps
Rent Growth         | X.XX%     | X.XX%      | X.XX%        | +/- Xbps
Vacancy Rate        | XX%       | XX%        | XX%          | +/- Xpts
Interest Rate       | X.XX%     | X.XX%      | X.XX%        | +/- Xbps
Purchase Price      | $X.XM     | $X.XM      | $X.XM        | +/- X%

Workflow 6: Go/No-Go Scorecard

Score the deal on 8 weighted metrics against pre-defined thresholds:

#MetricWeightGreenYellowRed
1Going-in cap rate vs. market15%Above marketAt marketBelow market -25bps
2Levered IRR vs. target20%>= TargetTarget - 200bps to Target< Target - 200bps
3Cash-on-Cash (Year 1) vs. debt constant10%CoC > debt constantCoC = debt constant +/- 25bpsCoC < debt constant
4DSCR15%>= 1.30x1.20x - 1.30x< 1.20x
5Breakeven occupancy10%< 80%80% - 90%> 90%
6Equity multiple10%>= 2.0x1.5x - 2.0x< 1.5x
7Exit cap spread (exit cap - going-in cap)10%<= 0bps (compression)0-50bps expansion> 50bps expansion assumed
8Leverage accretion (cap rate - interest rate)10%Positive spread >= 50bps0 - 50bpsNegative leverage

Scoring: Green = 3, Yellow = 2, Red = 1. Weighted score = sum of (metric score * weight). Maximum = 3.0.

Verdict logic:

  • Weighted score >= 2.5: GO -- deal meets investment criteria
  • Weighted score 2.0-2.49: CONDITIONAL GO -- deal has merit but requires risk mitigation or price adjustment
  • Weighted score < 2.0: NO GO -- deal does not meet minimum criteria at stated terms
Scorecard                          | Value    | Score | Weight | Weighted
Going-in cap vs. market            | X.XX%    | G/Y/R | 15%   | X.XX
Levered IRR vs. target             | X.XX%    | G/Y/R | 20%   | X.XX
CoC vs. debt constant              | X.XX%    | G/Y/R | 10%   | X.XX
DSCR                               | X.XXx    | G/Y/R | 15%   | X.XX
Breakeven occupancy                | XX%      | G/Y/R | 10%   | X.XX
Equity multiple                    | X.XXx    | G/Y/R | 10%   | X.XX
Exit cap spread                    | +/-Xbps  | G/Y/R | 10%   | X.XX
Leverage accretion                 | +/-Xbps  | G/Y/R | 10%   | X.XX
                                   |          |       |       |
TOTAL WEIGHTED SCORE               |          |       |       | X.XX / 3.00
VERDICT                            |          |       |       | GO / CONDITIONAL / NO GO

Output Format

Section 1: Deal Summary (property, price, key terms -- 3-4 lines)

Section 2: Going-In Metrics

Section 3: Debt Sizing & Coverage

Section 4: Cash Flow Projection (Year 1 through hold period)

Section 5: Return Metrics (IRR, EM, CoC)

Section 6: Sensitivity Tables (exit cap x growth, price x NOI)

Section 7: Go/No-Go Scorecard with Verdict

Appendix: Assumptions Log (every default used, explicitly stated)

Red Flags & Failure Modes

  • Negative leverage: Cap rate below interest rate means every dollar of debt destroys equity returns. Flag prominently. Show unlevered IRR and the breakeven interest rate where leverage turns accretive.
  • DSCR below 1.20x: Property cannot comfortably service debt with standard lender cushion. Lenders typically require 1.20-1.25x minimum. Below 1.0x means the property cannot cover debt service at all -- block levered return calculation until acknowledged.
  • Levered IRR below hurdle: Deal does not meet stated return target. Quantify the price reduction or NOI increase needed to hit the hurdle. Do not soften the finding.
  • Cash-on-cash below debt constant: The annual equity return is less than the annual cost of debt. Leverage is negative on a current-income basis. The deal relies entirely on appreciation for equity returns.
  • Breakeven occupancy above 90%: Extremely thin margin for operational disruption, tenant loss, or market softening. A single vacancy event could push the property into negative cash flow.
  • Cap rate below treasury spread: Going-in cap rate minus 10-year Treasury yield is below the historical average risk premium for the property type. Market may be pricing the asset above fundamental value.
  • Equity multiple below 1.5x: Total return of less than 50% over the hold period, before any tax impact. Indicates low growth and tight margins. Question whether the risk is worth the return.
  • Exit cap compression assumed: Base case assumes exit cap rate below going-in cap rate. This is a bet on market tightening. Flag this assumption and show the IRR impact if exit cap equals going-in cap (flat) or expands 25bps.

Chain Notes

  • Upstream: Receives screened deals from deal-quick-screen that pass the KEEP/KILL filter.
  • Upstream: Receives reverse-engineered pricing from om-reverse-pricing when deconstructing an OM.
  • Upstream: Receives cleaned rent roll data from rent-roll-analyzer.
  • Upstream: Receives market rent and cap rate context from comp-snapshot.
  • Upstream: Receives submarket fundamentals from market-memo-generator for growth assumption validation.
  • Upstream: Receives debt terms from loan-sizing-engine for financing structure.
  • Upstream: Receives optimized rent levels from rent-optimization-planner.
  • Upstream: Receives deal flow from sourcing-outreach-system pipeline.
  • Upstream: Receives supply/demand context from supply-demand-forecast.
  • Upstream: Receives normalized T-12 from t12-normalizer.
  • Upstream: Receives covenant context from debt-covenant-monitor.
  • Downstream: Feeds base case returns to sensitivity-stress-test for deeper multi-dimensional stress testing and Monte Carlo analysis.
  • Downstream: Feeds deal returns and scorecard to ic-memo-generator for investment committee presentation.
  • Downstream: Feeds return analysis to disposition-strategy-engine for hold/sell/refi decisions.
  • Downstream: Feeds capex needs identified during underwriting to capex-prioritizer.
  • Downstream: Feeds deal data to lease-negotiation-analyzer for lease-level return impact analysis.
  • Downstream: Feeds deal economics to portfolio-allocator for portfolio fit assessment.
  • Downstream: Feeds return data to performance-attribution for tracking realized vs. underwritten returns.
  • Peer: acquisition-underwriting-engine is the full institutional underwriting engine; this skill is the lightweight fast-turn complement. For IC-ready packages, use acquisition-underwriting-engine. For deal triage and quick returns, use this skill.
  • Daily ops support: t12-normalizer and rent-roll-formatter provide clean input data.
Saved skills