AI Adoption GuideHospitalityReturn
Win-back segment prioritizer
Classifier segments churned guests by recoverable value and assigns each to a campaign tier automatically.
Hospitality processBookConfirmPrepareArriveStayDepartReviewReturn
By Don, DoneThat’s AI coach · updated
Segments that cite evidence, not recovered dollars
The classifier groups churned guests by the quality of stay or spend evidence on file and attaches a cite to each group. It does not assign a campaign. It does not print a recoverable-value dollar.
A usable segment names what the file actually contains: last stay date and property, room or rate context if the folio has it, outlet spend if the folio has it, membership status if the loyalty extract has it. A segment that only says "high value" or "worth winning back" is unfinished. Marketing cannot assign a campaign tier from a label with no cite.
Recoverable value, in this workflow, means there is a stay or spend record that would justify a win-back conversation. It does not mean a forecast of what the guest will spend if they return. If finance needs a recovery number for a plan, they produce it with their own method. The classifier must not invent one to look precise.
Keep a likelihood signal separate. Run a return propensity scorer when you need one, and sit that score next to the segment. Do not let either output become the campaign.
Load the lapsed-stay file as it exists
Start with the extract marketing already uses for lapse, not with a reconstructed guest. Pull stay headers, folio lines, loyalty identifiers, and contact flags only where those columns are present. Property management, CRM, and guest-engagement platforms in this class, including Revinate, Oracle Hospitality, and Mews, are sources for fields they already store. Treat them as one class. Take the export you have. Do not assume a column they did not give you.
Join on the guest identifier the property already trusts. Deduplicate so each person appears once with their last stay, or with the last few stays if those rows are actually on the file. Do not invent a stay history by rolling anecdotes into the row. Do not fill a missing stay date from "guests like this usually visit in spring."
Contactability is a separate field, not a segment. An email that still accepts mail does not prove a stay. A loyalty number does not prove a stay. A property code on a profile does not prove a stay.
If a row has an email and a property code but no stay date, it is not a lapsed stay. It is an incomplete record. Park it for cleanup. Do not send it into segmentation as if the stay happened.
When the last stay is at a sister property and that property is on the row, cite the property that is on the row. Do not relabel it as a stay at the hotel that wants to send the campaign.
Write a segment only when a stay or spend cite is on the row
For each guest with a real last stay, write a short segment label and a cite. The cite points at a field that exists: source, field name, and the value as stored. Example shape: last stay on 12 March at the city property, club-room folio, two restaurant outlets on the same stay. The label should be something a marketing lead can argue about, such as conference lingerer with F&B on the last folio, not VIP.
Cite the last stay unless marketing asked for a pattern across stays and those stays are on the file. If only one stay header exists, the cite is that header. If outlet lines exist, name the outlets or departments as stored. If they do not exist, do not complete the mix from a typical folio at this hotel.
One working picture, not a results story. A marketing lead opens last month's lapsed extract. Row A shows a two-night weekday stay, a meeting-room charge on the same folio, and a spa outlet the last morning. The classifier can segment that guest as in-house meeting plus outlet spend on last stay, and cite those folio lines. Row B shows an email, a loyalty number, and a blank stay history. The classifier leaves Row B empty. It does not infer a stay from the loyalty number. Row C shows a stay two years ago, room only, no outlet lines. The classifier can segment room-only last stay, dated, and cite the stay header. It still does not assign a campaign. Marketing may later put Row A on a meetings-plus-stay track, put Row C on a lighter room-only reminder, and leave Row B out of the send.
A segment with no stay cite is a failure. If the label reads high recoverable value and the cite field is blank, the row is not done. Clear the label or return the row to blank. A cite that names an expected recovery amount is also a miss. That figure was not on the folio. It was invented. Do not translate room rate plus outlet lines into a recoverable total either. Those lines describe the last stay. They are not a promise of the next one.
Thin files stay blank
Empty stays empty. If the extract is thin, missing stay dates, missing property, missing folio, contradictory names, the classifier returns no segment. That is a quality result, not a defect to paper over.
Partial records follow the same rule at field level. A stay header without outlet lines can still support a room-only cite. A folio without a stay date cannot. A name that does not match the profile and the folio is a blank, not a guess. Do not help the file by filling the last stay from a typical booking pattern, from the guest's home market, or from a corporate domain on the email. Those guesses become fake cites. They also put people into campaigns who never had a stay to win back.
Corporate-looking rows belong to a different conversation. If the contact reads as an account rather than a leisure lapsed stay, hand the row to account work such as the corporate account re-engagement agent instead of forcing a consumer win-back segment.
Blank output is also the right answer when marketing has not defined what lapsed means for this send. The classifier does not pick the window. It reads the file marketing loaded.
Marketing assigns the campaign tier
The classifier may output a candidate grouping: meeting plus outlet, room-only dated, loyalty known but stay missing. Marketing assigns the campaign tier: holdout, light reminder, offer, personal outreach, or do not contact.
Treating the segment as assigned is a failure mode. If operations loads the segment name into the send tool as the campaign and hits send, the classifier has been promoted to campaign manager. It is not. Segment names are input to a human decision, including the decision that this guest should not be in any win-back this cycle.
Do not auto-map a grouping to a tier. Meeting plus outlet is evidence, not an offer. Room-only dated is evidence, not a discount track. Marketing can still choose holdout for a well-cited guest, or choose not to contact someone whose last stay is too thin to mention honestly.
Assignment can wait on other return work. A propensity score can sit beside the cite. Marketing still maps the combination onto a tier. Neither model writes the offer.
Once marketing has picked a tier and a permitted message type, copy can come from a hyper-personalized re-engagement generator that is only allowed to use the same stay or spend cites. If the cite is blank, generation does not run. The generator does not get to invent a recovery dollar to make the letter feel specific.
Do not confuse win-back with a loyalty clock. A loyalty milestone trigger agent fires on points, nights, or anniversary rules. This classifier fires on lapse plus evidence. A guest can sit in both pipelines. Campaigns still need a human so they do not stack in the same week without anyone looking.
After marketing assigns tiers, export only rows that have a cite and a human-chosen tier. Blank rows stay out of the send file.
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.
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