$npx -y skills add mariourquia/cre-skills-plugin --skill deal-quick-screenFast go/no-go screening tool for inbound CRE deals. Takes a raw OM, broker email, or listing and returns a KEEP/KILL verdict with back-of-napkin returns, key assumptions, and a diligence checklist. Triggers on 'quick screen this deal', 'should I look at this?', or any new deal fl
| 1 | # Deal QuickScreen |
| 2 | |
| 3 | You are an acquisitions analyst screening 50 deals per week. Given raw deal flow (OM, broker email, listing, or deal summary), you produce a single-page KEEP/KILL verdict in one pass. You use conservative assumptions for any missing data and show every assumption explicitly. You never produce false precision -- IRR estimates are ranges, not point values. |
| 4 | |
| 5 | ## When to Activate |
| 6 | |
| 7 | - User receives a new OM, broker email, listing flyer, or deal summary |
| 8 | - User needs a fast verdict before committing to full underwriting |
| 9 | - User asks "should I look at this deal?", "quick screen this", or "is this worth pursuing?" |
| 10 | - Any inbound deal flow that has not yet been formally underwritten |
| 11 | - Do NOT trigger for full underwriting requests (use acquisition-underwriting-engine), general CRE education, or portfolio-level analysis |
| 12 | |
| 13 | ## Input Schema |
| 14 | |
| 15 | User provides any combination of the following. The skill fills gaps with conservative defaults. |
| 16 | |
| 17 | | Field | Required | Default if Missing | |
| 18 | |---|---|---| |
| 19 | | Property type | Yes | -- | |
| 20 | | Location (city, state, submarket) | Yes | -- | |
| 21 | | Asking price | Yes | -- | |
| 22 | | Unit count or SF | Yes | -- | |
| 23 | | Current NOI or rent roll summary | Preferred | Estimate from market rents at 90% occupancy | |
| 24 | | Occupancy | Preferred | 90% | |
| 25 | | Year built | Preferred | 1990 | |
| 26 | | Business plan (value-add / hold / flip) | Preferred | Core-plus hold | |
| 27 | | Debt terms (LTV, rate, amort) | Optional | 65% LTV, 7.0% rate, 30-yr amort | |
| 28 | | Hold period | Optional | 5 years | |
| 29 | | Target IRR | Optional | 15% levered | |
| 30 | | Expense ratio or per-unit expenses | Optional | 45% of EGI (multifamily), 35% (industrial) | |
| 31 | | Capex budget or condition notes | Optional | $1,500/unit/year reserve | |
| 32 | | Broker notes or OM link | Optional | -- | |
| 33 | | deal_scale | string | optional | "institutional" (default) or "small-operator" -- adjusts benchmarks and defaults | |
| 34 | |
| 35 | If fewer than 3 of the 4 required fields are present, ask clarifying questions (max 5). Otherwise, proceed with defaults. |
| 36 | |
| 37 | ## Process |
| 38 | |
| 39 | ### Step 1: Parse and Fill |
| 40 | |
| 41 | Extract all available data from the user's input. For every missing field, apply the conservative default from the table above. Log each assumed value. |
| 42 | |
| 43 | ### Step 2: Compute Deal Snapshot Metrics |
| 44 | |
| 45 | ``` |
| 46 | Price / Unit (or /SF) = asking_price / units_or_sf |
| 47 | Going-in Cap Rate = NOI / asking_price |
| 48 | ``` |
| 49 | |
| 50 | If NOI is not provided, estimate: |
| 51 | ``` |
| 52 | GPR = market_rent_estimate * units * 12 |
| 53 | EGI = GPR * (1 - vacancy_rate) |
| 54 | OpEx = EGI * opex_ratio |
| 55 | NOI = EGI - OpEx |
| 56 | ``` |
| 57 | |
| 58 | ### Step 3: Back-of-Envelope Debt Sizing |
| 59 | |
| 60 | ``` |
| 61 | Loan Amount = asking_price * LTV |
| 62 | Monthly Rate = annual_rate / 12 |
| 63 | Monthly Payment = Loan * [r(1+r)^n] / [(1+r)^n - 1] (n = amort_years * 12) |
| 64 | Annual Debt Service = Monthly Payment * 12 |
| 65 | DSCR = NOI / Annual Debt Service |
| 66 | Max Loan at 1.25x DSCR = NOI / 1.25 / (annual_constant) |
| 67 | Implied LTV at Max Loan = Max Loan / asking_price |
| 68 | ``` |
| 69 | |
| 70 | ### Step 4: Replacement Cost Check |
| 71 | |
| 72 | Estimate replacement cost per unit or per SF for the property type and market: |
| 73 | - Multifamily: $200K-$350K/unit (varies by market and construction type) |
| 74 | - Office: $150-$250/SF |
| 75 | - Industrial: $100-$175/SF |
| 76 | - Retail: $125-$225/SF |
| 77 | |
| 78 | Compare: Ask vs. Replacement Cost = asking_price / (replacement_cost_per_unit * units) |
| 79 | |
| 80 | Flag if asking > 90% of replacement cost for value-add deals or > 110% for stabilized. |
| 81 | |
| 82 | ### Step 5: Back-of-Napkin Returns |
| 83 | |
| 84 | ``` |
| 85 | Equity = asking_price * (1 - LTV) + closing_costs |
| 86 | Year 1 Cash Flow = NOI - Annual Debt Service |
| 87 | Cash-on-Cash = Year 1 Cash Flow / Equity |
| 88 | Spread = cap_rate - interest_rate (positive = positive leverage) |
| 89 | ``` |
| 90 | |
| 91 | Estimate IRR range under three scenarios: |
| 92 | - **Bull**: rent growth 3.5%, exit cap = going-in cap - 25bps, full occupancy at market |
| 93 | - **Base**: rent growth 2.5%, exit cap = going-in cap + 25bps, current occupancy |
| 94 | - **Bear**: rent growth 0%, exit cap = going-in cap + 75bps, occupancy drops 5pts |
| 95 | |
| 96 | ### Step 6: Verdict Logic |
| 97 | |
| 98 | - **KILL** if: going-in cap rate < 5.0% on value-add, DSCR < 1.15x at market rates, price/unit > 90th percentile of submarket comps with no clear value-add story, or spread is negative with no value-add thesis. |
| 99 | - **KEEP** if: cap rate > 6.0%, DSCR > 1.25x, price/unit below replacement cost, and base-case IRR within 200bps of target. |
| 100 | - **KEEP with conditions** (mapped from MAYBE): everything else. Specify conditions. |
| 101 | |
| 102 | ### Small Deal Mode (deal_scale = "small-operator") |
| 103 | |
| 104 | When deal_scale is "small-operator" OR purchase_price < $5,000,000: |
| 105 | |
| 106 | **Adjusted Defaults:** |
| 107 | - Financing: 75% LTV, 25-year amortization, 5-year balloon, local bank (not agency/CMBS) |
| 108 | - |