Сколько себя помню, каждый раз когда я пересекался с маркетологами дольше получаса, постоянно поднималась проблема аллокации маркетингового бюджета и вопрос про инкремент.
Например, почти два года назад во время ужина, тогдашний и нынешний маркетинговый директор Е-Аптеки, Наталья, задавала мне этот вопрос, надеясь что я смогу ей как то помочь. Я ей что-то напредлагал через causal impact, но особо мы ничего не сделали. Проблема аллокации настолько классическая, что есть даже избитая цитата: Half the money I spend on advertising is wasted; the trouble is I don’t know which half.
К слову, раньше ужины с Натальей мне нравились гораздо больше, ведь она была директором по маркетингу Тануки с 50% скидочной картой
Как альтернатива решения этой задачи в моей голове всегда лежала статья 2019 от чуваков из Alibaba - A Unified Framework for Marketing Budget Allocation
Недавно я наткнулся на гораздо более многообещающую и в тоже время простую штуку, которая называется MMM Robyn, выпущенная компанией Meta (aka Facebook)
https://facebookexperimental.github.io/Robyn/
К сожалению МММ означает всего лишь Marketing Mix Modeling
Попробуем разобраться что же под капотом из зачем нужен Robyn
Если взять максимальный уровень абстракции сверху - загоняем в модель данные на какой канал сколько денег потратили, сколько с него пришло пользователей и сопутствующую информацию, умная машина говорит нам что делать
Попробуем пойти чуть глубже и начнем с данных
Зависимая переменная - метрика которая нас интересует, KPI - например продажи или GMV
Независимые переменные - признаки, которые влияют на зависимую переменную: медиа маркетинг, Non-media marketing(промо, скидки), сезонность (выходные, праздники, погода и тп.), макроэкономические факторы и многое многое другое
Подробнее о данных
Медиа активность:
Цифровые каналы - идеально количество impressions, не клики, так как показы имеют накопительный эффект и тоже могут привести к конверсиям без клика
Для Радио и ТВ Gross Rating Points (GRPs) или Target Audience Rating Points (TARPs).
Для печати - количество подписчиков/проданных единиц
Учитывать ли органику? Обычно советует включать только платный трафик, теоретически можно включить и органику
Non-media marketing:
Бинарный флаг, означающий наличие или отсутствие определенного типа промо - стоит подумать над регулярностью и какие промо заслуживают своего собственного флага
Временной ряд стоимости товаров/услуг
Сезонность и праздники:
Robyn предлагает использовать для выделения этих компонент встроенный prophet
Либо считать самостоятельно и указывать дополнительными бинарными флагами различные праздники, также можно использовать температуру для явного разделения сезонов (лето/зима)
Макроэкономика:
ВВП, безработица, инфляция, в наших реалиях, наверняка курс валюты
#ArticleReview Robyn 1/8
Например, почти два года назад во время ужина, тогдашний и нынешний маркетинговый директор Е-Аптеки, Наталья, задавала мне этот вопрос, надеясь что я смогу ей как то помочь. Я ей что-то напредлагал через causal impact, но особо мы ничего не сделали. Проблема аллокации настолько классическая, что есть даже избитая цитата: Half the money I spend on advertising is wasted; the trouble is I don’t know which half.
К слову, раньше ужины с Натальей мне нравились гораздо больше, ведь она была директором по маркетингу Тануки с 50% скидочной картой
Как альтернатива решения этой задачи в моей голове всегда лежала статья 2019 от чуваков из Alibaba - A Unified Framework for Marketing Budget Allocation
Недавно я наткнулся на гораздо более многообещающую и в тоже время простую штуку, которая называется MMM Robyn, выпущенная компанией Meta (aka Facebook)
https://facebookexperimental.github.io/Robyn/
К сожалению МММ означает всего лишь Marketing Mix Modeling
Попробуем разобраться что же под капотом из зачем нужен Robyn
Если взять максимальный уровень абстракции сверху - загоняем в модель данные на какой канал сколько денег потратили, сколько с него пришло пользователей и сопутствующую информацию, умная машина говорит нам что делать
Попробуем пойти чуть глубже и начнем с данных
Зависимая переменная - метрика которая нас интересует, KPI - например продажи или GMV
Независимые переменные - признаки, которые влияют на зависимую переменную: медиа маркетинг, Non-media marketing(промо, скидки), сезонность (выходные, праздники, погода и тп.), макроэкономические факторы и многое многое другое
Подробнее о данных
Медиа активность:
Цифровые каналы - идеально количество impressions, не клики, так как показы имеют накопительный эффект и тоже могут привести к конверсиям без клика
Для Радио и ТВ Gross Rating Points (GRPs) или Target Audience Rating Points (TARPs).
Для печати - количество подписчиков/проданных единиц
Учитывать ли органику? Обычно советует включать только платный трафик, теоретически можно включить и органику
Non-media marketing:
Бинарный флаг, означающий наличие или отсутствие определенного типа промо - стоит подумать над регулярностью и какие промо заслуживают своего собственного флага
Временной ряд стоимости товаров/услуг
Сезонность и праздники:
Robyn предлагает использовать для выделения этих компонент встроенный prophet
Либо считать самостоятельно и указывать дополнительными бинарными флагами различные праздники, также можно использовать температуру для явного разделения сезонов (лето/зима)
Макроэкономика:
ВВП, безработица, инфляция, в наших реалиях, наверняка курс валюты
#ArticleReview Robyn 1/8
facebookexperimental.github.io
Robyn
Our mission is to democratise modeling knowledge, inspire the industry through innovation, reduce human bias in the modeling process & build a strong open source marketing science community.
👍17❤6
Сколько данных нужно? Минимум два года при недельной гранулярности. Лучше иметь дневную гранулярность
Кроме гранулярности во времени, мы бы хотели иметь гранулярность по переменным, как пример приводится следующая картинка
#ArticleReview Robyn 2/8
Кроме гранулярности во времени, мы бы хотели иметь гранулярность по переменным, как пример приводится следующая картинка
#ArticleReview Robyn 2/8
👍1
Какая же библиотека от Фейсбука, без другой библиотеки от Фейсбука, поэтому немного про то, какой функционал добавляет Prophet
Prophet выделяет тренд, сезон, выходные и праздники/спец события
Robyn позволяет использовать окна моделирования разной длины для MMM и для выделения тренда/сезона и прочего через Prophet.
Возникает вопрос, окно какой длины выбирать?
Зависит от многих параметров - например скорость изменения рынка и маркетинговых практик. Скорее всего нет смысл смотреть что было десять лет назад. Что насчет пяти? Двух?
Количество наблюдений на уникальное значение переменной должно бы не менее 10
#ArticleReview Robyn 3/8
Prophet выделяет тренд, сезон, выходные и праздники/спец события
Robyn позволяет использовать окна моделирования разной длины для MMM и для выделения тренда/сезона и прочего через Prophet.
Возникает вопрос, окно какой длины выбирать?
Зависит от многих параметров - например скорость изменения рынка и маркетинговых практик. Скорее всего нет смысл смотреть что было десять лет назад. Что насчет пяти? Двух?
Количество наблюдений на уникальное значение переменной должно бы не менее 10
#ArticleReview Robyn 3/8
В качестве модели выступает регрессия с L2 регуляризацией(Ridge Regression) на зависимую переменную, с рядом ограничений и задачей минимизировать две, а в некоторых случаях три функции потери
Мы можем задать ограничения (constraints) на знак коэффициентов в модели: положительный, отрицательный, никаких ограничений
Независимые переменные делим на три категории и отправляем в модель:
paid_media_vars - собственно реклама, за которую мы платили, к этим переменным еще будут применены различные трансформации, о которых дальше, чтобы оценить эффект насыщения (saturation) и накопления (adstock)
organic_vars - пуши, посты, емейлы. На эти переменные тоже можно наложить трансформации для оценки эффекта насыщения и накопления
context_vars все остальное, активность конкурентов, цены, промо, макроэкономические факторы и тп
Теперь по поводу оценки adstock и saturation
Adstock - скорее всего в реальной жизни реклама имеет не мгновенный, но накопительный эффект, сколько лет прошло, а две мясные котлеты гриль засели в памяти до сих пор
Saturation - каждая следующая единица рекламы начинает приносить меньший эффект, после достижения определенной точки
Для учета Adstock в Робине есть две опции Geometric transformation и Weibull transformation
Первое попроще, использует всего один параметр Тета, но аппроксимирует хуже, второе посложнее и тяжелее объяснить его для нетехнарей, но аппроксимирует лучше. Используется The Weibull survival function
Weibull, как более сложная трансформация требует больше итераций для оптимизации через NeverGrad(о нем позже)
Для Saturation и построения S-curve используют двухпараметрическую функцию Хила (Биохимия входит в нашу жизнь)
#ArticleReview Robyn 4/8
Мы можем задать ограничения (constraints) на знак коэффициентов в модели: положительный, отрицательный, никаких ограничений
Независимые переменные делим на три категории и отправляем в модель:
paid_media_vars - собственно реклама, за которую мы платили, к этим переменным еще будут применены различные трансформации, о которых дальше, чтобы оценить эффект насыщения (saturation) и накопления (adstock)
organic_vars - пуши, посты, емейлы. На эти переменные тоже можно наложить трансформации для оценки эффекта насыщения и накопления
context_vars все остальное, активность конкурентов, цены, промо, макроэкономические факторы и тп
Теперь по поводу оценки adstock и saturation
Adstock - скорее всего в реальной жизни реклама имеет не мгновенный, но накопительный эффект, сколько лет прошло, а две мясные котлеты гриль засели в памяти до сих пор
Saturation - каждая следующая единица рекламы начинает приносить меньший эффект, после достижения определенной точки
Для учета Adstock в Робине есть две опции Geometric transformation и Weibull transformation
Первое попроще, использует всего один параметр Тета, но аппроксимирует хуже, второе посложнее и тяжелее объяснить его для нетехнарей, но аппроксимирует лучше. Используется The Weibull survival function
Weibull, как более сложная трансформация требует больше итераций для оптимизации через NeverGrad(о нем позже)
Для Saturation и построения S-curve используют двухпараметрическую функцию Хила (Биохимия входит в нашу жизнь)
#ArticleReview Robyn 4/8
👍2
Модель обучается на регрессию целевой переменной. Признаки и их трансформации нам известны, что насчет функции потерь? Их будет как минимум две:
NRMSE-> normalized root-mean-square error - минимизируем
DECOMP.RSSD, decomposition root-sum-square distance - гениальная вещь, в описании значится как Business fit
Есть целая серия Твитов описывающих почему это круто https://twitter.com/hammer_mt/status/1460584503043362820
Допустим вы потратили 80% бюджета на продвижение в моем Телеграм канале, а модель говорит что 80% конверсий/лидов пришло из Инстаграм
Очевидно что доверять нужно моему каналу, а не какой-то там модели.
Возникает вопрос, но разве мы не строим модель для того, чтобы понять где мы делаем неправильно?
Да, но есть два допущения.
1. Мы считаем что бюджет был распределен не совсем случайно и текущая аллокация это неплохой приор от которого можно отталкиваться и итеративно идти в сторону оптимального решения, нечто вроде EM algorithm
2. Если придти к менеджменту и сказать меняем аллокацию всего бюджета в 5 млрд рублей, они могут удивиться и воспротивиться. С другой стороны, если предложить передвинуть его в рамках 3-5% - проблем обычно не возникает
Минимум две функции потерь. Значит мы можем получить бесконечное количество моделей, как же быть? Оптимизация идет посредством пакета Nevergrad, на протяжении большого числа итераций (тысячи - десятки тысяч), отображая итоговые результаты на двумерном графике.
Постафактум можно наблюдать что чем больше итераций произведено, тем ближе к нижнему левому углу находится этот вариант модели. Линией будет отмечен Pareto-front (нельзя что то улучшить, не ухудшив другое)
Финальная модель выбирается пользователем, обычно учитывают следующие параметры:
1. Экспериментальная калибровка -> имеет смысл интегрировать результаты экспериментов, где есть выводы о причинно-следственных связях
2. Бизнес инсайты -> есть уже есть надежный приор по ROI, adstock и тп или бенчмарк - следует сравнить с ними
3. Оценка распределение ROI для платных каналов -> ROAS, чем распределение уже и выше, тем больше наша уверенность в результатах
При калибровке мы добавляем еще одну функцию потерь, Mape -> Mean absolute percentage error, оцениваем разницу между фактом и прогнозом MMM
Калибровку с вливанием в модель данных от экспериментов стоит проводить на регулярной основе
Результаты от экспериментов для калибровки должны быть на том же уровне гранулярности что и МММ, с высокой уверенностью (Robyn на текущий момент на вход принимает только точечные оценки)
#ArticleReview Robyn 6/8
NRMSE-> normalized root-mean-square error - минимизируем
DECOMP.RSSD, decomposition root-sum-square distance - гениальная вещь, в описании значится как Business fit
Есть целая серия Твитов описывающих почему это круто https://twitter.com/hammer_mt/status/1460584503043362820
Допустим вы потратили 80% бюджета на продвижение в моем Телеграм канале, а модель говорит что 80% конверсий/лидов пришло из Инстаграм
Очевидно что доверять нужно моему каналу, а не какой-то там модели.
Возникает вопрос, но разве мы не строим модель для того, чтобы понять где мы делаем неправильно?
Да, но есть два допущения.
1. Мы считаем что бюджет был распределен не совсем случайно и текущая аллокация это неплохой приор от которого можно отталкиваться и итеративно идти в сторону оптимального решения, нечто вроде EM algorithm
2. Если придти к менеджменту и сказать меняем аллокацию всего бюджета в 5 млрд рублей, они могут удивиться и воспротивиться. С другой стороны, если предложить передвинуть его в рамках 3-5% - проблем обычно не возникает
Минимум две функции потерь. Значит мы можем получить бесконечное количество моделей, как же быть? Оптимизация идет посредством пакета Nevergrad, на протяжении большого числа итераций (тысячи - десятки тысяч), отображая итоговые результаты на двумерном графике.
Постафактум можно наблюдать что чем больше итераций произведено, тем ближе к нижнему левому углу находится этот вариант модели. Линией будет отмечен Pareto-front (нельзя что то улучшить, не ухудшив другое)
Финальная модель выбирается пользователем, обычно учитывают следующие параметры:
1. Экспериментальная калибровка -> имеет смысл интегрировать результаты экспериментов, где есть выводы о причинно-следственных связях
2. Бизнес инсайты -> есть уже есть надежный приор по ROI, adstock и тп или бенчмарк - следует сравнить с ними
3. Оценка распределение ROI для платных каналов -> ROAS, чем распределение уже и выше, тем больше наша уверенность в результатах
При калибровке мы добавляем еще одну функцию потерь, Mape -> Mean absolute percentage error, оцениваем разницу между фактом и прогнозом MMM
Калибровку с вливанием в модель данных от экспериментов стоит проводить на регулярной основе
Результаты от экспериментов для калибровки должны быть на том же уровне гранулярности что и МММ, с высокой уверенностью (Robyn на текущий момент на вход принимает только точечные оценки)
#ArticleReview Robyn 6/8
Twitter
Mike Taylor
So what is Decomp.RSSD? It's the decomposition root sum of squared distance, which basically means how far is your budget allocation from what the model is telling you about which channels are effective.
👍12
Из приятного, модель при поступлении новых данных можно обновить в один клик и оценить это графически
Можно посмотреть как меняется ROI каждого канала и в итоге получить предложение по аллокации бюджета
#ArticleReview Robyn 8/8
Можно посмотреть как меняется ROI каждого канала и в итоге получить предложение по аллокации бюджета
#ArticleReview Robyn 8/8
👍9🔥1
Впредь я не буду делать таких больших и подробных разборов, кажется они не совсем вписываются в тематику моего канала
Думаю вы догадались что это реклама и прямо сейчас мои товарищи Серж и Виталий ищут аналитика в Алиэкспресс, который поможет оптимизировать многомиллиардные маркетинговые бюджеты и Robyn - один из возможных подходов
Если вам это интересно, можно написать сразу мне
Условия вакансии в комментарии
Думаю вы догадались что это реклама и прямо сейчас мои товарищи Серж и Виталий ищут аналитика в Алиэкспресс, который поможет оптимизировать многомиллиардные маркетинговые бюджеты и Robyn - один из возможных подходов
Если вам это интересно, можно написать сразу мне
Условия вакансии в комментарии
👍8
Е5 - иначе именуемый синьором.
Примерная компенсация (берем США за точку отсчета)
Базовая зарплата - 180 - 220 тысяч долларов в год
Бонус - 15% от этого в год
Initial grant 500-800 тысяч долларов
Refresher ~ 120 тысяч долларов в год
Может быть бонус за подписание от 50 до 100 тысяч долларов
Total Comp порядка 400-550 тысяч долларов в год, без учета бонуса за подписание
Что ожидается от E5?
Все тоже, что требуется от Е4 плюс:
Уверенный Ownership конкретного компонента, сервиса или системы. Экспертное end-to-end понимание всего что в ней происходит
Демонстрация постоянно высокого уровня продуктивности на множестве проектов. Track Record успешного завершения крупных проектов
You are an influencer (ты авторитет). Способен проактивно находить проблемы и предлагать улучшения. Добиваться разрешения этих проблем, зачастую без сторонней помощи
Ты ищешь возможность улучшить систему, над которой ты работаешь, чтобы облегчить выкатку новых фичей
Ты помогаешь людям вокруг себя работать лучше и быстрее, определяя что тормозит команду и исправляя это
Способность лидировать небольшие проекты или небольшие команды (включая проведение митингов, написание статусов и тп)
Способность перекидывать задачи на соседние команды и соответсвенно умение строить отношения с этими командами. Умение быть эмпатичным
Помощь в улучшении своей организации( например организация в WhatsApp это WhatsApp Business или WhatsApp Integrity) через рекрутинг, менторинг буткамперов или координацию стажеров
Е5 - терминальный уровень, на нем почетно сидеть всю жизнь
#BigTechLevelsCompensation
Примерная компенсация (берем США за точку отсчета)
Базовая зарплата - 180 - 220 тысяч долларов в год
Бонус - 15% от этого в год
Initial grant 500-800 тысяч долларов
Refresher ~ 120 тысяч долларов в год
Может быть бонус за подписание от 50 до 100 тысяч долларов
Total Comp порядка 400-550 тысяч долларов в год, без учета бонуса за подписание
Что ожидается от E5?
Все тоже, что требуется от Е4 плюс:
Уверенный Ownership конкретного компонента, сервиса или системы. Экспертное end-to-end понимание всего что в ней происходит
Демонстрация постоянно высокого уровня продуктивности на множестве проектов. Track Record успешного завершения крупных проектов
You are an influencer (ты авторитет). Способен проактивно находить проблемы и предлагать улучшения. Добиваться разрешения этих проблем, зачастую без сторонней помощи
Ты ищешь возможность улучшить систему, над которой ты работаешь, чтобы облегчить выкатку новых фичей
Ты помогаешь людям вокруг себя работать лучше и быстрее, определяя что тормозит команду и исправляя это
Способность лидировать небольшие проекты или небольшие команды (включая проведение митингов, написание статусов и тп)
Способность перекидывать задачи на соседние команды и соответсвенно умение строить отношения с этими командами. Умение быть эмпатичным
Помощь в улучшении своей организации( например организация в WhatsApp это WhatsApp Business или WhatsApp Integrity) через рекрутинг, менторинг буткамперов или координацию стажеров
Е5 - терминальный уровень, на нем почетно сидеть всю жизнь
#BigTechLevelsCompensation
👍27❤2
Незадолго до моего ухода в WhatsApp Integrity запустили внутреннее соревнование по машинному обучению.
Выгрузили примерно 1 млрд сэмлов с прода за небольшой период времени, вышло чуть больше ТБ данных. Разбили по времени на трейн и тест, 31 декабря подвели итоги.
Победителем оказался я. Текущую метрику с продакшена удалось улучшить почти на 80%. Ещё в ноябре, перед моим уходом, техлид этой команды попросил передать ему код. По словам людей вокруг него сейчас он очень рад, ведь интеграция решения оказалась несложной, а прирост ощутимым
Кажется у него будет неплохая оценка на ревью, а я возможно получу какой то приз, если его отправят. New hire welcome pack я всё ещё не получил
На этой прекрасной ноте я желаю вам всем хорошего нового года
Выгрузили примерно 1 млрд сэмлов с прода за небольшой период времени, вышло чуть больше ТБ данных. Разбили по времени на трейн и тест, 31 декабря подвели итоги.
Победителем оказался я. Текущую метрику с продакшена удалось улучшить почти на 80%. Ещё в ноябре, перед моим уходом, техлид этой команды попросил передать ему код. По словам людей вокруг него сейчас он очень рад, ведь интеграция решения оказалась несложной, а прирост ощутимым
Кажется у него будет неплохая оценка на ревью, а я возможно получу какой то приз, если его отправят. New hire welcome pack я всё ещё не получил
На этой прекрасной ноте я желаю вам всем хорошего нового года
🎉92🔥30👍10
Почти два месяца прошло как я ушел из Фейсбука, но подарки все ещё продолжают приходить. В честь достижения Вотсапом отметки в 2.5 млрд активных пользователей всем сотрудникам отправили подарок: шапочку, термокружку и кофту. Учитывая что вчера было +16, возможно шапочку этой зимой мне поносить не удастся
👍28🔥5
Меня регулярно спрашивают различных постах здесь в канале и в личных сообщениях почему я ушел из Фейсбука в Блокчейн. Поэтому я решил повторить пост, написанный мною 10 сентября 2021 года в Open Data Science
На днях в Фейсбуке закончился перфоманс ревью. Вышло неплохо - вся моя команда получила минимум exceeds, кому то удалось выбить промо. Очевидно после такого остается только одно. Сегодня я написал заявление на уход из Фейсбука и с середины ноября меня там, как минимум временно, не будет.
Предшествовало этому встреча с менеджементом, по итогам которой меня попросили ответить на вопрос что я хочу со следующего полугодия, пойти по M ветке и перейти на М1 или стать E7. Я попросил две недели на подумать и объявил свое решение.
Решение уйти из Фейсбука было явно не тем, что ожидалось от меня и погрузило менеджмент в минуту молчания
Вместе с уходом можно кратко рассказать что же послужило причиной похода в Фейсбук
#WhyLeftFacebook 1/3
На днях в Фейсбуке закончился перфоманс ревью. Вышло неплохо - вся моя команда получила минимум exceeds, кому то удалось выбить промо. Очевидно после такого остается только одно. Сегодня я написал заявление на уход из Фейсбука и с середины ноября меня там, как минимум временно, не будет.
Предшествовало этому встреча с менеджементом, по итогам которой меня попросили ответить на вопрос что я хочу со следующего полугодия, пойти по M ветке и перейти на М1 или стать E7. Я попросил две недели на подумать и объявил свое решение.
Решение уйти из Фейсбука было явно не тем, что ожидалось от меня и погрузило менеджмент в минуту молчания
Вместе с уходом можно кратко рассказать что же послужило причиной похода в Фейсбук
#WhyLeftFacebook 1/3
👍36🔥6🤩4
Весной 2020 года передо мной стоял непростой выбор. Фейсбук Лондон - где меня задаунгрейдили на пару левелов, до Е6 или весьма известный финтех в Лондоне, где СЕО будет моим непосредственным боссом, а текущая команда уже порядка 150 человек.
На стороне Финтеха знакомая задача, я немногое в жизни умею делать, но кажется что быть Head of DS у меня получается. Эта работа мне понятна и уже неоднократно в разных местах делана. С другой стороны этот стартап известен тем что топы там не задерживаются надолго.
Несмотря на это, СЕО и вся команда топов с которой я общался мне понравились, но я понимал что СЕО человек весьма непростой. Вариант что через 3-6 месяцев я оттуда вылечу по причине того что либо я им, либо они мне не подойдут был весьма реалистичен, а с учетом переезда в Лондон - это было бы явным проигрышем и ударом по моей репутации
В картинке письмо с финальным офером от финтеха от 23 апреля 2020 года - на мой день рождения. Еще 400 000 фунтов опционами выдавались как sign on
#WhyLeftFacebook 2/3
На стороне Финтеха знакомая задача, я немногое в жизни умею делать, но кажется что быть Head of DS у меня получается. Эта работа мне понятна и уже неоднократно в разных местах делана. С другой стороны этот стартап известен тем что топы там не задерживаются надолго.
Несмотря на это, СЕО и вся команда топов с которой я общался мне понравились, но я понимал что СЕО человек весьма непростой. Вариант что через 3-6 месяцев я оттуда вылечу по причине того что либо я им, либо они мне не подойдут был весьма реалистичен, а с учетом переезда в Лондон - это было бы явным проигрышем и ударом по моей репутации
В картинке письмо с финальным офером от финтеха от 23 апреля 2020 года - на мой день рождения. Еще 400 000 фунтов опционами выдавались как sign on
#WhyLeftFacebook 2/3
👍31🔥12😱10❤2