Issue Lifecycle
Status: Accepted Owner: @bilal Last Updated: 2026-02-15
How issues flow from report to resolution.
Overview
1. Report (Chat/Voice/WhatsApp/Form/Manual)
-> 2. Process (AI Intake, categorise, create issue)
-> 3. Manage (Dashboard, assign vendor)
-> 4. Resolve (Vendor accepts, completes work)
-> 5. Close (Notify tenant, request rating)
Status Flow
stateDiagram-v2 [*] --> new new --> in_progress : Landlord starts work new --> vendor_assigned : Vendor assigned directly new --> cancelled : Invalid/duplicate in_progress --> vendor_assigned : Assign vendor in_progress --> completed : Resolved internally vendor_assigned --> in_progress : Vendor declines vendor_assigned --> completed : Vendor completes completed --> [*] cancelled --> new : Reopened
Urgency Rules
| Urgency | Criteria | Response Target |
|---|---|---|
emergency | Safety risk, no heating in winter | Immediate |
high | Essential service down | 4 hours |
medium | Needs attention soon | 24 hours |
low | Can wait | 72 hours |
AI Auto-Categorisation
| Input | Category | Urgency |
|---|---|---|
| ”No hot water” | heating | high |
| ”Tap dripping” | plumbing | low |
| ”Smoke alarm beeping” | fire_safety | emergency |
Notifications
| Event | Who | Channel |
|---|---|---|
| Issue created | Landlord | SMS + Email |
| Issue created | Tenant | SMS (confirmation) |
| Vendor assigned | Vendor | SMS + Email (with link) |
| Vendor accepts | Landlord + Tenant | SMS |
| Issue completed | Tenant | SMS + Email |
Edge Cases
- Tenant not found: Issue still created, linked to property only, flagged for manual linking
- Vendor declines: Landlord notified, can reassign
- Issue reopened: Cancelled → new, timeline preserved
See also: Tenant Engine, Conversation Orchestration, Glossary