Skip to main content

$ cat /proof_of_work/turnover-agent · agent · telegram bot · scheduling

Turnover Agent

A property manager's rental turnovers, run by an agent: guest checks out, the cleaner gets a Telegram message, the agent is built to track confirmation, escalate if anything stalls, and tell the manager when it's done.
Platform

Telegram bot for the manager and the cleaners (email-to-SMS as a fallback), plus a live web dashboard.

Stack

FastAPI, Supabase, python-telegram-bot, an LLM agent on the manager's side, cron watchers — on a small VPS I run.

Status

Live in production since late July 2026.

The problem. Every guest checkout starts a scramble: is the place clean before the next check-in? The manager was texting cleaners by hand, tracking replies by memory, and finding out about a missed clean when the guest was already at the door.

The build. An agent that watches the booking calendar for checkouts, then runs the loop by itself: it messages the cleaner the moment a turnover appears, reads the cleaner's tap or one-word reply, updates the state, and escalates automatically if nobody confirms in time. The manager sees everything in Telegram and on a live dashboard.

Why it's built this way. Nothing new to learn. The manager talks to a Telegram bot; cleaners tap a button or reply with one word. The agent does the chasing, the remembering, and the waking-you-up-only-when-it-matters.

The loop, in four messages

From offer to done — built so the cleaner never leaves the chat and the manager doesn't have to lift a finger unless something needs a human.

Agent messages the cleaner the turnover offer, one tap to accept
The offer lands in the cleaner's Telegram — one tap to accept
Manager asks the agent about the day; the agent answers
Manager asks; the agent answers
Cleaner confirms done; agent logs it and recaps the day
Built for a one-tap “done”
Agent answers a guest's late check-in and tells the host
Guest concierge handles the rest

Screens use sample data.

What it's built to do without being asked

Watches the calendar

Polls the booking feed every 15 minutes. A new checkout becomes a turnover automatically — no copy-pasting between apps.

Chases, politely

No confirmation? A reminder goes out. Still nothing? The escalation watcher flags it to the manager with a plain-English summary of what's stuck.

One-tap replies

Cleaners tap a button or reply with a word — “1”, “done”, “issue” — and the agent moves the turnover to the right state. The LLM sits on the manager's side, answering questions in plain English.

Answers guests

Guests who message the bot get a concierge mode: check-out times, local FAQs, and a handoff to the host when it's something real.

The manager's side

A live dashboard next to the agent: today's turnovers with cleaner status at a glance, properties with their calendar and crew.

Turnover Agent dashboard: today's checkouts with cleaner status
Today's checkouts — one glance, whole day
Properties screen with connected calendars
Properties, calendars and crews

Screens use sample data.

Why not just buy a platform?

There are good products in this space. They're built for scale, sold per seat, and shaped around their workflow. This agent is built around yours.

Cleaning marketplaces

Turno-style services connect you with their pool of cleaners, per clean. You pay per booking and — the catch — you're hiring their cleaners, not yours. If your trusted cleaner isn't on the platform, you're recruiting.

Ops suites

The big platforms (Breezeway, TIDY) bundle scheduling, messaging, checklists, and more — they're priced per property and scale up with seats and add-ons. Powerful, but you configure their system, adapt your team to it, and pay monthly for the parts you don't use.

This agent — built for you

One flat build, your cleaners reply with a tap, your calendar stays where it is, your rules drive escalation. No marketplace, no per-seat math, no monthly fee for 30 features you don't touch. When your operation changes, we change the agent — full customization is the point.

Pricing is scoped per operation — tell us what your day looks like and get a quote in one conversation.

$ echo "ready?"

If you made it this far, you already know if you want to talk.