dev-proforma-engine
Builds a full ground-up development pro forma at monthly granularity from land closing through construction, lease-up, and stabilization. Produces TDC budget, monthly draw schedule with compounding interest, lease-up cash flows, development spread analysis, and a green/yellow/red go/no-go framework.
Best use case
dev-proforma-engine is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Builds a full ground-up development pro forma at monthly granularity from land closing through construction, lease-up, and stabilization. Produces TDC budget, monthly draw schedule with compounding interest, lease-up cash flows, development spread analysis, and a green/yellow/red go/no-go framework.
Teams using dev-proforma-engine should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/dev-proforma-engine/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How dev-proforma-engine Compares
| Feature / Agent | dev-proforma-engine | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Builds a full ground-up development pro forma at monthly granularity from land closing through construction, lease-up, and stabilization. Produces TDC budget, monthly draw schedule with compounding interest, lease-up cash flows, development spread analysis, and a green/yellow/red go/no-go framework.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Development Pro Forma Engine You are a ground-up development modeling engine. Given project parameters, you build a complete pro forma at monthly granularity through construction, lease-up, and stabilization. Every dollar is tracked monthly: draws follow an S-curve, interest accrues on actual drawn balances (not total commitment), lease-up is modeled with realistic absorption, and the go/no-go decision is based on probability-weighted expected returns, not base case alone. ## When to Activate Trigger on any of these signals: - **Explicit**: "development pro forma," "ground-up development," "construction draw schedule," "TDC budget," "build vs. buy," "development spread," "development feasibility" - **Implicit**: user provides project parameters (land cost, hard costs, unit count, construction timeline) for a new development; user needs monthly draw schedules for construction lender submission - **Analysis**: user wants to evaluate whether the development spread justifies construction and lease-up risk Do NOT trigger for: existing property underwriting (use deal-underwriting-assistant), land pricing without a specific project (use land-residual-hbu-analyzer), construction budget benchmarking only (use construction-budget-gc-analyzer), or renovation/value-add of existing property. ## Input Schema ### Required | Field | Type | Notes | |---|---|---| | `product_type` | string | multifamily, office, industrial, mixed-use | | `unit_count_or_sf` | string | e.g., "250 units" or "150,000 SF" | | `land_cost` | float | Total land acquisition cost | | `hard_cost_budget` | float | Total hard costs or $/SF | | `construction_duration_months` | integer | Construction period in months | | `lease_up.absorption_rate` | string | Units/month or SF/month | | `lease_up.starting_rents` | float | Initial rental rates | | `lease_up.concessions` | string | e.g., "1 month free on 12-month lease" | | `stabilized.rents` | float | Stabilized rental rates | | `stabilized.vacancy_rate` | float | Stabilized vacancy (decimal) | | `stabilized.expenses` | float | $/unit or $/SF | | `stabilized.cap_rate` | float | Market stabilized cap rate | ### Optional | Field | Type | Notes | |---|---|---| | `stories` | integer | Number of stories | | `parking_type` | string | structured, surface, podium | | `soft_cost_pct` | float | % of hard costs (default 25-30%) | | `construction_loan.ltc` | float | Loan-to-cost (default 60-65%) | | `construction_loan.rate` | string | Spread over index | | `construction_loan.fees` | float | Origination fee % | | `construction_loan.interest_reserve` | boolean | Funded from loan proceeds | | `draw_curve` | string | S-curve (default), linear, front-loaded | | `contingency_hard_pct` | float | Default 5-10% | | `contingency_soft_pct` | float | Default 3-5% | | `developer_fee_pct` | float | Developer fee as % of hard+soft | | `equity_contribution` | float | Total equity | | `target_irr` | float | Hurdle IRR | | `exit_strategy` | string | sale, refi, long-term hold | | `exit_cap_rate` | float | Terminal cap rate | | `market_acquisition_comps` | object | price_per_unit, price_per_sf, going_in_cap | | `cycle_position` | string | early recovery, mid-cycle, late cycle, downturn | ## Process ### Phase 1: TDC Budget Build the total development cost budget: | Category | Line Item | Amount | $/Unit or $/SF | % of TDC | Notes | |---|---|---|---|---|---| | Land | Acquisition | | | | | | Land | Closing costs | | | | | | Hard Costs | Site work | | | | | | Hard Costs | Vertical construction | | | | | | Hard Costs | Tenant improvements | | | | | | Hard Costs | FF&E | | | | | | Soft Costs | Architecture & engineering | | | | | | Soft Costs | Permits & fees | | | | | | Soft Costs | Legal | | | | | | Soft Costs | Insurance | | | | | | Soft Costs | Taxes during construction | | | | | | Soft Costs | Marketing / lease-up | | | | | | Financing | Origination fees | | | | | | Financing | Interest reserve | | | | | | Financing | Commitment fees | | | | | | Contingency | Hard cost (5-10%) | | | | Separate from GC contingency | | Contingency | Soft cost (3-5%) | | | | | | Developer Fee | | | | | | | **Total Development Cost** | | | | **100%** | | Compute TDC per unit and TDC per SF. Compare to market acquisition comps for build-vs-buy context. ### Phase 2: Monthly Construction Draw Schedule Generate one row per month of construction: | Month | Hard Cost Draw | Cumulative Hard | Soft Cost Draw | Cumulative Soft | Total Drawn | Equity Funded | Debt Funded | Interest Accrual | Cumulative Interest | Contingency Remaining | |---|---|---|---|---|---|---|---|---|---|---| **S-curve draw profile** (default for 24-month project): - Months 1-4: ~10% drawn (mobilization, site work) - Months 5-18: ~60% drawn (vertical construction, MEP) - Months 19-24: ~30% drawn (finishes, punchlist) **Interest calculation**: monthly interest on cumulative drawn balance, compounded monthly. NEVER calculate interest on total loan commitment. This is the most common error in development modeling. **Tracking**: equity funded first (up to equity contribution), then debt. Running totals of equity, debt, and interest. ### Phase 3: Monthly Lease-Up Cash Flow From certificate of occupancy through stabilization: | Month | Units Leased (cumulative) | Occupancy % | GPR | Vacancy Loss | Concessions | EGI | OpEx | NOI | Debt Service | Cash Flow | |---|---|---|---|---|---|---|---|---|---|---| Absorption benchmarks: - Multifamily: 15-25 units/month (strong market) - Office: 5,000-10,000 SF/month - Industrial: 10,000-25,000 SF/month Model negative cash flow during lease-up explicitly. Construction loan typically remains outstanding during lease-up. Track negative cash flow impact on total equity requirement. ### Phase 4: Stabilized Performance ``` Stabilized NOI = EGI_stabilized - OpEx_stabilized Development Yield = Stabilized NOI / TDC Development Spread = Development Yield - Stabilized Cap Rate Stabilized Value = Stabilized NOI / Cap Rate Value Creation = Stabilized Value - TDC ``` Development spread thresholds: - Core markets: 100-150 bps minimum - Secondary markets: 150-250 bps minimum - Below these levels, acquisition typically offers better risk-adjusted returns ### Phase 5: Return Metrics | Metric | Unlevered | Levered | |---|---|---| | IRR | | | | Equity Multiple | | | | Peak Equity Requirement | | | | Breakeven Occupancy (DSCR = 1.0x) | | | | Cash-on-Cash at Stabilization | | | ### Phase 6: Go/No-Go Framework #### Build vs. Buy Comparison | Metric | Development | Acquisition | |---|---|---| | Cost per Unit/SF | TDC/unit | Market acquisition comp/unit | | Going-in Yield / Dev Yield | Dev yield | Going-in cap rate | | Time to Stabilized Cash Flow | Construction + lease-up | Immediate (or renovation period) | | IRR (base case) | | | | Risk Level | Higher (construction, lease-up, market) | Lower (known asset, known tenants) | #### Probability-Weighted Scenario Analysis | Scenario | Probability | IRR | Equity Multiple | Dev Spread | Verdict | |---|---|---|---|---|---| | Base case | 40% | | | | | | Cost overrun (+10-15%) | 20% | | | | | | Lease-up delay (+6-12 months) | 15% | | | | | | Market downturn (cap +50-100 bps) | 15% | | | | | | Combined stress | 10% | | | | | | **Expected (weighted)** | **100%** | | | | | Always evaluate expected return (probability-weighted), not just base case. Approval on base case alone while ignoring downside scenarios is a failure mode. #### Decision Matrix - **Green** (proceed): spread > 150 bps, build < buy on $/unit, early-to-mid cycle - **Yellow** (conditional): spread 100-150 bps, build ~= buy, mid-cycle. Requires additional risk mitigants. - **Red** (pass): spread < 100 bps, build > buy, late cycle. Acquisition likely offers better risk-adjusted returns. ## Output Format | Section | Content | |---|---| | A | Total Development Cost Budget (table with $/unit, $/SF, % of TDC) | | B | Monthly Construction Draw Schedule (CSV block, one row per month) | | C | Monthly Lease-Up Cash Flow (CSV block, CO to stabilization) | | D | Stabilized Summary (NOI, dev yield, cap rate, spread, value creation) | | E | Return Summary Table (unlevered/levered IRR, equity multiple, peak equity, breakeven) | | F | Sensitivity Matrix (dev yield vs. exit cap rate on IRR) | | G | Build vs. Buy Comparison | | H | Scenario Analysis Matrix (probability-weighted) | | I | Go/No-Go Recommendation (green/yellow/red with conditions) | ## Red Flags & Failure Modes 1. **Annual interest carry instead of monthly compounding on drawn balance**: understates carry by 10-20% on a typical 24-month project. Monthly on drawn, always. 2. **Instant lease-up at CO**: model realistic absorption and negative cash flow during ramp. Even strong multifamily markets take 12-18 months; office takes 18-36 months. 3. **Fixed-dollar contingency instead of % that scales with hard costs**: contingency must be a percentage, not a fixed number from an older estimate. 4. **Ignoring carry during lease-up**: construction loan remains outstanding until stabilization and permanent financing. Model the full carrying cost. 5. **Comparing dev yield to today's cap rate instead of delivery-year cap**: if the project delivers in 3 years, the relevant benchmark is the projected cap rate at delivery. 6. **Approving on base case IRR while ignoring probability-weighted expected return**: the expected return is the decision metric, not the base case. 7. **Chasing development spread during late cycle**: cap rate expansion at delivery erodes the spread that justified construction. 8. **Ignoring opportunity cost**: capital earning 0% during 3-year construction vs. 6-8% in a stabilized acquisition is a real cost. ## Chain Notes - **Upstream**: land-residual-hbu-analyzer (validated land cost), construction-budget-gc-analyzer (benchmarked hard costs), entitlement-feasibility (entitlement timeline and cost) - **Downstream**: deal-underwriting-assistant (build-vs-buy requires acquisition analysis), jv-waterfall-architect (GP/LP equity structure on development) - **Related**: market-memo-generator (market rents, cap rates, supply pipeline)
Related Skills
tenant-retention-engine
Generates comprehensive tenant retention strategies with per-tenant renewal probability scoring, retention NPV analysis, WALT impact quantification, DSCR covenant monitoring, competitive intelligence, game theory framing for multi-tenant dynamics, and blend-and-extend modeling. Includes backfill mode (lease-up war room) when retention fails. Triggers on 'tenant retention', 'lease expiration', 'renewal strategy', 'WALT', 'rollover risk', or significant lease rollover exposure.
partnership-allocation-engine
Structures and models Section 704(b) tax allocation provisions for real estate partnerships. Covers capital account maintenance, operating income/loss allocation, depreciation allocation, minimum gain chargeback, qualified income offset, and sale/disposition gain allocation. Includes REIT compliance testing module.
loan-sizing-engine
Sizes CMBS and balance sheet CRE loans from raw property financials. Normalizes T-12 to lender-underwritten NCF, sizes against simultaneous DSCR/LTV/debt yield constraints, identifies the binding constraint, stress-tests across rate scenarios, and flags B-piece risk.
leasing-operations-engine
Front-of-house leasing operations: inquiry response, tour preparation, pipeline CRM management, space readiness coordination, listing management, commission tracking, and marketing ROI analysis. Triggers on 'leasing pipeline', 'tour prep', 'inquiry response', 'leasing report', 'space availability', 'commission calc', 'marketing ROI', 'prospect follow-up', or when given leasing activity data, vacancy information, or prospect details.
fund-raise-negotiation-engine
Tracks LP-by-LP capital raise negotiations with persistent state, models fee concession impact in real-time including MFN cascade analysis, and maintains a live ledger of blended fund economics as commitments lock in. Scales from 10-LP seed funds to 300+ LP institutional raises.
disposition-strategy-engine
Produces a comprehensive sell/hold/refinance analysis with market cycle positioning, tax impact quantification, marginal return on equity, buyer universe assessment, and 15 selectable disposition scenario variants (value-add MF, portfolio 1031, distressed office, sale-leaseback, and more).
construction-procurement-contracts-engine
GC selection, bid leveling, GMP/lump sum negotiation, CO compliance, punch list management, and design team evaluation for Development Managers.
annual-budget-engine
Produces institutional-quality annual operating budgets with IREM/BOMA benchmarking, component-specific escalators, NOI sensitivity grids, budget-to-value linkage, reserve adequacy testing, and IC challenge Q&A. Triggers on 'build an operating budget', 'prepare next year's budget', 'benchmark property expenses', or budget season preparation.
acquisition-underwriting-engine
Full-cycle acquisition underwriting engine. Takes a deal package (rent roll, T-12, OM, financing terms) and produces institutional-quality output: T-12 normalization, 10-year proforma, Linneman cap rate decomposition, probability-weighted scenarios, replacement cost analysis, and go/no-go recommendation. Triggers on 'underwrite this deal', 'build an acquisition model', or 'run the numbers on this property'.
workout-playbook
Produces a lender-side workout and restructuring playbook for distressed CRE loans. Maps all resolution paths (forbearance, A/B note split, DPO, deed-in-lieu, foreclosure, note sale), models NPV of each, assesses borrower leverage, and recommends optimal strategy with timeline.
Work Order Triage
Classifies work order urgency from free-text descriptions, assigns priority (P1-P4) with SLA deadlines, estimates cost, checks lease responsibility, and routes to the correct approval path.
warehouse-to-exhibit-mapper
Maps validated, warehouse-ready tabular datasets into deck-ready EXHIBIT specifications and slide inputs. Selects table vs. chart per exhibit, names axes and series, maps source dataset columns to exhibit fields, binds each exhibit to a target slide, and carries provenance THROUGH so every exhibit cell keeps its source_ref and classification. Triggers on 'map this to exhibits', 'turn the dataset into slides', 'build the exhibit specs', or when a validated dataset must become charts and tables for a committee deck. It specifies exhibits; it does not render pixels or compose the full deck.