Recommendation Deduplication in Rooms and Rates Response Model

When multiple suppliers return rates for the same hotel, the engine deduplicates them into a single set of unique recommendations. Each recommendation represents one distinct rate plan — the cheapest available price across all suppliers for a specific combination of room attributes.

Deduplication parameters

Two rates from different suppliers are considered the same rate plan — and therefore deduplicated into one recommendation — when all of the following match:

Board basis

Room only, breakfast included, half board, full board, all inclusive — these are treated as distinct.

Refundability

Refundable and non-refundable rates are always kept as separate recommendations — never merged.

Room type

Matched via the mapping service normalisation — "King Room" and "Superior King" from different suppliers may resolve to the same standardised room.

Occupancy

Number of adults and children. A rate for 2 adults is not merged with a rate for 2 adults + 1 child.

Number of nights

Rates for different stay lengths are always distinct.

How it works in practice

Say 3 suppliers all return rates for the same king room, non-refundable, room only, for 2 adults, 1 night:

Before deduplication — raw rates

Supplier A King Room · Non-refundable · Room only · $142
Supplier B King Room · Non-refundable · Room only · $138
Supplier C King Room · Non-refundable · Room only · $155

After deduplication — one recommendation

King Room · Non-refundable · Room only · $138 (Supplier B)

The other two supplier rates are discarded from recommendations — they are still available in the raw rates object, but only the cheapest surfaces as a recommendation. The engine selects the winning supplier transparently, with no bias.

Refundable and non-refundable are always separate

Even if the price difference is small, refundable and non-refundable rates for the same room are never merged. The user always sees both options as distinct recommendations so they can make an informed choice.

Recommendations are sorted cheapest to highest. The first recommendation in the array is always the lowest-priced unique rate plan. In standardisedRoomGroups, the options within each room group are also sorted cheapest to highest — making it straightforward to show users the best available price first.