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.
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
- 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.
/api/dashboard/maintenance/parseReturns 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
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
{
"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.
- 1Create the work order in OPEN when the issue is logged and triaged.
- 2Move to QUOTED when the vendor submits cost or scope details.
- 3Use APPROVED only after a manager accepts the quote or authorizes the work.
- 4Advance through SCHEDULED and IN_PROGRESS as the vendor commits and begins work.
- 5Use RESOLVED when the job is completed and final cost is known.
- 6Close only after billing, notifications, and follow-up are complete.

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.