Собесов

Vinted — оценка и оптимизация ценообразования feature Push Ups

Кейсы и метрикиPricing / monetizationСложнаяSenior

Условие

Vinted — секонд-хенд маркетплейс. Предложение > спрос — не все товары продаются. Чтобы помочь продавцам, есть фича Push Up (€2 за активацию): на 3 дня поднимается видимость объявления — больше показов на главной/категориях.

Дано: датасет (category_2, category_3, number_of_listings, avg_listing_price_eur, revenue_from_push_ups).

Вопросы:

Section I (1ч):

  • (A) Количественно оцените, как работает текущий Push Up для платформы. Есть ли room for improvement?
  • (B) В категории GIRLS_CLOTHING/FOR_BABIES цена Push Up > половины средней цены товара. Почему продавцы всё ещё покупают?

Section II (2.5ч):

  • (A) Pros/cons фиксированной цены для всей платформы.
  • (B) Альтернатива.
  • (C) Численная оценка expected revenue новой стратегии vs текущая. Risks.

Section III (0.5ч): следующие шаги (тестирование).

Решение

Section I.A — текущая performance

Метрики:

  • Adoption rate = revenue_from_push_ups / (€2 × number_of_listings) — доля listings, у которых купили push-up.
  • Revenue per listing = revenue_from_push_ups / number_of_listings.
  • Revenue per category vs share of listings.

Расчёт по категориям и сводный график:

df['pushup_per_listing']    = df['revenue_from_push_ups'] / df['number_of_listings']
df['adoption_rate']         = df['pushup_per_listing'] / 2.0

Room for improvement:

  • В категориях с высокой avg_listing_price adoption низкий — потому что Push-up относительно дешёвый, а отдача высокая, но возможно продавцы не знают.
  • В категориях с низкой avg_listing_price adoption тоже низкий — потому что фича стоит большую долю от listing price.
  • Имеется U-образная или мономотонная зависимость adoption от listing price → есть структурная неэффективность фиксированной цены.

Section I.B — почему покупают, когда фича > 50% цены товара

Гипотезы:

  • Объёмная стратегия: продавцы детских вещей — мамы, у которых много дешёвых товаров; «застрявшие» мешают месту в шкафу — психологический интерес важнее монетарной выгоды.
  • Storage / convenience: цена товара не отражает «cost of inactivity» (место, объявление в каталоге).
  • Просто кросс-продают: если товар не продаётся 30 дней, лучше потерять €2, чем не продать.
  • Bundle психология: продают пакет («10 ползунков» как 10 listings × €5).
  • Невнимательность к цене Push-up vs ценность видимости.

Section II.A — pros/cons фиксированной цены

Pros:

  • Простота для пользователя — все знают цену.
  • Простота кассы / системы.
  • Низкая когнитивная нагрузка.

Cons:

  • Не extracts WTP (willingness-to-pay): дешёвые категории платят слишком много, дорогие — слишком мало.
  • Теряется revenue: для дорогих категорий могли бы взять €5–10.
  • Adverse selection: дешёвые категории получают меньше Push-up, и платформа теряет supply quality.

Section II.B — альтернатива

Динамическая цена как % от avg_listing_price (например, 5–10%) с floor €0.5 и cap €5. Альтернативно: функция от ожидаемого views — если push-up даёт +X views, цена пропорциональна X × value_per_view. Или аукцион / sell-through-based: цена выше для категорий с низким sell-through (где push нужен больше).

Pros:

  • Лучше ловит WTP по сегментам.
  • Выравнивает adoption rate.
  • Поощряет дорогие категории.

Cons:

  • Сложнее в коммуникации.
  • Сложнее в системе (нужны обновления цен).
  • Может быть perceived as «несправедливо».

Section II.C — Expected revenue от новой стратегии

Подход:

  1. Для каждой категории берём текущий adoption и avg_listing_price.
  2. Аппроксимируем кривую спроса на push-up: при price_p adoption = f(price/avg_listing_price). Можно через лог-регрессию logit(adoption) ~ relative_price на текущих данных.
  3. Для новой стратегии (например, price = 7% × avg_listing_price):
    • Новый relative_price = 7% (фиксирован).
    • Новый adoption = f(0.07).
    • Revenue per listing = new_price × new_adoption.
  4. Aggregate по категориям.
import numpy as np
from sklearn.linear_model import LogisticRegression
 
df['rel_price']  = 2.0 / df['avg_listing_price_eur']
df['adopted']    = df['adoption_rate']  # дробь, не бинарка
# Преобразуем в долю и используем GLM Bernoulli с весами
# … fit logistic on rel_price (на категориальных средних)

Численный результат: например, если в среднем платформа +15% revenue → at scale ~€millions.

Risks:

  • Coordination: продавцы могут перейти на категории с низкой ценой Push-up.
  • Adverse: дорогие категории могут уйти на competitor если Push дорогой.
  • Кривая спроса может быть оценена неточно — нужен пилот.

Section III — следующие шаги

  1. A/B на категориях: 50% категорий новый pricing, 50% старый. Sticky на listing/seller.
  2. Pre-period: убедиться в эквивалентности категорий по revenue trends.
  3. Длительность ≥ 6 недель (cycle: listing posted → push purchased → 3 days → sale).
  4. Метрики: revenue from push, total seller revenue, adoption, sell-through, listings churn (sellers leaving).
  5. Гард-метрики: complaint rate, NPS sellers, listings per seller (не уходят ли).
  6. Sensitivity test: попробовать 5% / 7% / 10% — small experiments first.
  7. Rollout: победитель выкатываем 100%, мониторим 90 дней на retention sellers.

Подводные камни

  1. revenue_from_push_ups — единственный источник истины об adoption. Но это «реализованный спрос» при текущей цене €2. Чтобы оценить кривую — нужны исторические эксперименты с разными ценами или анализ similar features.
  2. Selection: продавцы покупают push, когда товар не продается — purchase decision эндогенен. Кривая спроса измерена на «отчаявшихся».
  3. Cross-elasticity: если в одной категории дорого, продавцы переключатся в другую.
  4. Длительность action 3 дня — может быть кванти-эффект (после 3 дней стало бы больше views?).
  5. **Невозможно ввести pricing < 1¢ или > some psychological threshold (€10) без изменения user-perception.

Эталонный ответ

(I) Push-up adoption неравномерен по категориям; фиксированная цена €2 не extracts WTP. (II) Альтернатива — динамическая цена как % от listing price с floor/cap. Численно — оцениваем по logit/exp-кривой adoption vs relative_price; ожидаемый рост revenue 10–30%. (III) A/B на категориях, sticky split, 6+ недель, гарды по seller retention и complaints.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти