back /blog
·4 min read·
AIAutomationReal EstateCase Study

// insight

How I Automated 90% of Tenant Inquiries for a Property Manager (Before/After)

A before-and-after breakdown of the AI agent that now handles 9 out of 10 tenant messages — what it does, what it doesn't, and the four edge cases that took the longest to fix.

The inbox had 47 messages waiting on Monday morning. Twenty-two were tenants asking about a leak. Eleven were lease renewal questions. Eight were noise complaints. Six were vendors following up. The property manager — call her M. — sat down at 8:00 AM, opened the inbox, and started reading.

By 10:30 she had answered six of them. By lunch, eleven. She was the only person on staff for 80 units.

That scene is what the problem looked like before the AI agent. The volume wasn't the issue. The variety was. Tenant messages aren't one thing — they're six or eight different things, each with its own downstream path. Treating them all the same way (read, think, reply) is what kills the day.

What the agent actually is

It's not a chatbot. There's no chat window. Tenants don't know they're talking to an AI. The system is a router:

  1. Intake. A webhook receives the message from wherever it originated — email, web form, SMS, in-app.
  2. Classification. An LLM call with a tight prompt returns a JSON object: { category, urgency, summary, suggested_action, fields }.
  3. Action. The system runs the suggested action — send a templated reply, file a maintenance ticket, ping a contractor, update the CRM, or escalate to a human.
  4. CRM sync. Every action is logged to the CRM with the original message, the classification, and the response. M. can see everything the agent did.

That's the whole architecture. Three integrations, one LLM call, one CRM. The agent doesn't talk — it routes.

The six categories it learned to recognise

After two weeks of looking at M.'s inbox, the categories that mattered were:

Category Frequency Default action
Maintenance request 38% File ticket, notify on-call contractor
Lease question (renewal, terms) 19% Send templated answer from the lease docs
Rent / payment 14% Send payment link, log in CRM
Noise complaint 11% Send notice to relevant unit (anonymous), log
Vendor / contractor follow-up 10% Forward to M. with a one-line summary
Escalation (legal, safety) 8% Page M., do not auto-reply

The classification is the load-bearing part. If the LLM puts a noise complaint in the "maintenance" bucket, the system files a maintenance ticket and nobody gets the warning. Bad outcome. So the prompt and the post-processing have to be tight.

The four edge cases that took the longest

1. Multi-intent messages. A tenant writes: "Hi, my kitchen sink is leaking again and I wanted to ask about renewing my lease." That's two things. The first version of the agent picked one and dropped the other. The fix: require the LLM to return an array of intents, not a single one. The action handler iterates.

2. Ambiguous urgency. "The heat isn't working." Could be "we'll get to it this week" or "there's a baby in the unit." The LLM doesn't have ground truth on the second one. The fix: any message containing a vulnerability signal — child, elderly, medical equipment, temperature extreme — bypasses the auto-routing and goes straight to M.'s phone.

3. Tone-mismatch replies. The first templated responses were too formal. Tenants read them as cold. M. asked for a less corporate tone, so we rebuilt the reply templates in plain language and gave the LLM permission to rephrase while keeping the structure. Replies now sound like a competent person, not a press release.

4. The "I want to speak to a person" case. The agent never tries to override this. If the message contains "human," "manager," "call me," or similar, the system pages M. and tells the tenant a person will be in touch. Trying to deflect this one always backfires.

What it doesn't do

  • Legal notices. Evictions, non-renewals, deposit disputes — all bypass the system and go to M.
  • Anything requiring negotiation. "Can I pay half this month and half next month?" — that's M.'s call, not a templated one.
  • New tenants. Onboarding is human. The agent handles existing tenants only.

The numbers, 90 days in

  • 90% of messages handled without M. opening them.
  • Sub-1-minute median response time, including weekends.
  • ~12 hours/week of M.'s time recovered. She spends that on unit inspections and lease renewals.
  • Zero tenant complaints about the agent. Two positive comments about "how fast your team is these days."

Takeaway

The mistake most property-tech tools make is trying to replace the property manager. You can't. The judgment — the read-the-room calls, the awkward conversations, the "this one's different" gut feeling — that's the job.

What you can replace is the triage. The mechanical act of reading a message, deciding what bucket it falls into, and running the standard playbook for that bucket. That's what the AI does. M. still does the work. She just doesn't do the sorting.


If you're a property manager reading this and want to know which other admin tasks are worth automating first, the next post is a one-week-build list: 5 Manual Tasks Real Estate Managers Can Automate This Month.

// share

NN

// author

Neeraj N.

I build the critical infrastructure that connects your entire tech stack.