Development Pro Forma Engine
Builds a full ground-up development pro forma at monthly granularity from land closing through construction, lease-up, and stabilization.
No packaged download — skills install from the open-source plugin repo. Read the SKILL.md and bundled files below before you install.
How to install a skill →Builds a full ground-up development pro forma at monthly granularity from land closing through construction, lease-up, and stabilization.
Derived from the skill’s “Skill description” section.
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.
Derived from the skill’s “When to Activate” section.
Not documented yet for this skill.
| 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) |
Derived from the skill’s “Output Format” section.
- 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.
- 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.
- Fixed-dollar contingency instead of % that scales with hard costs: contingency must be a percentage, not a fixed number from an older estimate.
- Ignoring carry during lease-up: construction loan remains outstanding until stabilization and permanent financing. Model the full carrying cost.
- 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.
- Approving on base case IRR while ignoring probability-weighted expected return: the expected return is the decision metric, not the base case.
- Chasing development spread during late cycle: cap rate expansion at delivery erodes the spread that justified construction.
- Ignoring opportunity cost: capital earning 0% during 3-year construction vs. 6-8% in a stabilized acquisition is a real cost.
Stale-data note: Construction cost indices, absorption rates, cap rate benchmarks, and development spread thresholds reflect mid-2025 market conditions. Verify with current RSMeans/ENR data, local market absorption, and projected delivery-year cap rates.
Derived from the skill’s “Red Flags & Failure Modes + stale-data note” section.
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 - TDCDevelopment 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
- 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.
- 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.
- Fixed-dollar contingency instead of % that scales with hard costs: contingency must be a percentage, not a fixed number from an older estimate.
- Ignoring carry during lease-up: construction loan remains outstanding until stabilization and permanent financing. Model the full carrying cost.
- 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.
- Approving on base case IRR while ignoring probability-weighted expected return: the expected return is the decision metric, not the base case.
- Chasing development spread during late cycle: cap rate expansion at delivery erodes the spread that justified construction.
- 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)