It's 8:50 on a Tuesday and the office manager for a 600-unit portfolio has three browser tabs open before she's finished her coffee. One is the PM software, pulled up to check a lease. One is a group text with a plumber who hasn't confirmed tomorrow's appointment. One is her own phone, where a tenant in Unit 14B has texted twice asking if anyone's coming about the heat. None of this is complicated work. All of it is happening instead of the leasing calls, the renewal paperwork, and the owner report that were supposed to get done today.
That scene repeats at almost every property management company under a few thousand units. Maintenance coordination isn't a system, it's a person, usually one or two of them, standing in the middle of every tenant, every vendor, and every owner, relaying information by hand because nobody built anything to do it for them. It's not that the work is hard. It's that there's a lot of it, it never stops, and every single request needs the same person in the loop.
What We Actually Believe
There's a version of "AI for property management" that's a chatbot on your resident portal, trained to answer "what's your pet policy" and "when is rent due." It's genuinely fine at that. It is completely useless the moment a tenant needs an actual work order opened, a vendor actually dispatched, or a status actually checked, because it was never built to touch your PM software, and the tenant ends up calling the office anyway.
We don't think that's the interesting problem. The interesting problem is the manual relay work between the systems and people who already exist: the tenant who reports the issue, the PM software where the unit and lease live, the vendor who has to actually show up, and the owner who wants to know what's happening without asking. An agent that automates that relay changes what your day looks like. A chatbot that answers a policy question does not.
So we don't build a new portal, a new dashboard, or a new app for tenants to download. We build agents that answer the phone and text lines you already have, read and write directly to AppFolio, Buildium, Yardi, or whatever you run, and coordinate with vendors over the same channels they already use, so the only thing left for a person to do is the judgment call.
The Numbers That Should Bother You
Start with when requests actually arrive. A meaningful share, often close to a quarter, of maintenance requests come in outside normal office hours: evenings, weekends, the exact windows when nobody's watching the phone. Most offices handle that with a voicemail greeting and a promise to call back Monday, which is a reasonable-sounding policy right up until the request is a burst pipe instead of a squeaky door.
Then there's the dispatch gap. Once a request is logged, it typically still takes two to three days to get a vendor actually confirmed on-site, not because the work is scarce, but because getting there means a coordinator calling around a mental list of who's usually available, then confirming with the tenant, then following up to see if it actually happened. None of those steps require judgment. All of them require someone's attention, repeatedly, for every single work order.
The communication load compounds on top of that. A tenant who hasn't heard anything in a day or two doesn't wait patiently, they call or text to check in, which means the same coordinator answers the same "any update?" question multiple times per work order, on top of doing the actual coordinating. Owners ask a version of the same question, just less often and with higher stakes attached.
And almost nobody is looking at the pattern underneath all of it. A unit with three plumbing calls this year looks, in most systems, like three unrelated tickets, not one deferred repair. By the time that pattern is obvious, it's usually because the fourth call was an emergency, not because someone caught it on the third.
1. Intake: The Request That Arrives When Nobody's Watching
What happens today: a tenant calls, texts, or submits a portal ticket. If it's during business hours, someone reads it, decides how urgent it is, and logs a work order. If it's after 6pm or on a weekend, it usually just waits, regardless of what it actually is.
What it looks like with an agent: the Maintenance Intake Agent answers the moment the request comes in, any hour, and asks the same triage questions a good coordinator would, what's broken, how bad is it, can someone grant access. It tells a no-heat emergency from a routine repair and escalates accordingly, then opens a work order in your PM software with the unit, lease, and tenant contact already attached, so nothing's waiting for someone to notice it.
2. Dispatch: The Vendor Call Nobody's Made Yet
What happens today: a work order exists, but someone still has to decide who to call, actually call them, confirm availability, coordinate access with the tenant, and check back later to see if the job happened. That's most of a coordinator's day when a handful of work orders are open at once.
What it looks like with an agent: the Vendor Dispatch Agent matches the work order to the right vendor by trade, coverage area, and past performance, sends the job details directly, and confirms the appointment with both sides. Anything above your approval threshold routes to a manager with the quote attached, so a coordinator is deciding in seconds, not chasing an invoice after the fact.
3. Updates: The Question You Answer the Same Way Every Time
What happens today: a tenant who hasn't heard anything assumes nothing's happening, so they call or text to check, and a coordinator answers the same question they've already answered for five other work orders that week. Owners ask a quieter version of the same thing.
What it looks like with an agent: the Tenant & Owner Update Agent sends a message at each real milestone, request received, vendor scheduled, job complete, before anyone has to ask. Owners get a rolling digest instead of a phone call. The "any update?" text mostly stops arriving, because the answer already did.
4. Insights: Catching the Pattern Before It's a Capital Expense
What happens today: work orders close and get filed one at a time. A unit with repeated small repairs looks like a series of unrelated tickets, because nobody's reviewing closed work orders against each other, only against themselves.
What it looks like with an agent: the Work Order Insights Agent reviews every closed ticket, tags root cause, and rolls it up by unit and vendor, so a repeat issue gets flagged on the third related call instead of the seventh. It also scores vendors on cost, response time, and repeat-visit rate, so renewal decisions are based on a record instead of a memory.
How We Actually Build This
Build inside the systems you already have open, not a new portal. If tenants have to download an app or your team has to learn a new dashboard, adoption stalls immediately. Every workflow above works inside your existing phone lines, resident portal, and PM software.
Escalate the judgment calls; don't try to remove a person from the loop entirely. The goal isn't zero human involvement, it's making sure the only work orders reaching a person are the ones that actually need a decision, a cost approval, an angry tenant, a repair that's more complicated than it looked.
Write back to the system of record, not just to a message thread. A dispatched work order has to actually update in your PM software, not just get confirmed in a text chain with a manual entry still owed later. Half-automation that leaves a step for someone to finish elsewhere isn't automation.
Start with the single bottleneck costing the most time, not full coverage on day one. For most portfolios that's after-hours intake or vendor dispatch, whichever is eating more of a coordinator's week, and expanding from there once it's proven.
Where These Projects Actually Fail
The most common failure is shipping something that can log a request but can't actually coordinate the vendor or the tenant, which just moves the manual work downstream instead of removing it.
A second failure is never writing down the judgment calls a coordinator already makes by instinct, what counts as an emergency, what cost needs owner approval, which vendors get first call. Without that, an agent either guesses wrong or escalates almost everything, which looks automated but saves no time.
A third is treating go-live as the finish line. Without something reviewing outcomes the way the Work Order Insights Agent does, a misrouted vendor or a missed pattern can run for months before anyone notices, because the whole point was that nobody was reviewing every closed ticket in the first place.
A fourth is trying to automate intake, dispatch, updates, and insights all at once before any single one has proven its value, which makes it hard to tell which workflow actually moved the number once several launch together.
Where to Start
You don't need a written maintenance process to start, most portfolios we work with don't have one. What you need is an honest look at where the coordination time actually goes: how much is after-hours, how much is spent chasing vendors, how much is spent re-explaining status to tenants and owners who already asked once.
The portfolios that get the most out of this don't automate everything on day one. They fix the highest-cost bottleneck, usually after-hours intake or vendor dispatch, prove it's working, and expand from there. If you want to see where your own team's time is actually going, that's the conversation worth having before you build anything.