Условие
На странице билета (десктоп) предложения от разных партнёров отсортированы по цене от меньшей к большей.
Как ещё можно расположить предложения от разных партнёров на одном и том же билете? Как оценить эффективность предложенного подхода?
Решение
Подход
Сортировка «по цене» — самый понятный для пользователя сигнал, но он игнорирует:
- Конверсию покупки на стороне партнёра (юзер кликнул → не смог купить → вернулся).
- Скрытые комиссии и доплаты (багаж, сервисный сбор) — итоговая цена выше.
- Качество партнёра: рейтинг, отмены, поддержка.
- Юнит-экономику для нас: партнёры с высокой комиссией зарабатывают нам больше.
- Персонализацию: пользователь, ранее покупавший у конкретного партнёра, скорее всего, купит снова.
Альтернативные подходы к ранжированию
-
По «итоговой цене» (TCP — total customer price). Учитываем багаж, сервисный сбор, обязательные надбавки. Это главный сигнал боли пользователя — реальная сумма к оплате.
-
По ожидаемому RPC (revenue per click) для нас.
RPC = price * cr_pay * commission_rate. Партнёр с низкой ценой, но низким CR_pay и низкой комиссией — внизу. -
По «балансу выгоды»: цена и качество. Скоринг
score = α * (1 - normalized_price) + β * partner_cr + γ * partner_rating. Параметры — обучаем. -
Персонализированное. ML-модель ранжирования (LTR — Learning to Rank) с фичами: текущая цена, prior юзера на партнёра, исторические CR партнёра в сегменте, гео, тарифный класс. Метрика обучения — NDCG/click-through.
-
По best-fit для сегмента маршрута. Например, на «Москва → Сочи бизнес-класс» партнёр X стабильно лучший, на «лоукост в Турцию» — Y.
-
«Highlight + sort by price». Минимально инвазивно: оставляем сортировку по цене, но помечаем «лучший» партнёр (значок «рекомендуем», если RPC > X и quality > Y).
Реализация — оценка эффективности
A/B-тест с рандомизацией по поисковой сессии (sticky по user_id).
Декомпозиция метрик (в порядке убывания важности):
| Метрика | Формула | Что показывает |
|---|---|---|
| Revenue per Search (RPS) | sum(commission) / searches | главное — на сколько стало больше денег |
| Click-through to partner | clicks / search-views | насколько изменилось взаимодействие с выдачей |
| CR клик→покупка | purchases / clicks | улучшилось ли качество кликов |
| Bounce из партнёра | возвраты к нам в выдачу | сорвался ли юзер у партнёра |
| Refund rate | возвраты денег | системные проблемы |
| Time-to-purchase | время от поиска до покупки | UX-сигнал |
Гарды: RPC > 0, partner_diversity (нельзя оставлять только одного партнёра в топе), latency.
Сегментный анализ обязателен: новые / повторные пользователи; десктоп vs мобайл; тип маршрута (внутренний / международный); ценовой сегмент.
Анализ / интерпретация
Любая «не-цена-первая» сортировка — это потенциальный конфликт с ожиданиями пользователя. Если RPS растёт, но CTR падает резко (юзер не доверяет «не самой дешёвой» опции наверху) — это плохой сигнал, даже если деньги растут в моменте: долгосрочно мы рискуем доверием к платформе.
Подводные камни
- Конфликт интересов «дороже = выгоднее нам». Если ранжирование подталкивает к более дорогим партнёрам — это работает в краткосроке, но убивает позиционирование «самые низкие цены».
- Чёрный ящик. ML-ранжирование без объяснимости — пользователь не поймёт, почему «дешёвый внизу». Нужна возможность пересортировать «по цене» руками.
- Cold start для нового партнёра. Если ранжируем по историческому CR — новый партнёр всегда внизу. Нужны bayesian smoothing или эксплорация (epsilon-greedy / Thompson sampling).
- Проблема дисплея. Многие юзеры смотрят только топ-3. Если лучший по цене — на 4 позиции, его конверсия рухнет.
- Network-effect для партнёров. Партнёры с низким CTR могут уйти с платформы — теряем разнообразие.
- Sample Ratio Mismatch и кеширование. Кеш выдачи — частая причина SRM в подобных тестах.
Альтернативы
- Mixed sorting: 80% юзеров видят «по цене», 20% — «оптимальная для нас» (контролируемая эксплорация).
- Two-stage ranking: первый этап — фильтрация (отрезаем партнёров с низким качеством), второй — сортировка по цене внутри валидных.
Эталонный ответ
Альтернативы к сортировке по цене: total customer price, RPC, баланс цена/качество, персонализация LTR, highlight «рекомендуем». Эффективность оцениваем A/B-тестом с decision-метрикой Revenue per Search, гардами на CTR/refund/bounce и обязательным сегментным анализом. Главный риск — потеря доверия пользователя, поэтому нужны guardrail-метрики на UX и возможность ручной сортировки «по цене».