Tenant Maintenance Request Triage
Example prompt: "When a tenant emails maintenance@ourdomain.com, classify the issue by urgency (emergency, next-day, routine) and trade (plumbing, electrical, etc.). Dedupe against open jobs in our Google Sheet, draft an instruction to the right contractor and an acknowledgement to the tenant, and post any genuine emergency in #maintenance-urgent on Slack."
The Problem
A maintenance email at 9pm on a Friday is the unit of work that breaks the weekend. The tenant wants to know we have heard them, the contractor needs to be told the right thing, and somebody needs to spot the difference between "the tap is dripping" and "the kitchen ceiling has come down". On Monday morning a property manager opens an inbox of forty messages, some are duplicates of the same property, some are emergencies that should have been called in on Saturday, and the rest are sitting in the same flat queue as a request for a new shower curtain. By the time everything is triaged and the right contractor has been emailed it is Tuesday afternoon and the tenant has spent a weekend wondering whether anyone is listening.
How GloriaMundo Solves It
We build a workflow that watches a dedicated maintenance inbox. An LLM step extracts the tenant, the property, the trade category, the urgency band, and a clean one-sentence summary from whatever the tenant has typed — and an integration step then matches the property against our portfolio sheet so we know which contractor pool to draw from. A code step checks the open-jobs sheet for an existing case at the same property in the same trade in the last fortnight so a tenant chasing their own previous email does not produce a second job and a second contractor visit. For a confirmed new case, we allocate a job reference, look up the right contractor for the trade and region, log the job, and send the tenant a short acknowledgement automatically — the only auto-send in the workflow — confirming we have the request and what happens next. The contractor instruction is drafted in Gmail for the property manager to review, because the wording around scope and access matters and a wrong instruction costs more than the five minutes of review. A conditional step routes genuine Emergencies to the on-call Slack channel so the manager sees them inside the hour, and a 48-hour reminder drafts a polite chase if the contractor has not responded.
Example Workflow Steps
- Trigger (integration): A new Gmail message arrives at maintenance@ourdomain.com.
- Step 1 (llm): Extract tenant name, property address (matched to Properties), trade category, urgency band, summary, and access constraints from the email body.
- Step 2 (integration): Dedupe first on gmail_message_id across 'Open Maintenance Jobs', 'Maintenance Job Updates', AND 'Inbound Maintenance Mail Log' — on every hit, return the full prior-run resolution so a retry produces the same outcome the first run did: a job-tab match returns the existing maintenance_job_id (and stops); a mail-log match returns the existing log row id AND the original resolution_reason ('Unknown sender' or 'Property not matched') so the caller can re-surface the same triage outcome (and stops; the unmatched-mail branch already triaged this email on a prior run, so do not re-log and do not re-draft the manager flag). Then read 'Open Maintenance Jobs' to dedupe against any open job for the same property and trade in the last 14 days; if a match exists, append an update and stop.
- Step 3 (integration): Match the property and look up the assigned contractor from the 'Contractors' tab on (trade_category, region, active, accepts_emergency).
- Step 4 (code): Allocate the next maintenance_job_id and write the new job row to 'Open Maintenance Jobs'.
- Step 5 (integration): Send the tenant a short auto-acknowledgement confirming the job reference, trade, urgency, and what happens next.
- Step 6 (integration): Draft the contractor instruction email in Gmail with property address, tenant contact, summary, access constraints, and the job reference.
- Step 7 (conditional): If urgency is 'Emergency', post a single message in #maintenance-urgent on Slack tagging the on-call property manager; otherwise let it flow into the morning digest.
- Step 8 (integration): Set the 48-hour chase reminder — if contractor_response_received is still empty, draft a polite chase to the contractor.
Integrations Used
- Gmail — receives the tenant emails, sends the single auto-acknowledgement, and holds every contractor draft for review
- Google Sheets — Properties, Contractors, Open Maintenance Jobs, Maintenance Job Updates, Inbound Maintenance Mail Log, Maintenance Settings, and Emergency Contact tabs
- Slack — the #maintenance-urgent channel where Emergency cases surface inside the hour
Who This Is For
Letting agents and managing agents running residential portfolios of forty to a few hundred units, where the maintenance inbox is the single biggest source of weekend interruptions and where the cost of a missed emergency or a duplicated contractor visit is real money.
Time & Cost Saved
A property manager with eighty units handles roughly fifteen to twenty-five maintenance requests a week and spends three to five hours triaging, looking up contractor details, and writing the same kind of instruction emails over and over. This workflow takes the routine triage to zero and turns the contractor email into a thirty-second review. The bigger gain is the Emergency that surfaces in the on-call channel at 9pm on a Friday instead of at 9am on a Monday — that is the difference between a £200 contractor call-out and a £2,000 water-damage claim.