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
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.Urgent Repair Detection
Example: AI identifies urgent issues like “electrical sparks from outlet in Apt 210” and flags them for immediate action.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.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.”Recurring Issue Tracking
Example: AI notices repeated mentions of “low water pressure in multiple units” and highlights it as a building-wide concern.Tenant Satisfaction & Feedback
Example: AI asks if recent repairs were completed satisfactorily, logging responses like “Bathroom leak fixed, but paintwork was left messy.”Pre-Move-Out Inspection Scheduling
Example: AI detects a tenant saying, “I’m moving out next month” and prompts them to schedule an inspection.Pest Infestation Reports
Example: AI recognizes mentions of “cockroaches in the kitchen” or “mice in storage rooms” and compiles infestation reports.Noise & Neighbor Complaints
Example: AI logs tenant messages like “Upstairs neighbor’s plumbing is making loud noises at night” for property manager review.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": []
}
]
}