AI Adoption GuideHospitalityReview
Cross-property reputation benchmarker
Aggregates review scores across portfolio and comp set, then surfaces gaps via a weekly AI-generated briefing.
Hospitality processBookConfirmPrepareArriveStayDepartReviewReturn
By Don, DoneThat’s AI coach · updated
The quality bar is a sourced line, not a leaderboard
A cross-property reputation benchmarker earns its keep when every populated line in the weekly briefing names the property, the licensed score source, and the vintage of that score. If a contracted source returns nothing for a hotel that week, the score cell stays empty. A general manager still reads the packet and decides what to inspect. The briefing is not a published KPI, and it is not the system of record.
The work is comparison hygiene. Owned hotels and a frozen competitive set sit in the same table so a revenue director can see which buildings have a current licensed score and which do not. The AI draft restates what ingest stored, marks coverage gaps, and points the reader at follow-up. It does not invent a review score, fill a competitor from memory, or mash unlike sources into a house index.
Guest-comment themes belong in a review sentiment and topic extractor. This page stays on scores you are licensed to read, dated, and attributable.
Freeze the property set before any score lands
Lock the list of your hotels and the list of competitive-set hotels before the first ingest. Record legal names, internal property codes, and the mapping to each reputation or property-management feed you actually subscribe to. Revinate, TrustYou, Oracle Hospitality, and Mews sit in the same class: licensed systems that may hold or surface guest-feedback scores. You only pull what the contract covers. You do not scrape a public listing, guess a star rating, or copy a number because a row looks unfinished.
Assign a freeze owner. A cluster general manager or regional revenue director signs the list. The set does not change mid-week. Additions and removals wait for the next window, with a named approver. If the set floats, gaps look like performance problems when they are often coverage problems.
Name collisions are operational, not cosmetic. Two hotels that share a brand fragment in the same city need distinct codes. A franchise property that collides with a competitor string needs a mapping a night auditor could check against the property-management record. The briefing generator should refuse to merge rows that do not share a frozen identifier.
Competitive-set hotels get the same freeze rules as owned hotels. If you cannot license a score for a competitor, that competitor's score cell is blank. The briefing may still list the hotel so the set stays visible. Showing the name is not permission to fabricate a number.
Ingest licensed scores with vintage, then leave blanks
Each ingest record needs three facts that travel together: which frozen property, which licensed source, and which vintage. Vintage is the date or period the source assigns to the score, not the timestamp of your pull, and not a slogan such as "this week." If the source returns a score without a period, do not write a briefing line. A line with no vintage is incomplete evidence, not a delayed KPI. Drop it or park it in an exceptions queue until the source date exists.
When two sources cover the same hotel, keep them on separate lines. Do not blend figures from different vendors into one reputation index inside this briefing. Stay or booking context in Oracle Hospitality or Mews does not license you to backfill a missing review score from occupancy, rate, or a private survey. The briefing cites the score source that produced the score. Empty stays empty.
The weekly AI pass should only rearrange and label what ingest already stored. Ask it for one briefing line per property-source pair that has a complete triple, and for an explicit gap note when the property is in the freeze list, the source is contracted, and the score is missing. Gap notes do not include a guessed number. They do not reuse last period so the grid looks full.
Run these checks before the general manager opens the file. Every non-blank score cell has a source name and a vintage. Every blank score cell is blank because ingest found nothing licensed, not because a formula failed silently. Competitive-set blanks are labeled as coverage gaps, not as underperformance. No row uses a score whose vintage is older than the window you told the reader you are briefing, unless you mark it as a stale holdover and keep it out of any implied current comparison.
Stale holdovers are optional and easy to misuse. If you show them, the old vintage sits in the same sentence as the property and the source. If you cannot show the vintage, omit the score.
How a GM reads one week without promoting the file
The reader is a hotel general manager or a revenue director who still owns the action. They scan owned hotels first, then the frozen competitive set. They treat a blank as a data question before they treat it as a guest-experience question. A complete line tells them which source moved, as of which vintage. An empty line tells them to ask the analyst or the vendor why the feed is quiet. Neither line goes into the board pack as the reputation KPI.
Illustrative week, structure only, no scores. A cluster of three owned hotels and two frozen competitive hotels. Owned hotel A has a complete line: property code, TrustYou, vintage equal to the source period-ending date, and the licensed score as received. Owned hotel B has a contracted Revinate feed that returned nothing; the score cell is empty; the gap note names the source and the missing vintage, not a substitute figure. Owned hotel C has stay records in Oracle Hospitality but no licensed review score for the freeze window; the review-score cell stays empty. Competitive hotel D is on the freeze list with no licensed source; the name appears, the score stays empty. Competitive hotel E has a licensed score with source and vintage; that figure appears only as the vendor sent it. Nobody types a remembered competitor rating. Nobody pastes a public star into D's blank.
What the GM does with that packet: they ask why B's feed is empty, they do not rank C against E, and they send an operations owner to read comments only for hotels that have comment volume, using the review sentiment and topic extractor. If volume already tripped a watch, they open the review alert monitor instead of arguing with a blank cell. If the pattern looks structural, they run the complaint root-cause classifier on tickets and reviews they actually hold. Guest-facing replies stay with the personalized response drafter. The benchmarker does not draft those replies and does not publish a portfolio rank.
Failure modes that quietly poison the table
A line with no vintage. Someone pastes a score because the weekly meeting starts in an hour. The briefing then compares a trailing long-run index to a short snapshot and calls the difference a gap. Kill the line. Require vintage at ingest. If the model wrote a period that ingest did not store, treat that as invention and discard the line.
Treating the briefing as a KPI. Once the packet sits on a slide titled reputation score, people start managing the slide. Hotels without feeds look like laggards. Analysts fill blanks to keep the dashboard complete. Keep this file out of the KPI pack. Treat it as a working note. If leadership wants a published metric, define that metric in the source system, with an owner, vintage rules, and a written method. This weekly file is not that method.
Inventing a competitor score. A blank competitive-set cell is uncomfortable in a revenue meeting. The failure is filling it from a travel-site screenshot, a salesperson's recollection, or an AI completion that should be close. That number is not licensed, not vintaged, and not yours to stand behind. Leave it blank. If the competitive question matters, buy the licensed feed or drop the hotel from the freeze list at the next window.
Mixing sources in one cell, backfilling from PMS fields, or smoothing gaps with last week's figure produces lines that look complete and are not attributable. Ship a shorter briefing. Honest blanks beat unofficial numbers.
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