Phase 1 — Property Setup
Onboard a property into the portfolio with buildings and units
Phase 2 — Unit Goes Vacant → Marketing
When a unit becomes available, prepare it and get it in front of prospects
Phase 3 — Leasing Pipeline
From first applicant to signed lease — screening, generation, signing, and abstraction
Phase 4 — Move-In & Onboarding
Document unit condition, issue keys, complete all move-in tasks
Phase 5 — Active Tenancy
Day-to-day operations — rent collection, maintenance requests, communications, insurance
Phase 6 — Delinquency & Collections
When rent isn't paid — escalating from friendly reminder to legal action
Phase 7 — Maintenance & Work Orders
Complete work order lifecycle — from 10 sources through vendor marketplace to completion
Phase 8 — Renewal Decision or Move-Out
Lease approaching expiry — renew with AI-optimized terms, or begin the move-out process
Phase 9 — Move-Out & Turnover
Inspect, calculate deductions, make ready, and get the unit back on the market
⚠️ 7 Workflow Gaps Identified
These steps exist conceptually in the workflow but have no UI button or form to perform the action. The data models and API endpoints exist — only the frontend trigger is missing.
🏗 1.2 — Add Building Phase 1
No form to create buildings within a property. Buildings only exist via database seeding.
📋 2.1 — Mark Unit Vacant Phase 2
Service method markVacant() exists in tenant.service.ts but no button in the UI calls it.
📅 2.6 — Schedule Showing Phase 2
Showings page displays existing data but has no "Create Showing" or "Schedule" button.
📋 4.2 — Start Onboarding Phase 4
Onboarding checklists are viewed and tasks completed, but no way to initiate a new onboarding from the UI.
📋 6.1 — Create Collection Case Phase 6
Collections dashboard manages existing cases but has no way to create a new case from the UI.
📋 9.3 — Create Turnover Case Phase 9
Turnover kanban tracks cases through stages but has no way to create a new one.
🔧 Pattern: Most gaps are "Create" actions
6 of 7 gaps follow the same pattern: the list/detail views exist and work correctly, but there's no button to create a new entity. The fix for each is a simple form or auto-trigger.