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
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": []
}
]
}