пакетные признаки из ClickHouse в единый документ на каждого пользователя. Основной инженерной задачей была обработка контекста конкретной поездки — города назначения, дат и количества гостей, — который алгоритмы коллаборативной фильтрации сами по себе не могли учесть. Они разработали контракт API, который принимает целевой заказ из истории покупок пользователя, преобразуя даты из UTC в местное время города прибытия, чтобы гарантировать корректные даты заезда и выезда. Во время инференса сервис читает данные только из MongoDB, а при отсутствии векторов ALS используется резервный вариант — топ отелей по количеству заказов. Позже они перешли на CatBoost для ранжирования, загружая модель из объектного хранилища при запуске сервиса. Они также выполнили обратную заливку исторических заказов через снапшот-топики Kafka, чтобы пользователи с тёплой трассой имели историю, и объединили дублирующиеся заказы по order_id. Такой прагматичный подход позволил им проверить гипотезу на живом трафике без идеальной архитектуры.