executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
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 flow needing triage.
Independent GitHub snapshot · Automated classification · Original documentation governs
name: deal-quick-screen slug: deal-quick-screen version: 0.1.0 status: deployed category: reit-cre description: "Fast 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 flow needing triage." targets:
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.
User provides any combination of the following. The skill fills gaps with conservative defaults.
| Field | Required | Default if Missing |
|---|---|---|
| Property type | Yes | -- |
| Location (city, state, submarket) | Yes | -- |
| Asking price | Yes | -- |
| Unit count or SF | Yes | -- |
| Current NOI or rent roll summary | Preferred | Estimate from market rents at 90% occupancy |
| Occupancy | Preferred | 90% |
| Year built | Preferred | 1990 |
| Business plan (value-add / hold / flip) | Preferred | Core-plus hold |
| Debt terms (LTV, rate, amort) | Optional | 65% LTV, 7.0% rate, 30-yr amort |
| Hold period | Optional | 5 years |
| Target IRR | Optional | 15% levered |
| Expense ratio or per-unit expenses | Optional | 45% of EGI (multifamily), 35% (industrial) |
| Capex budget or condition notes | Optional | $1,500/unit/year reserve |
| Broker notes or OM link | Optional | -- |
| deal_scale | string | optional |
If fewer than 3 of the 4 required fields are present, ask clarifying questions (max 5). Otherwise, proceed with defaults.
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.
Price / Unit (or /SF) = asking_price / units_or_sf
Going-in Cap Rate = NOI / asking_price
If NOI is not provided, estimate:
GPR = market_rent_estimate * units * 12
EGI = GPR * (1 - vacancy_rate)
OpEx = EGI * opex_ratio
NOI = EGI - OpEx
Loan Amount = asking_price * LTV
Monthly Rate = annual_rate / 12
Monthly Payment = Loan * [r(1+r)^n] / [(1+r)^n - 1] (n = amort_years * 12)
Annual Debt Service = Monthly Payment * 12
DSCR = NOI / Annual Debt Service
Max Loan at 1.25x DSCR = NOI / 1.25 / (annual_constant)
Implied LTV at Max Loan = Max Loan / asking_price
Estimate replacement cost per unit or per SF for the property type and market:
Compare: Ask vs. Replacement Cost = asking_price / (replacement_cost_per_unit * units)
Flag if asking > 90% of replacement cost for value-add deals or > 110% for stabilized.
Equity = asking_price * (1 - LTV) + closing_costs
Year 1 Cash Flow = NOI - Annual Debt Service
Cash-on-Cash = Year 1 Cash Flow / Equity
Spread = cap_rate - interest_rate (positive = positive leverage)
Estimate IRR range under three scenarios:
When deal_scale is "small-operator" OR purchase_price < $5,000,000:
Adjusted Defaults:
Additional Metrics for Small Deals:
Adjusted Red Flags:
Target 400-600 words. Single-page, skimmable.
| Metric | Value |
|---|---|
| Asking Price | $ |
| Price / Unit (or /SF) | $ |
| Going-In Cap Rate | % |
| Year 1 NOI | $ |
| Year 1 Cash-on-Cash | % |
| DSCR at Market Rates | x |
| Max Loan at 1.25x DSCR | $ |
| Implied LTV at Max Loan | % |
| Replacement Cost / Unit | $ |
| Ask vs. Replacement Cost | % |
| Unlevered IRR (est.) | % range |
| Levered IRR (est.) | % range |
Numbered list. Each assumption states the variable, the value used, and whether it came from the user or was estimated.
Two columns, 3 bullets each. Concrete and specific to this deal, not generic.
2-3 sentence comparison of asking price/unit against recent submarket comps. State whether asking price is above, at, or below recent comps.
| Item | Why It Matters | Assumption Used |
|---|
10 items, ordered by priority, specific to this deal.
acquisition-underwriting-engine for full underwriting.om-reverse-pricing in parallel for pricing validation.This skill can use the following scripts for precise calculations:
scripts/calculators/quick_screen.py -- back-of-napkin deal screening with KEEP/KILL verdict, cap rate, DSCR, cash-on-cash, replacement cost ratio, and 3-scenario IRR
python3 scripts/calculators/quick_screen.py --json '{"purchase_price": 8500000, "noi": 510000, "units_or_sf": 48, "unit_type": "units", "market_rent_per_unit": 1350, "in_place_rent_per_unit": 1100, "loan_amount": 5525000, "rate": 0.065, "amort_years": 30, "replacement_cost_estimate": 10500000}'