← Engineering

· 5 min read · Akshay Panchavati

First real maintenance request went through my AI landlord assistant end to end

The first real request, run start to finish. Unedited · 0:43

By day I'm an AI engineer, by night I manage a small rental. The part of landlording that eats my evenings isn't repairs — it's being the go-between. Tenant says the faucet's leaking, I call my plumber, he gives me a time, tenant can't do it, I go back to the plumber, round and round. Then a week later I'm not sure anyone fixed it.

I've been building Doot to run that loop over SMS and voice. The video above is the first request I ran through it start to finish (names changed). Tenant texts the issue, Doot asks her for windows, texts my plumber, matches the two, confirms with her before the plumber hears anything, then comes back to me.

The four gates

The decision I'm most attached to: I don't trust an LLM to act on its own with my tenant or my contractor, so it stops and waits for me at four points. I clear each one with a tap or a text reply.

  1. Is this actually an emergency?

    Before anything else goes out, I confirm the request is real and triaged correctly.

  2. OK to text the tenant?

    Doot doesn't reach out to a tenant on its own — I approve the first contact.

  3. Confirm this booking?

    Once a tenant window and a contractor slot line up, I sign off before it's locked in.

  4. Confirm it's fixed?

    The loop doesn't close itself. I'm the one who says the job is actually done.

The whole thing is a state machine where each gate is a wait state that unblocks on a webhook.

What's not done

Calendar invites are still a "coming soon" button, and I haven't decided what happens when someone just stops replying mid-loop.

The open question

Which is my question for other people building multi-party agents: when one human goes silent — tenant never answers, plumber reads the text and ghosts — do you hand it back to the human, retry on another channel, or time it out and close? I'm leaning toward "nudge once, then hand it back to me," but I'd rather hear what's actually worked for you.

Have a take? Reply at marcher@yaswedo.com.

Free while it's in beta if any landlords here want to run a real request through it.

Try Doot Free

Stack is FastAPI, Next.js, Postgres, Twilio, Retell if anyone's curious.