Unit Turn and Make-Ready
Workflow purpose
Minimize make_ready_days and average_days_vacant while hitting scope quality and budget. Produces the turn plan, dispatches the trades, tracks cycle time, and provides the reconciliation back to the turn cost library.
Trigger conditions
- Explicit: "start turn on unit X", "turn pipeline review", "estimate turn cost for unit Y", "unit ready ETA".
- Implicit:
workflows/move_out_administration writes a turn handoff record; a turn project exceeds target cycle time; materials delay detected.
- Recurring: weekly turn-pipeline review at property grain.
Inputs (required / optional)
| Input |
Type |
Required |
Notes |
| Turn handoff record |
record |
required |
unit_id, scope tier, damages list |
| Turn cost library |
csv |
required |
per-scope cost ranges by market |
| Approved vendor list |
csv |
required |
by trade |
| Vendor rate cards |
csv |
required |
for estimate |
| Turn benchmarks |
csv |
required |
cycle-time targets |
| Renovation plan (if lifecycle=renovation) |
record |
optional |
scope deltas |
Outputs
| Output |
Type |
Shape |
| Turn plan |
checklist |
scope, trades, order, durations |
| Turn estimate |
estimate |
by line item, cost range |
| Dispatch log |
record |
vendor assignments with ETAs |
| Turn pipeline snapshot |
kpi_review |
units in turn by stage, aging |
| Reconciliation |
memo |
actual vs. estimate vs. library |
Required context
Asset_class, segment, form_factor, lifecycle_stage, management_mode, market.
Process
- Select scope tier. Pull from the handoff record: classic, light refresh, or value-add interior (renovation). Scope contents read from overlay.
- Produce estimate. Apply turn cost library line items; reconcile against vendor rate cards. Flag any line item outside overlay tolerance.
- Cost gate. If total estimate above threshold, open
approval_request row 6 or 7 before procurement.
- Dispatch sequencing. Order trades per overlay (demo, punch, paint, flooring, appliances, fixtures, deep clean, final inspection). Licensed-trade verification per
workflows/work_order_triage gate.
- Cycle time tracking. Compute target vs. actual per unit; breaches escalate to maintenance_supervisor -> property_manager -> regional.
- Scope changes (decision point). Any safety-critical scope change triggers
approval_request row 4. Any cost change above overlay variance triggers disbursement gate.
- Quality inspection. Final inspection checklist per overlay; unit marked
ready only when all items pass.
- Reconciliation. Compare actual cost to estimate and to library; propose library updates via reference update flow if systematic drift.
- Handoff. Write ready record; triggers
workflows/move_in_administration if lease executed.
- Pipeline snapshot. Weekly view: units in turn by stage, aging, breaches.
- Confidence banner. Surface
as_of_date and status for library and rate cards.
Metrics used
make_ready_days, average_days_vacant, turnover_rate, turn_cost_by_market, repeat_work_order_rate (if post-turn defects trigger WOs).
Reference files used
reference/normalized/unit_turn_cost_library__{market}.csv
reference/normalized/approved_vendor_list__{market}.csv
reference/normalized/vendor_rate_cards__{market}.csv
reference/normalized/turn_benchmarks__{market}.csv
reference/normalized/approval_threshold_defaults.csv
Escalation points
- Cycle-time breach: maintenance_supervisor -> property_manager -> regional.
- Safety-critical scope change: row 4.
- Cost above threshold: row 6 or 7.
Required approvals
- Disbursement above threshold.
- Safety-critical scope deferral (row 4).
Failure modes
- Using last quarter's library. Fix: confidence banner surfaces freshness.
- Dispatching without insurance check. Fix: handoff to
work_order_triage gate.
- Reading "ready" without inspection. Fix: ready record only on inspection pass.
- Library not updated when actuals systematically drift. Fix: reconciliation step proposes update via reference flow.
- Scope creep without approval. Fix: scope changes routed by kind.
Edge cases
- Renovation-tier turn on lease-up property: scope reads from renovation overlay; pricing per renovation cost library.
- Prior resident damage beyond schedule: handoff flagged; turn cost delta covered by final ledger in
workflows/move_out_administration.
- Material lead-time issue: schedule adjusts; PM notified; resident new-move-in communication handled via
workflows/move_in_administration.
- Abandoned unit with undisclosed damage: PM + regional; scope expands; cost gate re-checked.
Example invocations
- "Start the classic turn on unit 101 at Ashford Park, vacate 2026-04-30."
- "Review the turn pipeline for Willow Creek this week; flag any breaches."
- "Estimate the value-add interior turn for unit 203 at Riverbend."
Example outputs
Output — Turn plan and estimate (abridged, unit 101 Ashford Park)
Scope tier. Classic turn per handoff record.
Plan. Demo, punch, paint, flooring, appliance check, deep clean, final inspection. Target cycle from overlay.
Estimate. Line items from library; total within band; no cost gate triggered.
Dispatch. Paint + flooring assigned to preferred vendors; licensure current; deep clean on-staff.
Breach flags. None at estimate stage.
Reconciliation commitment. Post-completion reconciliation will compare actual to estimate and to library; systematic drift proposes library update via reference flow.
Confidence banner. unit_turn_cost_library__charlotte@2026-03-31, status=sample. turn_benchmarks__charlotte@2026-03-31, status=starter.
1---2name: unit-turn-and-make-ready3description: Coordinates the unit turn from move-out handoff to ready-to-show. Selects the scope tier, produces the estimate, dispatches trades against the approved vendor list, tracks cycle time against benchmarks, and reconciles actuals against the turn cost library. Hands off to `workflows/move_in_administration` when the new resident is scheduled.4---56# Unit Turn and Make-Ready78## Workflow purpose910Minimize `make_ready_days` and `average_days_vacant` while hitting scope quality and budget. Produces the turn plan, dispatches the trades, tracks cycle time, and provides the reconciliation back to the turn cost library.1112## Trigger conditions1314- **Explicit:** "start turn on unit X", "turn pipeline review", "estimate turn cost for unit Y", "unit ready ETA".15- **Implicit:** `workflows/move_out_administration` writes a turn handoff record; a turn project exceeds target cycle time; materials delay detected.16- **Recurring:** weekly turn-pipeline review at property grain.1718## Inputs (required / optional)1920| Input | Type | Required | Notes |21|---|---|---|---|22| Turn handoff record | record | required | unit_id, scope tier, damages list |23| Turn cost library | csv | required | per-scope cost ranges by market |24| Approved vendor list | csv | required | by trade |25| Vendor rate cards | csv | required | for estimate |26| Turn benchmarks | csv | required | cycle-time targets |27| Renovation plan (if lifecycle=renovation) | record | optional | scope deltas |2829## Outputs3031| Output | Type | Shape |32|---|---|---|33| Turn plan | `checklist` | scope, trades, order, durations |34| Turn estimate | `estimate` | by line item, cost range |35| Dispatch log | record | vendor assignments with ETAs |36| Turn pipeline snapshot | `kpi_review` | units in turn by stage, aging |37| Reconciliation | `memo` | actual vs. estimate vs. library |3839## Required context4041Asset_class, segment, form_factor, lifecycle_stage, management_mode, market.4243## Process44451. **Select scope tier.** Pull from the handoff record: classic, light refresh, or value-add interior (renovation). Scope contents read from overlay.462. **Produce estimate.** Apply turn cost library line items; reconcile against vendor rate cards. Flag any line item outside overlay tolerance.473. **Cost gate.** If total estimate above threshold, open `approval_request` row 6 or 7 before procurement.484. **Dispatch sequencing.** Order trades per overlay (demo, punch, paint, flooring, appliances, fixtures, deep clean, final inspection). Licensed-trade verification per `workflows/work_order_triage` gate.495. **Cycle time tracking.** Compute target vs. actual per unit; breaches escalate to maintenance_supervisor -> property_manager -> regional.506. **Scope changes (decision point).** Any safety-critical scope change triggers `approval_request` row 4. Any cost change above overlay variance triggers disbursement gate.517. **Quality inspection.** Final inspection checklist per overlay; unit marked `ready` only when all items pass.528. **Reconciliation.** Compare actual cost to estimate and to library; propose library updates via reference update flow if systematic drift.539. **Handoff.** Write ready record; triggers `workflows/move_in_administration` if lease executed.5410. **Pipeline snapshot.** Weekly view: units in turn by stage, aging, breaches.5511. **Confidence banner.** Surface `as_of_date` and `status` for library and rate cards.5657## Metrics used5859`make_ready_days`, `average_days_vacant`, `turnover_rate`, `turn_cost_by_market`, `repeat_work_order_rate` (if post-turn defects trigger WOs).6061## Reference files used6263- `reference/normalized/unit_turn_cost_library__{market}.csv`64- `reference/normalized/approved_vendor_list__{market}.csv`65- `reference/normalized/vendor_rate_cards__{market}.csv`66- `reference/normalized/turn_benchmarks__{market}.csv`67- `reference/normalized/approval_threshold_defaults.csv`6869## Escalation points7071- Cycle-time breach: maintenance_supervisor -> property_manager -> regional.72- Safety-critical scope change: row 4.73- Cost above threshold: row 6 or 7.7475## Required approvals7677- Disbursement above threshold.78- Safety-critical scope deferral (row 4).7980## Failure modes81821. Using last quarter's library. Fix: confidence banner surfaces freshness.832. Dispatching without insurance check. Fix: handoff to `work_order_triage` gate.843. Reading "ready" without inspection. Fix: ready record only on inspection pass.854. Library not updated when actuals systematically drift. Fix: reconciliation step proposes update via reference flow.865. Scope creep without approval. Fix: scope changes routed by kind.8788## Edge cases8990- **Renovation-tier turn on lease-up property:** scope reads from renovation overlay; pricing per renovation cost library.91- **Prior resident damage beyond schedule:** handoff flagged; turn cost delta covered by final ledger in `workflows/move_out_administration`.92- **Material lead-time issue:** schedule adjusts; PM notified; resident new-move-in communication handled via `workflows/move_in_administration`.93- **Abandoned unit with undisclosed damage:** PM + regional; scope expands; cost gate re-checked.9495## Example invocations96971. "Start the classic turn on unit 101 at Ashford Park, vacate 2026-04-30."982. "Review the turn pipeline for Willow Creek this week; flag any breaches."993. "Estimate the value-add interior turn for unit 203 at Riverbend."100101## Example outputs102103### Output — Turn plan and estimate (abridged, unit 101 Ashford Park)104105**Scope tier.** Classic turn per handoff record.106107**Plan.** Demo, punch, paint, flooring, appliance check, deep clean, final inspection. Target cycle from overlay.108109**Estimate.** Line items from library; total within band; no cost gate triggered.110111**Dispatch.** Paint + flooring assigned to preferred vendors; licensure current; deep clean on-staff.112113**Breach flags.** None at estimate stage.114115**Reconciliation commitment.** Post-completion reconciliation will compare actual to estimate and to library; systematic drift proposes library update via reference flow.116117**Confidence banner.** `unit_turn_cost_library__charlotte@2026-03-31, status=sample`. `turn_benchmarks__charlotte@2026-03-31, status=starter`.