Travel & Tourism// definition

Hallucinated, not contracted, or not available: three different failures

In short

Three different defects get filed as hallucination: a property that does not exist, a real property you have no contract for, and a contracted property that cannot be sold on those dates. They need retrieval constraints, a resolution gate and an availability check respectively, and fixing one does nothing for the other 2. The middle case is the one that survives review.

Key takeaways

  • An invented property, an uncontracted one and a sold-out one are 3 defects with 3 unrelated fixes.
  • The real-but-uncontracted suggestion passes every check a reviewer can run, which is why it ships.
  • Every property name in a draft must resolve to a catalogue id, or the draft is blocked, not cleaned.
  • Stripping unrecognised names leaves a day describing a hotel nobody can book. Regenerate instead.
  • Log the uncontracted suggestions by frequency. That list is a contracting backlog, not just noise.

When a drafted itinerary proposes a property you cannot sell, work out which of 3 things happened before deciding what to fix. The property may not exist at all. It may exist, be excellent, and be one you have no contract for. Or it may be a product you hold and cannot sell on those particular dates, because the allotment is gone, the release date has passed, or the season is closed.

These look the same in the document and share nothing else. The first is a retrieval failure, the second is a scoping failure, the third is a currency failure. A team that hardens retrieval and declares the problem solved will keep shipping the other 2 — and the second is the one that costs money, because it is the only one that passes every check a reviewer can run.

What each defect looks like on the page

DefectHow it reads in the draftWho catches it, and whenThe control
The property does not existPlausible name, often a composite of 2 real ones, with vague descriptive copy and no specificsA consultant who knows the region, in seconds. Anyone else, neverConstrain retrieval, and have the model emit ids rather than names
Real, but not contractedCorrect name, accurate description, right part of town, right standard. Everything checks outNobody, until someone tries to price it or a client asks to book itA resolution gate: every named product must map to a row in your catalogue
Contracted, not sellable on those datesCorrect in every respect except that the inventory is not thereThe operations team, at confirmation, after the client has approvedAn availability check at draft time, repeated before the proposal is sent
Contracted, sellable, wrong seasonA property or route that is genuinely shut on the dates proposedSometimes nobody, until the client arrivesSeasonal and closure data on the product, treated as a retrieved fact
Signature, who catches it, and the control that actually applies

The fourth row is a variant of the third and it is worth separating, because seasonality is usually held somewhere different from allotment — in a rate calendar, or in a supplier PDF, or in one person's head. The diagnosis for that one is the model that keeps proposing a place that is shut, and it is a genuinely different data problem from an exhausted allotment even though the client experience is identical.

The middle case is the expensive one

An invented hotel is embarrassing and cheap. It fails the first check anyone runs, and a consultant reading a draft for a region they sell will spot it immediately. A real property you do not hold fails nothing. The name is right because the model has seen it. The description is right. The location is right. It survives the review pass in checking an AI draft before it reaches a client precisely because every verifiable thing about it verifies.

Then the client reads the proposal and wants that hotel. You now have 3 options and none of them is good: buy it ad hoc at a worse rate with no allotment and no cancellation protection, substitute something else and explain why the itinerary changed before it was even confirmed, or hold the line and look like a business that does not know its own inventory. The damage is commercial, not technical, and it lands weeks after the defect was introduced.

The suggestion that hurts you is not the one that is obviously wrong. It is the one that is completely correct about a property you cannot sell.

Three controls, and why one never covers another

  1. Constrain retrieval to your own products. The candidate set the model reasons over contains only rows from your contracted catalogue, with their seasons, allotments and terms — building that index is its own piece of work, described in indexing your own products so a model can find them. This kills the invented property and does nothing about the other 2, because the model can still name a hotel it knows in prose that was never retrieved.
  2. Gate on resolution. Before a draft is stored or shown, every product-shaped noun in it must resolve to an id in your catalogue. Unresolved means blocked, not cleaned. This is the only control that catches the real-but-uncontracted case, and it is the one most implementations skip because retrieval feels like it should have handled it.
  3. Check availability at draft time and again before sending. Allotment, release date, stop-sell and season, all read as facts rather than assumed — the field-level split behind that is set out in what grounded means when a model drafts a trip. The second check matters because a draft that sat in a consultant's queue for 4 days is quoting a 4-day-old answer, the same decay that makes the results price never the checkout price on any inventory-backed site.

The three are genuinely independent. A perfect index does not stop a model writing a famous property into a paragraph. A resolution gate does not know the room is sold out. An availability check does not care that the property was never yours. Any 2 of the 3 leave a live failure path, and it is always the path nobody is watching.

The suggestions worth keeping rather than suppressing

There is a real signal buried in the blocked suggestions. A model constrained to your catalogue, given a brief in a region where your coverage is thin, will keep reaching for the same handful of properties you do not hold — because they are the obvious answer to that brief. Suppressing them silently throws that away.

  • Log every blocked property name with the brief that produced it, and count frequency by region and month. A name that appears 30 times in a quarter is a contracting conversation, not a bug.
  • Separate the invented names from the real-but-uncontracted ones in that log. Only the second list is useful, and mixing them makes the whole thing look like noise.
  • Show the consultant what was blocked, not just that something was. A consultant who can see the drafter wanted a property in a particular area can make the substitution deliberately instead of accepting whatever the constrained set produced.
  • Feed the list to whoever owns supplier relationships on a schedule. Coverage gaps found this way are cheap to find and expensive to discover from a lost booking, and this is the one place a drafting system tells you something about the business rather than about itself.

Two adjacent failures are deliberately out of scope here. A price that nobody can find in the rate card is a different defect with a different trace, covered in the draft that quotes a number that is not in the rate card. And the end-to-end version, where one brief is followed field by field through a constrained drafter, is one brief run through a grounded drafter. Both sit inside letting a model draft the trip, and the controls above are ordinary MVP and product build work in our travel and tourism practice — a resolution gate is a database lookup, not a research project.

Frequently asked questions

Short answers to the follow-ups this page tends to raise.

Is a real hotel we do not contract with a hallucination?

No, and calling it one sends you to the wrong fix. A hallucination is an assertion with no referent; this is a true statement about a property that is simply outside your commercial scope. The distinction matters because the remedies differ completely: better retrieval and better models reduce invented properties, while only a resolution gate against your own catalogue catches a real one you do not hold.

Why does constraining retrieval not solve this on its own?

Because the model can name a property it has never retrieved. Retrieval controls what the model reasons over; it does not control what the model already knows, and a well-known hotel in a well-known city is exactly the kind of thing it knows. The output has to be checked against your catalogue after generation as well as constrained before it, which is 2 controls rather than 1.

What should happen when a property fails the resolution check?

Block the draft and regenerate against the constrained candidate set, or route it to a consultant with the unresolved name visible. Do not delete the name and ship the paragraph: that leaves a day describing a hotel with no booking path, and it converts a defect a reviewer could have seen into one nobody will. Blocking is noisy at first, which is a useful measure of how often it was happening.

How often should availability be re-checked before a proposal goes out?

At draft time and again immediately before sending, at minimum. Any answer in between has an age, and a proposal that sat in a review queue over a weekend is quoting inventory as it stood days earlier. For allotment-backed products the second check is the one that matters, because the interval between drafting and sending is exactly when someone else sells the room.

  • inventory
  • hallucination
  • contracting
  • itinerary drafting
// shipped work

The work behind this page

Builds from our portfolio that this page draws on.

Read next

Working on something in this space?

Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.

Start the conversation