Property Management Repairs Agent

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

Written By William Bowen

Last updated 15 days 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": [] } ] }