Build Your Operations Agent
Your $0/hour property manager. Monitors, dispatches, communicates, and briefs you. 24/7.
The Playbook
Five workflows. Every link. 20-40 hrs/week back.
This is the most powerful agent in the stack. Five interconnected workflows that run your property operations while you sleep. Build them one at a time. Each one gives you hours back immediately.
Set up n8n, Twilio, and all your integrations
45 minThis agent runs on n8n with connections to multiple services. Get everything set up before building workflows.
n8n (your automation backbone):
- Sign up at n8n.io Cloud ↗ ($20/mo Starter plan). Or self-host with Docker: Docker install guide ↗
- Once running, go to Settings > Community Nodes and install any additional nodes you might need.
Twilio (SMS to tenants and vendors):
- Create account: twilio.com/try-twilio ↗ (free trial with $15 credit)
- Buy a phone number: Console > Phone Numbers > Buy a Number ↗. Pick one in your area code. Cost: $1.15/mo.
- Get your credentials: Console dashboard ↗ shows your Account SID and Auth Token. You'll need both in n8n.
- In n8n: Go to Credentials > Add New > Twilio. Enter your SID, Auth Token, and the phone number you bought.
Claude API (the brain):
- Get your API key: console.anthropic.com/settings/keys ↗
- Add $10 in credits: Settings > Billing ↗. This covers months of operations agent usage.
- In n8n: Add a credential for HTTP Header Auth. Name:
x-api-key. Value: your Anthropic key. You'll use this in HTTP Request nodes.
Google Calendar + Gmail:
- In n8n: Credentials > Add New > Google OAuth2. Follow the setup wizard. It will ask you to authorize access to Calendar and Gmail.
- Detailed OAuth setup guide: n8n Google OAuth docs ↗
- Note your Calendar ID: In Google Calendar, click the three dots next to your calendar > Settings > scroll to Calendar ID. It looks like
your-email@gmail.comor a long string.
Slack (for briefings and alerts):
- Create a Slack channel called
#ops-briefings - Create an incoming webhook: Slack Incoming Webhooks guide ↗
- Or use n8n's built-in Slack node: n8n Slack docs ↗
- No Slack? That's fine. Use email delivery instead. The morning briefing can go to your inbox.
Vendor Directory (Google Sheet):
- Create a Google Sheet called
Vendor Directory - Column headers (Row 1):
vendor_name | vendor_type | phone | email | hourly_rate | rating | available_hours | notes - Vendor types to include:
plumber,electrician,hvac,locksmith,pest_control,general_contractor,appliance_repair,cleaning - Add at least 2 vendors per type (backup in case first is unavailable)
- Rating: 1-5 stars based on your experience. The agent calls highest-rated first.
- Available hours: e.g.,
M-F 8am-6pmor24/7 emergency
Build Workflow 1: Maintenance Monitor and Triage
45 minThis is your highest-value workflow. It watches for tenant communications and automatically classifies, responds, and routes them. Start here.
Create a new n8n workflow: Name it Ops - Maintenance Monitor
Node 1: Email Trigger
- Add an
Email Trigger (IMAP)node. n8n IMAP docs ↗ - Connect your property management email (e.g.,
maintenance@yourcompany.com) - Set it to check every 1 minute for new emails
- If you want SMS monitoring too, add a Twilio Trigger node in a separate branch: n8n Twilio Trigger docs ↗
Node 2: Claude Classification (HTTP Request)
- Add an
HTTP Requestnode - Method:
POST - URL:
https://api.anthropic.com/v1/messages - Authentication: Use the HTTP Header Auth credential you created (x-api-key)
- Headers: Add
anthropic-version:2023-06-01andcontent-type:application/json
Body (JSON):
{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1000,
"messages": [{
"role": "user",
"content": "Classify this tenant communication and extract details.\n\nMESSAGE: {{$json.text}}\nFROM: {{$json.from}}\n\nClassify as: EMERGENCY / URGENT / ROUTINE / NON_MAINTENANCE\n\nReturn JSON: {classification, property_address, tenant_name, issue_summary, vendor_type_needed, response_urgency_hours, suggested_response}"
}]
}Node 3: Parse Claude Response
- Add a
Codenode to parse the JSON from Claude's response - Extract the classification, issue_summary, vendor_type_needed, suggested_response
Node 4: Route by Classification (IF/Switch)
- Add a
Switchnode. Route onclassification: - EMERGENCY > Immediate vendor dispatch + SMS to you + auto-reply to tenant
- URGENT > Vendor dispatch + email to you + auto-reply to tenant
- ROUTINE > Queue (log in Google Sheet) + auto-acknowledge to tenant
- NON_MAINTENANCE > Draft a response for your review (send to Slack for approval)
Node 5: Auto-Reply to Tenant
- Add a
Send Email(or Twilio SMS) node - Send the
suggested_responsefrom Claude, plus: "We've received your request. A [vendor_type] has been notified. Expected response time: [urgency_hours] hours."
Build Workflow 2: Vendor Dispatcher
30 minThis workflow auto-contacts vendors when maintenance is needed. It reads from your vendor directory, texts the best available vendor, and handles their response.
Create workflow: Ops - Vendor Dispatcher. Trigger: called from Maintenance Monitor workflow.
Node 1: Read Vendor Directory
- Add a
Google Sheetsnode. n8n Google Sheets docs ↗ - Operation: Read rows
- Filter:
vendor_typeequals the type needed (from the triage step) - Sort by
ratingdescending (best vendor first)
Node 2: SMS Vendor via Twilio
- Add a
Twilionode. Operation: Send SMS. - To: vendor's phone number from the sheet
- Message template:
Hi {{vendor_name}}, this is an automated dispatch from [YOUR COMPANY].
{{classification}} {{vendor_type}} issue at {{property_address}}.
Issue: {{issue_summary}}
Can you respond within {{response_urgency_hours}} hours?
Reply YES to accept or NO to decline.Node 3: Wait for Vendor Response
- Add a
Waitnode. Set to 30 minutes. - After the wait, add a
Twilio Triggerthat listens for the vendor's reply. - If reply contains "YES" > Confirm to tenant, log the dispatch, notify you
- If reply contains "NO" or no reply > Contact the next vendor on the list (loop back to Node 2 with the next vendor)
- If all vendors decline > Send you an urgent notification: "No vendor available for [issue] at [property]. Manual intervention needed."
Node 4: Confirm to Tenant
- Once a vendor accepts, send the tenant: "Good news! [Vendor Name] will be responding to your [issue] within [X] hours. They can be reached at [vendor phone] if needed."
Node 5: Log the Dispatch
- Add another
Google Sheetsnode. Append a row to aMaintenance Logsheet. - Columns: date, property, unit, issue, classification, vendor_assigned, status, cost_estimate
- This becomes your maintenance history. Invaluable for annual reviews and insurance.
Build Workflow 3: Morning Briefing
20 minEvery morning at 7 AM, this workflow collects the last 24 hours of activity and synthesizes a briefing. This is the one you'll love most.
Create workflow: Ops - Morning Briefing
Node 1: Schedule Trigger
- Add a
Schedule Triggernode. Set to every day at 7:00 AM your timezone. - n8n Schedule Trigger docs ↗
Node 2: Collect Data (multiple sources in parallel)
- Google Sheets: Read the Maintenance Log. Filter: last 24 hours.
- Google Calendar: Get today's events.
- Gmail: Count unread property-related emails.
- Your PM software (if it has an API): Pull rent payment status, open work orders.
- Use a
Mergenode to combine all data into one payload.
Node 3: Claude Synthesis
- Send all collected data to Claude with this prompt:
You are my operations chief of staff. Compile this data
into a concise morning briefing. Lead with anything that
needs my immediate attention.
Format:
🔴 NEEDS YOUR ATTENTION (items requiring my decision)
🟡 IN PROGRESS (items the system is handling)
🟢 COMPLETED (items resolved since yesterday)
📊 NUMBERS: Rent collected, outstanding, maintenance spend
📅 TODAY: Calendar summary with prep notes
💡 ONE THING: What I should prioritize today
Rules: Under 300 words. No fluff. I read this before coffee.Node 4: Deliver
- Slack: Post to
#ops-briefingschannel via Slack node or webhook - Email: Send via Gmail node. Subject:
Morning Briefing - {{date}} - SMS (abbreviated): Send a 2-line version via Twilio: "3 items need attention. 2 maintenance in progress. Check Slack for details."
Build Workflow 4: Calendar Guardian
20 minThis workflow watches your calendar and protects your time. It runs every 2 hours during business hours.
Create workflow: Ops - Calendar Guardian
Node 1: Schedule Trigger
- Run every 2 hours, only during 8 AM - 6 PM on weekdays
- In the Schedule Trigger, you can set cron:
0 8,10,12,14,16,18 * * 1-5
Node 2: Read Today's Calendar
- Google Calendar node: Get events for today
- Include: start time, end time, title, description, attendees
Node 3: Claude Analysis
Review my calendar for today. My preferences:
- Protect 12-1pm for lunch (non-negotiable)
- Need 15 min buffer between meetings
- Focus blocks on [Tuesday/Thursday mornings] (no meetings)
- Max 3 hours of back-to-back meetings
Check for:
1. Back-to-back meetings with no buffer
2. Missing lunch break
3. Meetings during my focus blocks
4. Conflicts or double-bookings
If issues found, suggest specific changes.
Format: {issues: [...], suggested_changes: [...]}Node 4: Apply Changes (with confirmation)
- If Claude finds issues, send you a Slack message: "I noticed you're back-to-back from 9 AM to 2 PM with no lunch. I'd like to move your 12:30 internal sync to 2:15 PM. Reply OK to confirm."
- On confirmation: Use Google Calendar node to update the event
- If no issues: do nothing. Silent when everything's fine.
Test each workflow, then go live one at a time
OngoingDon't turn everything on at once. Deploy one workflow per day. Monitor it. Fix issues. Then add the next.
Recommended deployment order:
- Day 1: Morning Briefing. Lowest risk, highest visibility. You'll see it every morning and can assess quality immediately.
- Day 2: Calendar Guardian. Low risk, saves 30+ minutes of scheduling overhead daily.
- Day 3: Maintenance Monitor. Medium risk. Start with classification + auto-acknowledgment only. Don't auto-dispatch vendors yet.
- Day 4: Vendor Dispatcher. Connect it to the Maintenance Monitor once you trust the classification accuracy.
- Day 5: Tenant Comms templates. Add as you encounter recurring communication patterns.
Testing checklist per workflow:
- Trigger it manually 3 times with test data
- Check every output: Does the email look right? Did the Sheet update? Did the SMS send?
- Test edge cases: What happens with empty data? What if Claude's response is malformed? Add error handling.
- Monitor the first 5 real triggers. Watch for: wrong classifications, bad vendor matches, formatting issues.
Ongoing refinement:
- Every Friday: Review the Maintenance Log. Are classifications accurate? Adjust Claude's prompt.
- Every month: Review vendor response rates. Remove vendors who decline frequently. Add new ones.
- Every quarter: Review the morning briefing format. Is it giving you what you need? Adjust the prompt.
Done For You
Get the complete Operations Agent prompt
Drop your info to unlock the full Claude Code prompt. Ready to copy and paste.
Choose wisely. One playbook per person.