Add-on Recommendations

Welcome to the Add-on recommendation feature page. This page serves as a guide to understanding and implementing this new addition to Maxxton Software.

Add-on recommendations are only available when at least one bookable and visible add-on is configured.

🚀 Overview

The add-on recommendation model is designed to enhance the booking experience by offering personalized suggestions for add-ons, tailored to each unique reservation. Utilizing machine learning algorithms, this feature analyzes guest data to provide real-time, relevant add-on recommendations during the booking process.

On top of that, add-on recommendations serve as a potential upselling technique through the Template Editor and My Environment.

Table of contents

🪄 How it Works

The add-on recommendation model uses machine learning to personalize additions to a booking. It analyses and generalises past bookings and contextual information such as booking subjects, dates and length-of-stay, and accommodation information.

During the booking process, these recommendations are delivered in real-time, ensuring that guests receive relevant and up-to-date suggestions. The system continuously learns and adapts based on new bookings, refining its accuracy and personalization over time.

Our model automatically selects configured add-ons that are “recommendable” using the following criteria:

  • The add-on is not customizable, this can be checked in the “Settings” tab of the add-on in the Content Manager.

  • The add-on has a price that is greater than 0.

  • The add-on is bookable and visible.

  • The add-on is not archived.

“Cold” Add-ons

Cold add-ons are extra services or products that no guest has ever booked before. These could be new offerings, but also updates of old products, like wine package 2023 getting renewed into wine package 2024. Because there’s no past booking data for these add-ons, it’s harder for the recommendation engine to know what type of guest wants them. We have two solutions for this problem:

Add-on linking

Coming back to the wine packages - some clients create new add-ons every year for roughly the same item. The booking data for these add-ons is then also the same. To address this, we developed an add-on linker that connects archived add-ons with their relevant data to highly similar, never-booked add-ons. This creates data for the cold add-ons and allows the model to recommend these add-ons to fitting reservations.

Since there is little descriptive data available for add-ons, we link through the similarity of add-on names. This makes sure that wine packages will be linked, but a wine package and a BBQ package will not.

Random recommendations

For cold add-ons that cannot be linked to archived data, we have implemented random recommendations. This approach randomly inserts cold add-ons into the recommendation result. This approach helps gather initial booking data for these never-before-booked add-ons. By randomly suggesting these to guests and hoping they get booked, we can assess what type of reservation fits the add-on.

🕹 Enabling Add-on Recommendations

Reservation and Front Office Manager

Add-on recommendations are enabled by default and are in a separate list next to Favorite add-ons. If no add-ons can be recommended, the list will be hidden automatically.

image-20240703-111958.png

Web Manager

This implementation is In progress.

Template Engine

This implementation is in progress.

🛠 Implementation

There are two different implementations. One uses an existing reservation through the reservation service, and the second uses subjects through the resource service.

Reservation Service

The POST request in the reservation service is /api/v1/reservations/{reservationId}/reservedresources/{reservedResourceId}/addons/recommendations.

This endpoint returns a list containing add-ons and their probabilities. It has two parameters:

  • size - influences the amount of recommendations that return. This defaults to 4 when left empty.

  • showColdStarts - When this showColdStarts = true, 25% of the request size will be random cold starts. This defaults to false.

Resource Service

The POST request in the resource service is /api/v1/resources/{resourceId}/bookableaddons/recommended.

This endpoint uses the same logic as the normal /bookableaddons endpoint, but with two optional extra parameters:

  • size - influences the amount of recommendations that return. This defaults to 4 when left empty.

  • showColdStarts - When this showColdStarts = true, 25% of the request size will be random cold starts. This defaults to false.

🧐 Why do we recommend item X?

Good question! To put it simply: We don’t exactly know ourselves. The algorithm finds patterns, relations, and correlations in the data that aren’t immediately obvious to humans. It examines reservation profiles, booking histories, and other details to make these recommendations. While the exact reasoning can be complex and unclear, the algorithm’s ability to identify these hidden connections often results in surprisingly effective suggestions.

❓Questions

Q: Is this a replacement for Favorite add-ons?

A: It can be used as a replacement, but it also works well side by side.

Q: I would like to recommend item X more often than item Y. Is that possible?

A. We can influence the recommendation engine in multiple ways. Please contact someone from the Data Science team or check the contact information below.

Q: I want to include or exclude certain add-ons, is that possible?

A: Yes, please reach out to someone in the Data Science team or check the contact information below.

🖨 Contact

Data Scientist, Developer

Lead Data Scientist