Maintenance Triage & Dispatch

by Telenow AI

24/7 maintenance triage — classify life-safety vs cosmetic on the call and dispatch the right vendor.

real-estateNative
Install Maintenance Triage & DispatchReviewed & approved · install free · connect your tools
1.1.0
Version
6
Tools

Last updated 2026-07-12

Screenshots

Live dashboard — outcomes, KPIs & status mix
Live dashboard — outcomes, KPIs & status mix
Work Orders
Work Orders
Vendors
Vendors
Guided setup — create the agent & connect your data
Guided setup — create the agent & connect your data

About Maintenance Triage & Dispatch

Maintenance Triage & Dispatch

24/7 maintenance triage that tells a gas leak from a squeaky hinge — on the call. It logs the work order, dispatches the on-call vendor for life-safety, and schedules the rest.

Built on the Telenow App Platform as a pure declarative app: the data model, the agent tools, the PMS unit hook, the confirmation workflow, the inbound triage agent, and the escalation knowledge base all run on-platform. No external server.

Maintenance Triage & Dispatch is an inbound-first app — you point your published 24/7 maintenance number at the bundled agent, and every tenant call is answered, classified, logged, and routed automatically, around the clock.

The problem (and the number)

Most property managers hand after-hours calls to an answering service that only takes a message — a note that a human reads hours later. That is exactly when the costly calls come in. A misrouted emergency is the biggest liability a manager carries: a gas leak, an active flood, sewage backup, or no heat in freezing weather left to sit overnight turns a same-day fix into a habitability claim, water damage across multiple units, and an emergency vendor call-out at a steep after-hours premium. Meanwhile genuinely cosmetic requests get dispatched at emergency rates because nobody triaged them. Industry maintenance data consistently puts emergency / after-hours call-outs at 2–3× the cost of a scheduled visit, and water damage alone is one of the largest single sources of property-insurance loss.

Maintenance Triage & Dispatch answers on the first ring, decides life-safety vs urgent vs cosmetic against a written escalation policy, and acts on it immediately — dispatch the on-call vendor and transfer for an emergency, schedule the right trade for everything else.

How it works

Tenant calls the 24/7 maintenance number
        │
        ▼
Maintenance Triage Agent (inbound, deterministic flow)
  greet + gather (unit, issue, access)  ──►  find_unit  (confirm property/address)
        │
        ▼
  classify  (extract → category, grounded in the escalation KB)
        │
        ├─ life_safety ─►  create_work_order ─► dispatch_emergency (status: dispatched)
        │                                        └─► TRANSFER to {{settings.oncall_number}}
        │
        └─ urgent / cosmetic ─►  create_work_order ─► schedule_routine (status: scheduled)
        │
        ▼
  object.work_order.created  ─►  dispatch_confirm workflow
                                 └─ send-message {{settings.wa_channel}} → tenant confirmation

  Unit roster kept fresh out-of-band:  PMS  ──(unit webhook)──►  pms_units hook ──► unit (dedupe on unit_no)

Everything the agent does on the call updates the same work_order rows you see on the dashboard — and the dashboard's Call now button dials the tenant back through the same agent and tools.

Agent tools (used mid-call — all declarative)

ToolDoesHandler
find_unitConfirm the caller's property & address by unit numberobject.query unit
create_work_orderLog the maintenance issue, its category, and access detailsobject.create work_order
classify_orderSet / correct the triage category on the open orderobject.update work_order (match phone)
dispatch_emergencyLife-safety — dispatch on-call nowobject.update work_order (match phone → status dispatched)
schedule_routineUrgent / cosmetic — schedule the right tradeobject.update work_order (match phone → status scheduled)
resolve_orderClose the order once fixedobject.update work_order (match phone → status resolved)

The bundled Maintenance Triage Agent is a deterministic multi-context flow: greet & gather → a find_unit tool node → an extract classify node → an equation branch that either dispatches + transfers a life-safety emergency or schedules a routine job. STT/TTS default to Deepgram + ElevenLabs (English).

Dashboard pages

  • Maintenance Triage & Dispatch (dashboard) — KPI tiles (open work orders, life-safety open with an SLA-at-risk flag, dispatched today, average open age as a first-response proxy, resolved), a by-category breakdown with life-safety highlighted, a status pipeline, and recent work orders. Also powers the platform dashboard_widget slot in a compact form.
  • Work Orders — the live queue with category + status badges and a plain-language triage outcome per row; filter by category/status, search, and Call now to call a tenant back through the triage agent (passes unit/issue/category context variables). Life-safety orders sort to the top and are highlighted.
  • Vendors — your trade roster with an on-call indicator (plumbing, electrical, HVAC, general…).
  • Setup — a configuration checklist, one-click Create dispatch agent, the on-call transfer-number caveat, and the inbound-number + PMS wiring steps.

Knowledge base

escalation-policy ships four real documents the agent classifies against: life-safety emergencies — dispatch now, urgent vs cosmetic — how to tell them apart, vendor dispatch policy, and tenant safety script & access details.

Install & post-install wiring

  1. Install Maintenance Triage & Dispatch into your org.
  2. Open Setup → Create dispatch agent (builds the bundled inbound agent, auto-wired to the tools + KB).
  3. Copy the new agent's ID into the app's Dispatch agent ID setting (dispatch_agent_id).
  4. Set the on-call transfer number. The agent ships with a blank transfer destination on install — open its “Transfer to on-call” node and paste your real on-call number, and set the same number in the On-call maintenance number setting (oncall_number). Until this is done, a life-safety emergency transfer has nowhere to ring.
  5. Bind your 24/7 maintenance phone number to the dispatch agent so every tenant call is answered and triaged (this is an inbound app).
  6. (Optional) Set WhatsApp channel ID (wa_channel) so dispatch_confirm texts tenants a confirmation the moment a work order is logged.
  7. (Optional) Point your PMS unit created/updated webhook at the pms_units inbound hook (verified with x-pms-signature, deduped on unit_no) to keep the unit roster fresh.

Settings

KeyTypeNotes
dispatch_agent_idtext (required)The inbound triage agent; also used by "Call now".
oncall_numbertextOn-call destination for life-safety transfers. Also paste it into the agent's transfer node (blank on install).
wa_channeltextWhatsApp channel for the tenant confirmation.
vendor_api_keysecretOptional PMS / vendor-network key (encrypted; server-side only).

Bulk dialing your backlog

The real-time path (inbound call → triage → dispatch/schedule) covers live calls. To sweep a backlog of open work orders with outbound follow-up calls, use the app-key campaign API:

POST /api/app-campaigns
{ "agentId": "<dispatch agent id>",
  "targetQuery": { "status": "new" },      // over the `work_order` object
  "result": { ... write-back ... } }

Monetization

Maintenance Triage & Dispatch is billed per unit, per month — a flat rate for every occupied unit under 24/7 coverage, regardless of call volume. That maps cleanly to how property managers already budget maintenance, scales with the portfolio, and is trivially cheaper than a single misrouted after-hours emergency. The dashboard surfaces the value directly: emergencies dispatched on time, routine jobs kept off emergency rates, and average first-response age per unit.

Ready-made agents it ships

Maintenance Triage Agentmulti-step flow

A 24/7 inbound agent that answers the maintenance line, classifies every issue as life-safety, urgent, or cosmetic against the escalation policy, logs a work order, and either transfers a life-safety emergency straight to the on-call vendor or schedules the routine job with the right trade.

What your agents can do with it

find_unit

Look up a unit by its number to confirm the property and street address before logging a work order.

create_work_order

Log a new maintenance work order for the caller's unit with the issue, its triage category, and how a vendor can access the unit.

classify_order

Set or correct the triage category (life_safety / urgent / cosmetic) on the caller's open work order.

dispatch_emergency

Dispatch the on-call vendor NOW for a life-safety emergency and mark the caller's work order as dispatched.

schedule_routine

Schedule a routine (urgent or cosmetic) work order with the right-trade vendor and mark the caller's order as scheduled.

resolve_order

Mark the caller's work order as resolved once the issue has been fixed and confirmed.

Data it manages

Work Order Vendor Unit

Permissions it requests

Apps run inside your workspace under least-privilege scopes you can see up front. This app asks for:

Store & manage “work_order” records in your workspace
objects:work_order
Store & manage “vendor” records in your workspace
objects:vendor
Store & manage “unit” records in your workspace
objects:unit
Read your agents' configuration
agents:read
Place phone calls on your behalf
calls:initiate
Read calls of agents this app is connected to
calls:read
ai:llm
ai:llm
Send WhatsApp messages
whatsapp:send
View your outbound campaigns
campaigns:read
See your name and email
user:profile

What's new in v1.1.0

Changelog

1.1.0 — 2026-07-12

  • Renamed to Maintenance Triage & Dispatch (business-friendly) with a marketplace icon.
  • Added real UI screenshots (dashboard + key pages).
  • Verified end-to-end loop closure: trigger → workflow → call → agent tools → write-back → dashboard.

1.0.0

  • Initial release.
  • Data model: work_order object (tenant, phone, unit, issue, category, access details, status, created_at) with open / life_safety / unassigned saved views; vendor object (name, phone, trade, on_call) with an on_call view; unit object (unit_no, address, property).
  • Agent tools (declarative): find_unit, create_work_order, classify_order, dispatch_emergency, schedule_routine, resolve_order.
  • Bundled agent: Maintenance Triage Agent — a 24/7 inbound, deterministic multi-context flow (greet & gather → find_unit lookup → extract classify → equation branch that dispatches + transfers a life-safety emergency to the on-call number, or schedules a routine job) auto-wired to the tools and the escalation knowledge base.
  • Knowledge base: escalation-policy — life-safety emergencies, urgent vs cosmetic, vendor dispatch policy, and the tenant safety script.
  • Automation: pms_units inbound webhook (HMAC-verified via x-pms-signature, dedupe on unit_no) to keep the unit roster fresh; dispatch_confirm workflow (WhatsApp the tenant a confirmation the moment a work order is created).
  • Dashboard UI: KPI tiles (open, life-safety open with SLA-at-risk flag, dispatched today, average open age, resolved), a by-category breakdown with life-safety highlighted, a status pipeline, and recent work orders; also renders into the dashboard_widget slot in compact form.
  • Work Orders page: category + status filters, search, life-safety-first sorting with highlight, a per-row triage outcome, and per-order Call now (passes work-order context variables to the agent).
  • Vendors page: trade roster with on-call indicator and coverage KPIs.
  • Setup page: configuration checklist, one-click Create dispatch agent, the blank-on-install transfer-number caveat, and the inbound-number + PMS wiring steps.
  • Self-seed: a fresh install auto-loads three units, three vendors, and six realistic work orders across every category and status (removable) so the dashboard is populated on first open.
  • Monetization: per-unit, per-month.

Publisher

Telenow AI

Marketplace publisher · app reviewed by Telenow before listing.

Your data, your keys

Encryption everywhere

Secrets, carrier credentials and API keys stored AES-GCM encrypted; TLS in transit; HMAC-signed webhooks.

Org isolation & RBAC

Strict per-organization data isolation with role-based access for every member.

Full audit log

Every mutating action is logged and filterable, with CSV export for your records.

Telephony compliance

In-app DLT / regulatory flows, TCPA calling windows, and org-wide Do-Not-Call enforcement.

₹300.00 free credit on signup

Install Maintenance Triage & Dispatch

Sign up free and get ₹300.00 in credit — no card required. Connect your number, pick a template, and go live in minutes.