
Smart Travel Guides Search
Challenge
Smart Travel Guides Search solution is a web-based application designed to help travelers quickly find and explore travel guides based on their interests and destinations. Featuring user-friendly search and filtering capabilities, it provides access to relevant travel information and personalized recommendations.
The task was to process various free-form text requests from users. Typically, these requests outlined the user's plans for a specific city and time period, detailing what they intended to do and the type of assistance they needed.
The challenge was to match each request with the services offered by city guides from the portal's pool.
The system had to verify which guides were available during the user's visit and deliver the results via email. Previously, this work was done manually, but AI was needed to automate the process.
Smart Travel Guides Search solution is a web-based application designed to help travelers quickly find and explore travel guides based on their interests and destinations. Featuring user-friendly search and filtering capabilities, it provides access to relevant travel information and personalized recommendations.
The task was to process various free-form text requests from users. Typically, these requests outlined the user's plans for a specific city and time period, detailing what they intended to do and the type of assistance they needed.
The challenge was to match each request with the services offered by city guides from the portal's pool.
The system had to verify which guides were available during the user's visit and deliver the results via email. Previously, this work was done manually, but AI was needed to automate the process.
Solution
The main feature of our solution is to extract key data from user requests and find matching city guide profiles using vectorized search and text embeddings.
Initially, all guide profiles are embedded and saved in the database. The database also tracks guide availability for specific periods. If a profile changes, it is re-embedded and saved.
Logged-in users submit requests through a special form. However, it appears that the majority of users do not fill in period and city fields. But they write down all the information in the text field. That's why, the LLM extracts the following data from user requests:
Travel start date
Travel end date
Country and city
List of services needed
LLM generalizes well. So even if the user misses the country or writes "1 week" instead of the travel end date, AI will calculate the correct dates anyway.
The list of services is vectorized using text embedding (text-embedding-ada-002 OpenAI model). The search in the database is performed using this vector, along with the period and city, with the help of the pgvector plugin and an SQL query.
The result is a list of available city guides with a probability of matching the service criteria. The top 3 matches are included in a letter to the user.
If no matches are found or the LLM fails to extract data, the request is marked for human review.
This helps understand issues and gather material to improve the LLM prompt.
As a result, the user receives an email with the top 3 matching city guides, direct links to their profiles, and a button to book a service.
The main feature of our solution is to extract key data from user requests and find matching city guide profiles using vectorized search and text embeddings.
Initially, all guide profiles are embedded and saved in the database. The database also tracks guide availability for specific periods. If a profile changes, it is re-embedded and saved.
Logged-in users submit requests through a special form. However, it appears that the majority of users do not fill in period and city fields. But they write down all the information in the text field. That's why, the LLM extracts the following data from user requests:
Travel start date
Travel end date
Country and city
List of services needed
LLM generalizes well. So even if the user misses the country or writes "1 week" instead of the travel end date, AI will calculate the correct dates anyway.
The list of services is vectorized using text embedding (text-embedding-ada-002 OpenAI model). The search in the database is performed using this vector, along with the period and city, with the help of the pgvector plugin and an SQL query.
The result is a list of available city guides with a probability of matching the service criteria. The top 3 matches are included in a letter to the user.
If no matches are found or the LLM fails to extract data, the request is marked for human review.
This helps understand issues and gather material to improve the LLM prompt.
As a result, the user receives an email with the top 3 matching city guides, direct links to their profiles, and a button to book a service.
Results
Thanks to the development of these smart requests and guides, the matching system automated around 89% of the manual work on the platform. This enabled the platform to respond to user requests faster, within a maximum of 3 minutes, while maintaining a high level of quality.
Thanks to the development of these smart requests and guides, the matching system automated around 89% of the manual work on the platform. This enabled the platform to respond to user requests faster, within a maximum of 3 minutes, while maintaining a high level of quality.