Annual Budget Build
Workflow purpose
Produce a defensible annual operating budget for a property, with every dollar traced to a reference. Revenue derives from rent roll roll-forward + overlay market assumptions + renewal policy. Expense derives from assumption libraries and staffing ratios. The output is a budget package plus a narrative that can withstand asset-management and lender review.
Trigger conditions
- Explicit: "build 2027 budget", "budget build for property X", "annual operating budget", "start budget cycle".
- Implicit: calendar approach of budget season per org overlay; prior budget superseded.
- Recurring: annual per property, on the org's budget calendar.
Inputs (required / optional)
| Input | Type | Required | Notes |
|---|---|---|---|
| Rent roll snapshot | table | required | for revenue roll-forward |
| T12 operating statement | table | required | base for expense build |
| Budget history (prior 2 years) | table | required | for trend analysis |
| Market rent reference | csv | required | |
| Concession benchmark | csv | required | |
| Collections benchmark | csv | required | |
| Payroll assumptions | csv | required | |
| Insurance/tax assumptions | csv | required | |
| Utility benchmarks | csv | required | |
| Turn cost library | csv | required | |
| Staffing ratios | csv | required | |
| Budget escalator assumptions | csv | required | per market |
| Renewal uplift bands | csv | required | |
| Debt schedule | record | required | for DSCR/DY view |
Outputs
| Output | Type | Shape |
|---|---|---|
| Revenue build | table | by line item, monthly |
| Expense build | table | by line item, monthly |
| Capex plan stub | list | referenced, produced by capital_project_intake_and_prioritization |
| NOI + NOI margin summary | kpi_review |
prior, T12, budget; variance |
| Covenant view | kpi_review |
dscr, debt_yield on budgeted NOI |
| Budget narrative | memo |
drivers and assumptions, sensitivities |
| Owner package draft | operating_review |
assembled budget package |
Required context
Asset_class, segment, form_factor, lifecycle_stage, management_mode, market, jurisdiction.
Process
- Revenue build.
- Start with rent roll. Roll forward each lease through its term; on roll, apply renewal uplift band for renewals and market trend for new leases. Reflect concession policy.
- Compute GPR, vacancy loss (from target
physical_occupancyband), concessions, bad debt (fromcollections_rateandbad_debt_rateassumptions), other income (from T12 trend + overlay). - Produce
economic_occupancyview.
- Expense build.
- Payroll: staffing ratios x salary bands + burden rate from payroll assumptions. Compute
payroll_per_unit. - R&M and contract services: T12 base + overlay escalators + known scope changes;
rm_per_unit. - Utilities: benchmark x seasonality curve; apply RUBS recovery per overlay.
utilities_per_unit. - Insurance and property tax: assumption library; tax may require a separate appeal/reassessment view.
- Management fee: per PMA if third_party_managed.
- Marketing: overlay ratio.
- Turnover expense: turn cost library x projected turn count from target
turnover_rate.
- Payroll: staffing ratios x salary bands + burden rate from payroll assumptions. Compute
- Capex plan stub. Pull from
workflows/capital_project_intake_and_prioritization; budget reflects cash flow timing, not P&L. - NOI, NOI margin, DSCR, DY. Compute on budget numbers; compare prior and T12.
- Variance narrative. For each material line, explain driver (volume, price, mix, assumption change).
- Sensitivity cases. Run overlay stress cases: occupancy down X, trade-out down Y, insurance up Z; show NOI impact.
- Calibration check. Forecast accuracy on prior budget: where was the operator off; adjust current assumptions where pattern is explained.
- Owner package. Assemble per template; draft narrative; prepare sensitivity appendix.
- Approval. Final owner/lender submission opens
approval_requestrow 14 (lender) or row 15 / 16 (investor). - Confidence banner. Reference
as_of_dateandstatustags for every assumption.
Metrics used
noi, noi_margin, economic_occupancy, physical_occupancy, leased_occupancy, collections_rate, bad_debt_rate, concession_rate, rent_growth_renewal, rent_growth_new_lease, blended_lease_trade_out, payroll_per_unit, rm_per_unit, utilities_per_unit, controllable_opex_per_unit, dscr, debt_yield.
Reference files used
reference/normalized/payroll_assumptions__{org}.csvreference/normalized/insurance_tax_assumptions__{market}.csvreference/normalized/utility_benchmarks__{market}.csvreference/normalized/staffing_ratios__middle_market.csvreference/normalized/market_rents__{market}_mf.csvreference/normalized/concession_benchmarks__{market}_mf.csvreference/normalized/collections_benchmarks__{region}_mf.csvreference/normalized/unit_turn_cost_library__{market}.csvreference/derived/budget_escalator_assumptions__{market}.csvreference/normalized/approval_threshold_defaults.csv
Escalation points
- Final submission to lender:
approval_requestrow 14. - Final submission to owner/LP: row 15 or 16.
- Assumptions outside overlay bands: asset_manager sign-off before finalization.
Required approvals
- Final budget submission (row 14 / 15 / 16 per recipient).
Failure modes
- Rent growth without a market reference. Fix: market reference required.
- Payroll built from headcount without ratios. Fix: ratios overlay governs.
- No sensitivity. Fix: sensitivity pass is mandatory.
- Ignoring prior forecast accuracy. Fix: calibration check is a required step.
- Final submission without approval. Fix: row 14/15/16 gate.
Edge cases
- Lease-up property: revenue build uses lease-up curve; utility baseline distinct.
- Renovation program in-flight: distinguish classic and renovated unit rent lines.
- Tax reassessment pending: sensitivity case on tax; reference the appeal assumption.
- Debt maturity during budget year: show refi sensitivity on DSCR.
- New construction in sister property: supply/demand note in narrative; not in revenue build directly.
Example invocations
- "Build the 2027 budget for Ashford Park. Use current assumptions and flag any outside band."
- "Run sensitivities on the draft 2027 budget for Willow Creek."
- "Produce the owner budget package for the South End portfolio."
Example outputs
Output — 2027 budget summary (abridged, Ashford Park)
Revenue. GPR from roll-forward; vacancy loss to target; concessions per overlay; other income per T12 + overlay; economic_occupancy within band.
Expense. Payroll from ratios; R&M per overlay escalator; utilities per benchmark with RUBS; insurance/tax per overlay.
NOI. Computed; noi_margin within overlay band.
Covenant view. dscr on budget NOI against loan requirement; debt_yield above floor.
Sensitivities. Overlay stress cases produce NOI impact table.
Calibration. Prior budget forecast accuracy noted; adjustments made to utilities assumption per pattern.
Submission. Owner package drafted; approval_request row 15 opened for owner final submission.
Confidence banner. All assumption references carry as_of_date and status. Sample / starter references surfaced with tag.