Skip to main content
DoneThat

AI Adoption GuideHospitalityReturn

Corporate account re-engagement agent

Agentic system identifies dormant B2B accounts and initiates outreach with a tailored stay proposal.

Hospitality processBookConfirmPrepareArriveStayDepartReviewReturn

By Don, DoneThat’s AI coach · updated

Treat the output as a draft the hotel still owns

A corporate re-engagement agent prepares a stay proposal for a dormant B2B account. It does not open the mailbox, place a call, or mark the account as contacted. Sales or the GM reads the draft, fills anything the file could not support, and sends.

The quality bar is narrow. The draft must cite two things that already exist in the account file: evidence the account is dormant, and the vintage of the last stay. If either cite is missing, that sentence stays empty. Occupancy and ADR do not belong in the outreach. Inventing them to make the letter feel current is a failure, not a convenience.

Auto-initiate is off. A scored or flagged account can enter a queue. A person still decides whether the hotel speaks.

Load the account before any sentence is written

Pull the account as a file, not as a vibe. The minimum load is the legal or trading name, the booking entity if it differs, the last in-house stay date and which system recorded it, what that stay was (group, negotiated, or transient corporate), and any open, expired, or missing contract note. Property systems in this class (Oracle Hospitality, Mews, Revinate) already hold pieces of that file. The agent reads what those systems stored. It does not rank them, and it does not invent fields they left blank.

If last-stay vintage only exists as a PMS reservation date, cite that date and name the system that holds it. If dormancy is simply no production after that stay, cite the gap the same way: last recorded stay, then silence. Do not upgrade silence into a story about rate, service, or a competitor.

Load related return signals only as context for the queue, not as copy for the letter. A return propensity scorer can tell you the account is worth a look. A win-back segment prioritizer can tell you this account sits in a segment you meant to work this week. Neither score is a last-stay cite. Do not paste a score, a rank, or a segment label into the email.

Loyalty context retrieval belongs in the load if a booker or traveler on the account has a program profile the hotel is allowed to use. Status and individual stay history can support a sentence once the account-level last stay is on the page. They cannot replace it. A booker's elite status is not evidence that the company is dormant, and it is not a substitute for the last in-house date on the master account.

When CRM and PMS disagree, load both records into the draft header for the sender. Do not pick a winner in the body. Sales or the GM resolves the conflict before anyone hits send.

Cite dormant-account evidence and last-stay vintage

Write the draft so a skeptical GM can audit it in one pass. Every claim that the account went quiet should point at a date and a source. Every mention of the last stay should name the vintage (month and year is enough) and what kind of stay it was, if the file says so.

Allowed shape: the hotel has no recorded stay for this account since [month year], per [system]. The last file on the books was [stay type], billed to [entity], booked by [name if present]. The proposal that follows may reuse only facts already in that file: room-type family, billing setup, contracted pattern, booker name.

Disallowed shape: outreach that never names the last stay; a greeting that implies a recent visit the file does not show; a "we miss you" line with no dormant-account evidence; a proposal that quotes house occupancy, ADR, or "we have space this week" without a live, person-confirmed inventory check.

Illustrative walk-through, not a result and not a named property: a regional services firm last shows as in-house in March 2025, eighteen rooms on a midweek shoulder, billed to a corporate master. No RFP, no production, and no contracted pickup appear after that stay. The draft can say the hotel has no recorded stay for the account since March 2025, and that the last file on the books was that midweek block. It can offer a tailored stay proposal for a similar pattern only if the proposal uses facts already in the file. It cannot say the house is light on Tuesdays, quote an ADR, claim the firm "usually" produces a volume the file does not show, or invent a reason they left.

If the last stay is on file but the booker is not, greet the account, not a guessed first name. If the stay date is on file but the room count is not, cite the date and leave the size blank. If dormancy is only "the account dropped off a production list" with no stay date, do not write "since your last stay." Leave that slot empty, or write that the file does not carry a last-stay date.

A hyper-personalized re-engagement generator can shape tone and offer structure once the cites are locked. Personalization without the last-stay vintage is a different letter. It is not this job. Do not let a fluent paragraph hide a missing cite.

Leave blanks when the file is thin

Empty stays empty. The draft is allowed to look unfinished. A blank after "Last recorded stay:" is correct when the PMS and CRM disagree or both are silent. Filling it with a season, a guess from the sales pipeline, or a date copied from a similarly named account is the same class of error as inventing occupancy.

Thin-file patterns to keep blank rather than "help":

The CRM has a company name and a cold owner, and the PMS has no matching profile. Do not stitch a last stay from a lookalike account.

The PMS has a last stay and the CRM has a do-not-contact or lost-to-RFP note. Surface the note in the draft header for sales. Do not write around it in the body as if the hotel were simply checking in.

The last stay is older than current staff memory and the only note is a rate code. Cite the rate code and the date. Do not narrate why they left.

Production went quiet but the last stay date never landed in either system. You may say the file shows no in-house stay on record. You may not invent a vintage to make the sentence scan.

When a field is blank, the sending instruction is also blank on that point. Sales can ask the account. The agent cannot. A polished letter with unsourced dates is worse than a short letter with holes, because the holes are honest and the polish is not.

Sales or the GM still sends

Queueing, scoring, and drafting are not outreach. Treating the draft as sent is the failure that follows a missing last-stay cite. If the agent writes to a mailbox, logs a touch, or starts a sequence because a score crossed a line, the hotel has auto-initiated. That is out of scope. Sales or the GM still sends, from their own channel, on their own signature.

House performance does not ride along to create urgency. Occupancy, ADR, and "we have space" claims that did not come from a live, approved inventory check stay out of the draft. If the hotel wants to mention availability, the person confirms it at send time. The agent does not forecast the week.

Before send, the person checks four things. The dormant-account cite is true in the system they trust. The last-stay vintage matches that system. Every blank is still a blank, not a guess. The message has not already gone out through another sequence or another seller. Then they send, or they do not.

The loop does not change when the queue is full: load the account, draft with cites, leave blanks, sales sends.

Is this worth automating for you?

Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other. This one is rated high effort to implement, so the baseline matters more than usual.

DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.

Measure the baseline first