Most "AI for property management" pitches start with a model that reads a leasing manager's inbox and "helps them keep up." That's fine until you realize the bottleneck isn't reading — it's that a leaky faucet, a dead furnace in January, and a "the porch light is out" all arrive at the same address, in the same font, with the same level of zero structure, and somebody has to decide which one is an emergency before a tenant is sitting in the cold.
So let's not point a model at a human's mailbox. Let's give the property its own mailbox — [email protected] as a first-class participant that receives every tenant request, decides how urgent it actually is, drops it in the right priority queue, loops in the right vendor, and emails the tenant a status update from the property's own address. No shared inbox, no human triaging at 11pm, no "did anyone see this one?"
I work on the Nylas CLI, so the terminal commands below are the exact ones I reach for when I stand one of these up. Every concrete step gets the two-angle tour: the raw curl call and the nylas command that does the same thing.
What you actually get
An Agent Account is, underneath, just a Nylas grant with a grant_id. That's the whole trick, and it's worth sitting with: there's nothing new to learn on the data plane. Every grant-scoped endpoint you already know — Messages, Drafts, Threads, Folders, Attachments, Contacts, Calendars, Events — works against this grant exactly the way it works against a Gmail or Microsoft grant you got through OAuth. The provider is nylas instead of google, and that's the only difference your code sees.
For a maintenance pipeline that means:
- A real send-and-receive mailbox on a domain you control (or a
*.nylas.emailtrial subdomain) — tenants email it, and replies come from it. - The standard
message.createdwebhook on inbound mail, plus deliverability triggers —message.delivered,message.bounced,message.complaint, andmessage.rejected— so you know when a status update to a tenant actually landed. - No OAuth dance, no refresh token to babysit. One API call provisions it.
The part I like as an SRE: because it's a normal grant, it slots into whatever webhook, retry, and observability plumbing you already built for human accounts. The maintenance agent isn't a special-case code path — it's another grant ID flowing through the same machinery.
Why this beats a shared inbox with rules
A property manager's first instinct is a Gmail filter or two. The reason that falls apart for maintenance is that urgency lives in the body of the message, and a folder rule can't read the body. "Hi, no rush, the cabinet door is loose" and "THERE IS WATER COMING THROUGH THE CEILING" are indistinguishable to a sender-based filter — same tenant domain, same subject-less mess.
The split that makes this work, and the single most important thing to get right:
Sender-based routing is a server-side Rule. If a request comes from a known HVAC vendor, your insurance adjuster, or the building owner, you can route it by who sent it before your app ever wakes up. That's a Nylas Rule — and Nylas inbound rules match only sender fields (from.address,from.domain,from.tld). They cannot see the subject or the body.
Urgency-based prioritization is your app's job. Deciding "ceiling leak = emergency, loose cabinet = low" requires reading the content, which a Rule structurally cannot do. So that classification runs in your application — your LLM reads the fetched body — and then you move the message into a priority folder with a plain Messages call.
Get that boundary wrong and you'll spend a weekend trying to write a Rule that "matches urgent keywords in the subject" and wondering why it never fires. It never fires because inbound Rules don't look at the subject. Keep the two halves separate and each one is simple.
Before you begin
Two things:
An API key. All requests authenticate withAuthorization: Bearer <NYLAS_API_KEY>, and the key identifies your application. Examples here hithttps://api.us.nylas.com.
A verified domain. The account lives on a domain — a custom one you register and publish DNS for, or a Nylas trial subdomain likeoakwood.nylas.email. New domains warm up over roughly four weeks, so register the production one early. The DNS walkthrough is in the — every condition field, operator, and action, and exactly which ones inbound vs. outbound rules can use.
— domains, display names, and IMAP access.- The full
nylas agentcommand set lives at
- Industry playbooks hub: https://cli.nylas.com/ai-answers/agent-account-industry-playbooks.md
SOCIAL SHARE CARD GENERATOR