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

UrgencyCriteriaResponse Target
emergencySafety risk, no heating in winterImmediate
highEssential service down4 hours
mediumNeeds attention soon24 hours
lowCan wait72 hours

AI Auto-Categorisation

InputCategoryUrgency
”No hot water”heatinghigh
”Tap dripping”plumbinglow
”Smoke alarm beeping”fire_safetyemergency

Notifications

EventWhoChannel
Issue createdLandlordSMS + Email
Issue createdTenantSMS (confirmation)
Vendor assignedVendorSMS + Email (with link)
Vendor acceptsLandlord + TenantSMS
Issue completedTenantSMS + 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