# Tenant maintenance requests by text n8n template

> Tenants text a maintenance number. A keyword rule catches gas, smoke, fire and carbon monoxide before any AI, sends a scripted safety reply and pages on-call. Other requests are classified by Claude into trade, priority and a technician summary, matched to your preferred vendor, logged as a work order row and answered in the tenant's language. You need n8n, Twilio, Google Sheets, an Anthropic API key and Slack.

- Platform: n8n
- Download: https://www.lumeor.studio/templates/n8n/automate-tenant-maintenance-requests.json
- Trigger: Webhook, Twilio incoming SMS to your maintenance number
- Credentials needed: Twilio, Google Sheets OAuth2, Anthropic API, Slack
- Full guide: https://www.lumeor.studio/guides/automate-tenant-maintenance-requests/
- Last updated: 2026-10-14

## What this workflow does

1. **Tenant text (Twilio)** (Webhook) receives the text and any photo links.
2. **Normalize and emergency screen** (Code) runs a fixed keyword rule first. Gas, smoke, fire, carbon monoxide and sparking are life-safety. Flooding, leaks through a ceiling, sewage, no heat and lockouts are urgent. Opt-out words are noted so the workflow never replies to them.
3. **Find tenant by phone** (Google Sheets) matches the number to a tenant, property and unit.
4. **Route and build prompt** (Code) decides the path. Life-safety texts skip the model entirely.
5. **Route request** (Switch) sends life-safety texts to **Twilio: reply to tenant** (the scripted safety message) and **Slack: page on-call** at the same time, unknown numbers to the exceptions channel, and the rest to classification.
6. **Claude: classify request** (HTTP Request) returns trade, priority, a two-line summary, location, start time, entry permission, pets, missing details and a reply in the tenant's language, as strict JSON.
7. **Parse and pick vendor key** (Code) handles `refusal`, `max_tokens` and API errors with a safe fallback, and never lets the model downgrade an urgent keyword hit.
8. **Find preferred vendor** (Google Sheets) looks up the vendor and not-to-exceed amount for that trade and property.
9. **Append work order** (Google Sheets) writes the work order as "Ready" or "Needs review" with reasons. **Twilio: reply to tenant** confirms the request or asks for one missing detail.
10. **Slack: maintenance exceptions** gets unknown numbers and failed sends.

## Before you import

- A Twilio number for maintenance texts and an Anthropic API key.
- A Google Sheet with Tenants, Vendors and Work orders tabs, and a Slack app with `chat:write`.
- If you want work orders created in your PM software, check your API access. Buildium publishes an API that is available on certain plans; AppFolio and Yardi usually require partner or customer-specific approval.

## Setup

1. Build the three tabs. Use E.164 phone numbers and add the column headers shown on the **Append work order** node.
2. Set the Twilio number's incoming message webhook to the production URL.
3. With your maintenance lead, review `LIFE_SAFETY`, `URGENT` and the scripted safety reply, and replace `REPLACE_WITH_EMERGENCY_PHONE`.
4. Replace `REPLACE_WITH_SHEET_ID`, `REPLACE_WITH_TWILIO_NUMBER`, `REPLACE_WITH_ONCALL_CHANNEL_ID` and `REPLACE_WITH_MAINTENANCE_CHANNEL_ID`.

## Test it

Text "I smell gas" from a test number and confirm the safety reply and the on-call page arrive within seconds, with no model call. Text a leaky sink in Spanish with a photo and check the work order row and the Spanish reply. Text from a number not in the Tenants tab and confirm it lands in Slack.

## Make it production-ready

- Replay a few months of real past messages through the keyword screen. A chirping smoke alarm battery will page on-call, which is the right side to err on.
- Replace the sheet append with a call to your PM software's work order API once you trust the classification, or keep the sheet as a review queue.
- Add owner approval above a dollar threshold, vendor dispatch and reminders, and follow your state and local entry notice rules.
- Add an error workflow, and limit follow-up questions to a few before creating the work order anyway.
- `claude-haiku-5-5` is a cheaper option at high volume.

Read the full guide at [How to automate tenant maintenance requests](/guides/automate-tenant-maintenance-requests/), or [talk to us](/start/) about connecting your PM software.

---

Source: https://www.lumeor.studio/templates/automate-tenant-maintenance-requests/
Published by Lumeor Studio, Newtown, PA. hello@lumeor.studio. Get a written scope: https://www.lumeor.studio/start/
