Property Management Repairs Agent

An AI agent to get organise your tenant's repairs.

Written By William Bowen

Last updated 4 months ago

Intro

This AI Agent automates tenant repair requests by handling conversations, identifying needed repairs, and updating tenant contact cards with detailed requests. Property managers simply send a campaign, and the next day, they can review a compiled list of repairs—like "leaky faucet in Apt 302" or "broken heater in Apt 415"—without manual follow-ups.

Use cases

10 Specific Use Cases for This AI Agent

  1. Maintenance Requests Collection
    Example: AI gathers reports like “leaky faucet in Apt 302” or “heating not working in Apt 415” and updates the contact database.

  2. Urgent Repair Detection
    Example: AI identifies urgent issues like “electrical sparks from outlet in Apt 210” and flags them for immediate action.

  3. Follow-up on Incomplete Repairs
    Example: If a tenant mentions, “The plumber came but the sink is still dripping,” the AI updates the record and prompts a follow-up.

  4. Seasonal Maintenance Surveys
    Example: Before winter, AI asks tenants about heating or insulation issues and compiles responses like “cold drafts from windows in Apt 503.”

  5. Recurring Issue Tracking
    Example: AI notices repeated mentions of “low water pressure in multiple units” and highlights it as a building-wide concern.

  6. Tenant Satisfaction & Feedback
    Example: AI asks if recent repairs were completed satisfactorily, logging responses like “Bathroom leak fixed, but paintwork was left messy.”

  7. Pre-Move-Out Inspection Scheduling
    Example: AI detects a tenant saying, “I’m moving out next month” and prompts them to schedule an inspection.

  8. Pest Infestation Reports
    Example: AI recognizes mentions of “cockroaches in the kitchen” or “mice in storage rooms” and compiles infestation reports.

  9. Noise & Neighbor Complaints
    Example: AI logs tenant messages like “Upstairs neighbor’s plumbing is making loud noises at night” for property manager review.

  10. Utility & Common Area Issues
    Example: AI gathers complaints about shared spaces, like “Laundry room dryer not working” or “Elevator buttons are unresponsive.”

Template

Example
{ "$schema": "https://web-api.clerk.chat/pipeline-schema", "name": "Property Repairs Agent", "nodes": [ { "type": "ai_bot", "name": "Brain", "triggeredBy": [ "unreadMessage.fromAny" ], "responseType": "json", "nodeConfig": { "modelProvider": "openai", "modelVersion": null, "maxTokens": null, "temperature": null, "variables": {}, "prompt": "Your goal is to read the conversation history and extract the repair the tenant needs on their apartment.\n\nIf the tenant has mentioned a repair, output the repair. \n\nIf the tenant has no repairs, output: No repair.", "promptSections": [], "sectionTemplates": {}, "responseSchema": { "type": "object", "required": [ "repair" ], "properties": { "repair": { "type": "string" } } }, "opts": { "sendStructuredConvo": true } } }, { "type": "ai_bot", "name": "Conclude conversation", "triggeredBy": [ "unreadMessage.fromAny" ], "responseType": "user_message", "nodeConfig": { "modelProvider": "openai", "modelVersion": null, "maxTokens": null, "temperature": null, "variables": {}, "prompt": "Read the conversation history. By now, the tenant should have told you that they have a repair (and what it is) or told you they don't have any repairs. \n\nYour goal is to conclude the conversation appropriately.", "promptSections": [], "sectionTemplates": {}, "responseSchema": { "type": "object", "required": [], "properties": {} }, "opts": { "sendStructuredConvo": true } } }, { "type": "tool_runner", "name": "Save repair", "triggeredBy": [ "unreadMessage.fromAny" ], "responseType": "json", "nodeConfig": { "type": "contact_tools", "config": {}, "enabledTools": [ "set_attribute" ], "tools": { "set_attribute": { "paramValues": { "attributeName": { "type": "fixed", "value": "Repair" }, "attributeValue": { "path": "repair", "type": "pipeline-variable" } } } } } }, { "type": "ai_bot", "name": "Extract repair", "triggeredBy": [ "unreadMessage.fromAny" ], "responseType": "user_message", "nodeConfig": { "modelProvider": "openai", "modelVersion": null, "maxTokens": null, "temperature": null, "variables": {}, "prompt": "Your goal is to read the conversation and ask the tenant if they have any repairs needed.", "promptSections": [], "sectionTemplates": {}, "responseSchema": { "type": "object", "required": [ "repair" ], "properties": { "repair": { "type": "string" } } }, "opts": { "sendStructuredConvo": true } } }, { "type": "trigger", "name": "Start", "triggeredBy": [ "userMessage" ], "responseType": "json" } ], "edges": [ { "name": null, "sourceNode": "Save repair", "destinationNode": "Conclude conversation", "sourceVariables": null, "filters": [] }, { "name": "Repair identified", "sourceNode": "Brain", "destinationNode": "Save repair", "sourceVariables": null, "filters": [ { "type": "rule", "config": { "syntax": { "!": [ { "isEmpty": [ { "var": "message.repair" } ] } ] } } } ] }, { "name": "No repair", "sourceNode": "Brain", "destinationNode": "Extract repair", "sourceVariables": null, "filters": [ { "type": "rule", "config": { "syntax": { "isEmpty": [ { "var": "message.repair" } ] } } } ] }, { "name": null, "sourceNode": "Start", "destinationNode": "Brain", "sourceVariables": null, "filters": [] } ] }