Recommendation Deduplication in Rooms and Rates Response Model

Recommendations play a crucial role in our rooms and rates response model, facilitating the booking process.
Our system supports integration with multiple suppliers, allowing us to receive rates for similar rooms from different sources.
To enhance your experience, we implement a recommendation deduplication logic that identifies duplicate rates across suppliers and
filters out the more expensive options from the final response.

Parameters for Recommendation Deduplication

The following parameters are used to identify duplicate rates:

  1. Refundability
  2. Board Basis
  3. Inclusions
  4. Pay at Hotel

Supported Deduplication Strategies

No Deduplication:

This strategy retains all recommendations without filtering.
All rates are shared as-is.

For example:

There are 3 suppliers activated for your channel Supplier-A,Supplier-B, Supplier-C.
When you made a search for let's say Hotel XYZ, we parallely make calls to all the suppliers activated against your channel, in this case
Supplier-A,Supplier-B,Supplier-C. So we receive rates for Deluxe Room present at the Hotel XYZ from both the suppliers.

Supplier-A:

Room-A:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-A:
{
Refundability: Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 100,
Currency: USD
}

Supplier-B:

Room-B:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-B:
{
Refundability: Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 120,
Currency: USD
}

Supplier-C:

Room-C:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-C:
{
Refundability: Non-Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 90,
Currency: USD
}
Note: The response structure is not the actual ZH response structure it is for explanation purpose only.

As you can see in the above example we recieved rates from both the supplier for the same room type and at our end we will create 3 recommendations
for both the rates recieved from the supplier.

Recommendations:
Recommendation-1 (for Rate-A of Supplier-A)
Recommendation-2 (for Rate-B of Supplier-B)
Recommendation-3 (for Rate-C of Supplier-C)

As per the strategy the final response will contain all the 3 recommendations.

Recommendation Deduplication:
This strategy removes duplicate recommendations based on the parameters of refundability, board basis,
inclusions, and pay at hotel. It ensures that only the cheapest option is presented.

For example:

There are 3 suppliers activated for your channel Supplier-A,Supplier-B, Supplier-C.
When you made a search for let's say Hotel XYZ, we parallely make calls to all the suppliers activated against your channel, in this case
Supplier-A,Supplier-B,Supplier-C. So we receive rates for Deluxe Room present at the Hotel XYZ from both the suppliers.

Supplier-A:

Room-A:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-A:
{
Refundability: Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 100,
Currency: USD
}

Supplier-B:

Room-B:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-B:
{
Refundability: Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 120,
Currency: USD
}

Supplier-C:

Room-C:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-C:
{
Refundability: Non-Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 90,
Currency: USD
}
Note: The response structure is not the actual ZH response structure it is for explanation purpose only.

As you can see in the above example we recieved rates from both the supplier for the same room type and at our end we will create 3 recommendations
for both the rates recieved from the supplier.

Recommendations:
Recommendation-1 (for Rate-A of Supplier-A)
Recommendation-2 (for Rate-B of Supplier-B)
Recommendation-3 (for Rate-C of Supplier-C)

As per the strategy the final response will contain Recommendation-1 and Recommendation-3 as the parameters for Recommendation-1 and Recommendation-2 matches
and we will pick the cheapest one among them and filter the expensive one. In case of comparison between Recommendation-3 to Recommendation-1 and Recommendation-2
as the Refundability parameter does not matches it will not get deduped and will be part of the final response.

Deduplication by Bed Type:
This approach considers refundability, board basis, inclusions, pay at hotel, and bed type information to
eliminate duplicates and provide the cheapest option.

For example:

There are 3 suppliers activated for your channel Supplier-A,Supplier-B, Supplier-C.
When you made a search for let's say Hotel XYZ, we parallely make calls to all the suppliers activated against your channel, in this case
Supplier-A,Supplier-B,Supplier-C. So we receive rates for Deluxe Room present at the Hotel XYZ from both the suppliers.

Supplier-A:

Room-A:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-A:
{
Refundability: Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 100,
Currency: USD
}

Supplier-B:

Room-B:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-B:
{
Refundability: Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 120,
Currency: USD
}

Supplier-C:

Room-C:
{
Name: "Deluxe Room",
Bed: "Twin Bed"
}

Rate-C:
{
Refundability: Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 120,
Currency: USD
}
Note: The response structure is not the actual ZH response structure it is for explanation purpose only.

As you can see in the above example we recieved rates from both the supplier for the same room type and at our end we will create 3 recommendations
for both the rates recieved from the supplier.

Recommendations:
Recommendation-1 (for Rate-A of Supplier-A)
Recommendation-2 (for Rate-B of Supplier-B)
Recommendation-3 (for Rate-C of Supplier-C)

As per the strategy the final response will contain Recommendation-1 and Recommendation-3 as the parameters for Recommendation-1 and Recommendation-2 matches
and we will pick the cheapest one among them and filter the expensive one. In case of comparison between Recommendation-3 to Recommendation-1 and Recommendation-2
as the Bed information parameter does not matches it will not get deduped and will be part of the final response.

Deduplication by Board Basis and Refundability:
In this strategy, recommendations are deduplicated by focusing on the refundability and board basis parameters,
identifying duplicates to present the cheapest option.

For example:

There are 3 suppliers activated for your channel Supplier-A,Supplier-B, Supplier-C.
When you made a search for let's say Hotel XYZ, we parallely make calls to all the suppliers activated against your channel, in this case
Supplier-A,Supplier-B,Supplier-C. So we receive rates for Deluxe Room present at the Hotel XYZ from both the suppliers.

Supplier-A:

Room-A:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-A:
{
Refundability: Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 100,
Currency: USD
}

Supplier-B:

Room-B:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-B:
{
Refundability: Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 120,
Currency: USD
}

Supplier-C:

Room-C:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-C:
{
Refundability: Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 110,
Currency: USD
}
Note: The response structure is not the actual ZH response structure it is for explanation purpose only.

As you can see in the above example we recieved rates from both the supplier for the same room type and at our end we will create 3 recommendations
for both the rates recieved from the supplier.

As per the strategy the final response will contain Recommendation-1 and Recommendation-3 as the parameters for Recommendation-1 and Recommendation-2 matches
and we will pick the cheapest one among them and filter the expensive one. In case of comparison between Recommendation-3 to Recommendation-1 and Recommendation-2
as the Refundability parameter does not matches it will not get deduped and will be part of the final response.

Recommendations:
Recommendation-1 (for Rate-A of Supplier-A)
Recommendation-2 (for Rate-B of Supplier-B)
Recommendation-3 (for Rate-C of Supplier-C)

As per the strategy the final response will contain only Recommendation-1 as the parameters for Recommendation-1,Recommendation-2 and Recommendation-3 matches
and we will pick the cheapest one among them and filter the expensive ones.

Deduplication by Refundability:
This strategy simplifies deduplication by only considering the refundability parameter,
ensuring that the cheapest option is provided.

For example:

There are 3 suppliers activated for your channel Supplier-A,Supplier-B, Supplier-C.
When you made a search for let's say Hotel XYZ, we parallely make calls to all the suppliers activated against your channel, in this case
Supplier-A,Supplier-B,Supplier-C. So we receive rates for Deluxe Room present at the Hotel XYZ from both the suppliers.

Supplier-A:

Room-A:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-A:
{
Refundability: Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 100,
Currency: USD
}

Supplier-B:

Room-B:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-B:
{
Refundability: Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 120,
Currency: USD
}

Supplier-C:

Room-C:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-C:
{
Refundability: Non-Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: false,
TotalRate: 90,
Currency: USD
}
Note: The response structure is not the actual ZH response structure it is for explanation purpose only.

As you can see in the above example we recieved rates from both the supplier for the same room type and at our end we will create 3 recommendations
for both the rates recieved from the supplier.

Recommendations:
Recommendation-1 (for Rate-A of Supplier-A)
Recommendation-2 (for Rate-B of Supplier-B)
Recommendation-3 (for Rate-C of Supplier-C)

As per the strategy the final response will contain Recommendation-1 and Recommendation-3 as the parameters for Recommendation-1 and Recommendation-2 matches
and we will pick the cheapest one among them and filter the expensive one. In case of comparison between Recommendation-3 to Recommendation-1 and Recommendation-2
as the Refundability parameter does not matches it will not get deduped and will be part of the final response.

Deduplication by Rate Key Selector:
This flexible strategy allows clients to choose which parameters to include in the deduplication process.
Clients can contact our support team to specify their preferred parameters for their desired channel.
The cheapest rate option is provided.

Available Parameters for Selection
Clients can select from the following parameters for recommendation deduplication:

  1. Refundability
  2. Board Basis
  3. Inclusions
  4. Pay at Hotel

For example:

There are 3 suppliers activated for your channel Supplier-A,Supplier-B, Supplier-C.
When you made a search for let's say Hotel XYZ, we parallelly make calls to all the suppliers activated against your channel, in this case
Supplier-A, Supplier-B, Supplier-C. So we receive rates for Deluxe Room present at the Hotel XYZ from both the suppliers.

Supplier-A:

Room-A:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-A:
{
Refundability: Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 100,
Currency: USD
}

Supplier-B:

Room-B:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-B:
{
Refundability: Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 120,
Currency: USD
}

Supplier-C:

Room-C:
{
Name: "Deluxe Room",
Bed: "King Bed"
}

Rate-C:
{
Refundability: Non-Refundable,
BoardBasis: "BedAndBreakfast",
Inclusions: ["Wifi"],
PayAtHotel: true,
TotalRate: 90,
Currency: USD
}
Note: The response structure is not the actual ZH response structure it is for explanation purpose only.

As you can see in the above example we recieved rates from both the supplier for the same room type and at our end we will create 3 recommendations
for both the rates recieved from the supplier.

Recommendations:
Recommendation-1 (for Rate-A of Supplier-A)
Recommendation-2 (for Rate-B of Supplier-B)
Recommendation-3 (for Rate-C of Supplier-C)

Let's see the final response that we will get according to different parameter selections:

  1. Refundability and BoardBasis:
    Final response: Recommendation-1 and Recommendation-3

  2. BoardBasis and Inclusions:
    Final response: Recommendation-1

  3. PayAtHotel:
    Final response: Recommendation-1 and Recommendation-3