The 23:04 Tuesday text is the boutique operator's boogeyman. You just stepped off the dinner reservation. Six listings are active; one of you, one manager, two part-time contractors. The guest at the Loft just pinged: "the keypad is dead, can't get in, traveling with my elderly mom." Tuesday 11pm means no one on staff is awake enough to thread "where do we keep the spare lockbox code" → "where do I send it." By the time the boutique operator opens the thread Wednesday morning, the guest left a one-star review at 23:51 and is rebooking elsewhere. Roostr's overnight inbox is the answer — the second of the four Auto/Manual surfaces, and the one that handles the Tuesday 11pm guest text in your tone, escalates anything refund-sized, and emails the manager a one-line morning brief at 06:00.
What Roostr's overnight inbox actually is
The overnight inbox is the second Auto/Manual surface on the operations crew, alongside Nightly repricing, Frictionless turnovers, and Review-driven maintenance. It watches the inbound text channel for every active listing, classifies each message by intent, runs it through the host-set policy, and emits a reply — in your tone — within a single minute of the inbound. Anything the host's policy escalates queues on the morning brief, never on the inbox.
- Inbound text classified by intent before the policy reads. A door-code failure routes through the door-code fallback path; a late-checkin ask routes through the late-checkin path; a refund request routes through the escalation path. The agent reads the message in two passes — intent first, policy second — so a single thread never accidentally pulls a door-code answer onto a refund thread.
- Reply in your tone, inside your policy cap. The agent replies in the tone the host set on day one, with the floor and ceiling the host wrote. A host who wrote "warm, soft apologies, never 'we apologize for the inconvenience'" gets warm, soft apologies. A host who wrote "factual, short, never 'we hope you enjoyed your stay'" gets factual, short replies. The reply never crosses the tone guardrails the host earned by reviewing thirty replies.
- Anything matching an escalation rule parks on the morning brief, not the inbox. A refund request, a vulnerable-guest mention, a complaint on the post-checkin window, a maintenance signal "the AC just died" — anything the host's escalation rule catches lands on the manager's morning brief, not on a guest reply. The agent reads the rule, applies it, parks the row, and emails the manager a single digest at 06:00.
- Reply inside the host-set response budget. A door-code reply inside sixty seconds; a late-checkin reply inside ninety; a refund-shaped message inside thirty seconds but the reply itself is held until the manager approves. The agent's job is to keep the reply inside the budget; the policy is what the agent keeps the reply inside of.
The five-step text-to-reply loop
Each Tuesday 11pm guest thread completes the same five-step path from inbound text to either an out-of-band reply or a morning-brief escalation. The classification model is the same one the other surfaces share — pricing compset parsing, turnover checkout-detail extraction, maintenance review-signal parsing — so the type-level trust a host has earned on those surfaces transfers to the inbox on day one.
- Message arrives, classified into one of eight intents. Door-code failure, late-checkin, pet-fee question, parking, Wi-Fi, refund request, complaint, vulnerable-guest mention. The classifier emits a structured `{intent, confidence}` pair; the policy reads the structured pair, not the raw text.
- Confidence above the per-intent threshold → reply draft inside the reply budget. A 0.93 confidence on door-code failure with a single-keypad-mention message generates a reply inside the 60-second budget. The reply carries the host-set fallback-code (the lockbox code, never the live door code), a short apology, and a contact-channel handoff.
- Confidence below the threshold OR escalation rule trips → morning brief row. A vulnerable-guest mention inside any thread short-circuits to the manager's brief, even if the door-code classifier is high-confidence. The reply draft still completes, but the row parks on the morning brief with the vulnerable-guest flag the manager reviews before sending.
- Reply sent within budget; row logged to the inbox audit log. Every outbound reply carries an audit row: inbound message id, intent, confidence, reply text, response time. The inbox audit log is the same audit log the pricing, turnover, and maintenance rows carry — one log, one query, one weekly review.
- The host reviews the morning brief at 06:00, not the inbox. The agent never tells the host to read the thread — the agent tells the host what's on the brief. The inbox tab stays empty; the morning brief carries the row without weeknight intervention.
A date-stamped Tuesday 11pm walkthrough
The walkthrough is the boutique operator stepping off the dinner reservation Wednesday morning, opening the morning brief at 06:14, and dispatching the manager's call to the guest without re-reading the Tuesday thread. The brief is the same shape Monday through Sunday — one row per escalatable thread that night, regardless of which intent the original message carried.
- Tuesday 23:04, the guest at the Loft pings. "the keypad is dead, can't get in, traveling with my elderly mom." The classifier reads door-code failure at 0.96 confidence, vulnerable-guest mention at 0.99 on the second-pass guard. The reply draft generates inside sixty seconds — fallback lockbox code, soft apology, manager-contacts-you-in-the-morning closer — but the escalation rule short-circuits the reply send. The audit row writes to the inbox log at 23:04:18.
- Tuesday 23:07, the guest at the Courtyard pings. "wifi password?" Wi-Fi intent, 0.99 confidence, no escalation rule trips. Reply goes out at 23:07:11 inside the 90-second budget. The reply carries the host-set Wi-Fi password, a single welcoming sentence, no apology. The audit row logs the reply and the response time.
- Tuesday 23:14, the guest at the Garden Studio pings. "can we check in an hour late?" Late-checkin intent, 0.91 confidence, but the late-checkin policy reads as Auto below ninety minutes and Manual above. Ninety-three minutes is over the line — the row parks on the morning brief, the reply draft completes inside ninety seconds but does not send. The audit row logs the held reply and the Manual-mode reason.
- Tuesday 23:42, the guest at the Loft pings again. "lockbox worked, thanks!" The classifier reads confirmation at 0.97, no escalation, no outbound reply needed. The audit row logs the inbound-only entry. The morning-brief row clears the vulnerable-guest flag — its escalation was resolved by the guest's followup.
- Wednesday 06:00, the manager opens the morning brief. Two rows from Tuesday night: the Garden Studio late-checkin hold (ninety-three minutes over the line) and the Loft vulnerable-guest flag (resolved Tuesday 23:42). The brief emails a one-line summary and an open-the-app link. The manager reads the rows, opens the Loft thread for the day-of-arrival check, and approves the Garden Studio late check-in on the audit row's tap.
Built for boutique operators
Parity across every channel, at scale.
A 30-key roster that needs nightly repricing on every listing, in-tone inbox replies, photo-verified turnovers, and a maintenance queue that graduates only the signals that cross the threshold.
Why this is the second Auto/Manual surface
The outgoing-reply posture inherits from the Auto/Manual pillar in the same way maintenance inherits: every Auto-mode reply is logged with the same itemized receipt a human would write, every Manual-mode reply queues on the morning brief for tap-or-skip, and the host flips the row the morning math moves. The overnight inbox is Auto where the host has earned the trust, and Manual where the policy escalates.
- Default is Auto on the eight factual intents. Door-code, late-checkin, Wi-Fi, parking, pet fee, arrival instructions, checkout time, neighbor courtesy — eight intents where the policy is unambiguous enough that Auto is safe on day one. The default badge ships Auto on these eight, with the response budget the host writes on day one.
- Manual default on refund, complaint, and vulnerable-guest mentions. Three intents the agent never replies to without manager sign-off. Refund defaults to Manual because the dollar sign matters. Complaint defaults to Manual because the apology writes better when the manager's voice is in the loop. Vulnerable-guest defaults to Manual because the dispatcher-to-guest handoff is the manager's call.
- A flip moves the row to Auto above a confidence threshold. A manager who has reviewed thirty replies and accepted the agent's confidence reads on the eight factual intents has earned the Auto flip on the row. The flip is durable across the nightly run. The flip is reversible in one tap on the morning brief.
- A wedding weekend flips the vulnerable-guest row Auto for the duration, then back. A boutique operator running the wedding weekend flips the vulnerable-guest Manual row to Auto-with-low-threshold for Saturday and Sunday — every mention surfaces, the manager is in the loop, the flip decays back to its tuned Auto on the Tuesday after the lift. The flip is durable across the weekend; the flip is reversible in one tap.
What changes on the boutique operator's Wednesday morning
The Tuesday 11pm text never had to reach the boutique operator's eye. The reply went out within the host-set response budget, the escalation row parked on the manager's morning brief, and the boutique operator opened the brief Wednesday at 06:14 instead of the thread itself. The thread tab stayed empty; the morning brief carried the row without weeknight intervention.
- The Loft keypad text never had to reach the manager's phone at 23:04. The reply generated inside sixty seconds, the vulnerable-guest flag short-circuited the send, the audit row logged the held reply and the escalation reason. Wednesday's morning brief carried the resolved row; the boutique operator opened the brief Wednesday 06:14 instead of the Tuesday thread.
- The Garden Studio late-checkin row parked for the morning. The classifier read ninety-three minutes over the line, the row held the reply, the audit log wrote the held reply and the Manual-mode reason. Wednesday's morning brief carried the row; the manager approved the late check-in Wednesday 06:14 in one tap.
- The audit log carries the same itemized receipt the pricing, turnover, and maintenance rows carry. Inbound id, intent, confidence, reply text, response time, escalation reason. The four surfaces read as one log; the manager's weekly review reads as one query.
- The Tuesday evening stayed at the dinner reservation. The boutique operator closed the dining tab at 23:38, the agent wrote the audit row at 23:42, the morning brief emailed at 06:00. The Tuesday evening did not pivot on the thread; the Wednesday morning pivoted on the brief.
Closing — the after-hours row on the same crew
The full overnight-inbox loop lives on the pricing page alongside the per-listing and per-roster plans. The boutique-operator form of the loop — the same Tuesday 11pm after-hours thread on a 30-key roster — is the segment landing at For boutique operators. The comparison of Roostr with separately managed tools lives on /compare, and the full Auto/Manual matrix on which intents flip Auto and which stay Manual is the workflow explainer at how Roostr runs the week. The parallel after-hours pillar — review-driven maintenance, where the signal sits in the review stream for three days — lives on the review-driven maintenance walkthrough. The full inbox pillar — every intent, every policy cap, every flip — lives on the 24/7 inbox auto-reply pillar.
Built for boutique operators
Parity across every channel, at scale.
A 30-key roster that needs nightly repricing on every listing, in-tone inbox replies, photo-verified turnovers, and a maintenance queue that graduates only the signals that cross the threshold.
If you want the overnight inbox running on your roster — every intent classified, every reply in your tone, every escalation as a one-line morning brief — [Join the Roostr waitlist →](/waitlist).