Maintenance

Intake and dispatch

Maintenance

Intake and dispatch

Maintenance in Abode is built around structured intake, explicit status transitions, and vendor-aware execution. The goal is to take an ambiguous resident request and turn it into an auditable work order without losing context.

Need only AI intake first? Start with the parse endpoint and operator review before you automate assignment, billing, or resident-facing updates.

Intake inputs

Text, images, tenant submissions, operator entry

Lifecycle

OPEN → QUOTED → APPROVED → SCHEDULED → IN_PROGRESS → RESOLVED → CLOSED

Billing handoff

Resolved work orders can create bills automatically

Interactive example

Interactive intake preview

Try the same structured extraction pattern Abode uses to turn messy requests into ready-to-review work orders.

Resident message

Tenant in Unit 3A reports water leaking under the kitchen sink and damp cabinets.
Source
Tenant portal / SMS intake
Priority
HIGH
Category
Plumbing

Normalized payload

HIGH
{
  "title": "Kitchen sink leak in Unit 3A",
  "description": "Tenant in Unit 3A reports water leaking under the kitchen sink and damp cabinets.",
  "priority": "HIGH",
  "category": "Plumbing",
  "propertyAddress": "123 Main St",
  "unitName": "3A",
  "reportedBy": "Resident"
}

Video guide

Maintenance workflow guide

A short Remotion walkthrough of intake, dispatch, vendor execution, and billing handoff.

Duration

0:23

Coverage

Video guide · Parse requests from text or images · Work order status model

Guided walkthrough

Parse requests from text or images

The maintenance parse route extracts the fields an operator needs to review before creating a work order.

POST/api/dashboard/maintenance/parse

Returns normalized work order candidates from raw text or image input.

Authentication
Management dashboard session with maintenance write access
Constraint 1
The system prompt constrains title, description, priority, category, property address, unit, and reporter.
Constraint 2
Priority defaults to MEDIUM and category defaults to Other when not confidently inferred.
Constraint 3
This route is designed for assisted data entry, not unsupervised autonomous creation.

Request examples

bash
curl https://app.theabode.ai/api/dashboard/maintenance/parse \
  -X POST \
  -H "Authorization: Bearer {session}" \
  -H "Content-Type: application/json" \
  -d '{
    "input": "Unit 3A says the kitchen sink is leaking into the cabinet and the disposal is humming.",
    "mode": "text"
  }'

Response examples

json
{
  "workOrders": [
    {
      "title": "Kitchen sink leak in Unit 3A",
      "description": "Water is leaking into the cabinet and the garbage disposal is humming.",
      "priority": "HIGH",
      "category": "Plumbing",
      "propertyAddress": "123 Main St",
      "unitName": "3A",
      "reportedBy": "Avery Tenant"
    }
  ]
}

Work order status model

Abode treats vendor execution as a state machine so approvals and resident updates stay legible.

  1. 1Create the work order in OPEN when the issue is logged and triaged.
  2. 2Move to QUOTED when the vendor submits cost or scope details.
  3. 3Use APPROVED only after a manager accepts the quote or authorizes the work.
  4. 4Advance through SCHEDULED and IN_PROGRESS as the vendor commits and begins work.
  5. 5Use RESOLVED when the job is completed and final cost is known.
  6. 6Close only after billing, notifications, and follow-up are complete.
Product surface
Maintenance screen

Maintenance work should stay attached to the record

Messages, parts, labor, attachments, and vendor state belong on the work order, not in an external inbox.

Intake and dispatch | Abode Docs