Maintenance State Machine, Portfolio KPIs & Tenant Ledger

A guided maintenance lifecycle with strict status transitions, six new portfolio KPI widgets on the dashboard, and a full tenant ledger with one-time charges.

This release focuses on giving managers a clear, guided operating picture — from the moment a maintenance request comes in to the cash that lands in the ledger.

Maintenance Lifecycle & Command Center

Maintenance requests now move through a strict, auditable state machine: Submitted → Triage → Dispatched → In Progress → Review → Completed, with cancellation available at any point.

  • Guided wizards for tenants and managers walk each request through the right next step.
  • Vendor invoices required — tickets can't reach Review or Completed without an attached vendor invoice, so costs are always accounted for.
  • Express bypass lets administrators jump states when reality moves faster than the process.
  • The new command center shows requests as cards with status tabs (All, In Progress, Completed, Canceled) and server-side filtering.

Portfolio KPIs on the Dashboard

Six new widgets give you the pulse of the portfolio at a glance:

  • Occupancy Rate and Vacant Units
  • Delinquent Balances and Expiring Leases (30/60/90-day buckets)
  • Open Maintenance and Cash Collected This Month

Each widget loads independently, so one slow query never blocks the rest of the dashboard.

Tenant Ledger & One-Time Charges

Every lease now has a full ledger view combining charges and payments, and managers can add one-time charges (amount, due date, description) directly from the lease detail page.

Also in this release

  • Automated monthly rent generation with idempotency protection against double-billing.
  • Organization hierarchy: enterprise accounts can now oversee child property-management accounts with scoped, read-only access.
  • A read-only observer role for property owners who want visibility without controls.