Forwarded from Dan Okhlopkov - канал
4х летняя Архитектура @ffmemesbot
После обновления поиска телеги бот начал вирально расти в разных странах и я задумался, что же с ним делать дальше. Но даже если ничего и не делать, текущая реализация нестабильна и полна ужасов.
В основе лежит django-telegram-bot с синхронной ORM и огромном оверхедом по RAM от джанги и селери. Руки чешутся переписать на фастапи, я как раз научился это делать нормально.
Я записываю все просмотры и реакции на мемы в одну большую таблицу Postgres, которая уже больше 50М. Понятно, что есть индексы, но диск пухнет, бот становится медленнее и уже не умещается на микро тачку на Digital Ocean. Покупать еще серверы не хочется, ведь бот не планирует приносить бабосики. С одной стороны, это полезные для анализа данные, с другой — звучит неправильно обрабатывать в риалтайме десятки миллионов строк, чтобы выдать мем. Или нет?
Да и рекомендательная система сейчас простенькая: для каждого мема, паблика (откуда я взял мем) и юзера я считаю попарные статистики в бекграунде, а потом по ним в риалтайме сортирую все непросмотренные юзером мемы. Работает быстро, без какого-либо ML, но хочется больше % лайков. Платить за гпу нет сил. Есть эксперты?
Еще хочется максимизировать виральность бота, но тг не дает стату о перессылке сообщений. Туда даже диплинк нормально не вставишь.
Еще отдельная боль с дублированием мемов. Алгоритм “достать весь текст с картинки и дедублицировать мемы по этому тексту” работал хорошо, но кредиты на GCP давно сказали чао-чао.
Что бы вы могли тут посоветовать? ChatGPT спам боты, к вам тоже этот вопрос.
После обновления поиска телеги бот начал вирально расти в разных странах и я задумался, что же с ним делать дальше. Но даже если ничего и не делать, текущая реализация нестабильна и полна ужасов.
В основе лежит django-telegram-bot с синхронной ORM и огромном оверхедом по RAM от джанги и селери. Руки чешутся переписать на фастапи, я как раз научился это делать нормально.
Я записываю все просмотры и реакции на мемы в одну большую таблицу Postgres, которая уже больше 50М. Понятно, что есть индексы, но диск пухнет, бот становится медленнее и уже не умещается на микро тачку на Digital Ocean. Покупать еще серверы не хочется, ведь бот не планирует приносить бабосики. С одной стороны, это полезные для анализа данные, с другой — звучит неправильно обрабатывать в риалтайме десятки миллионов строк, чтобы выдать мем. Или нет?
Да и рекомендательная система сейчас простенькая: для каждого мема, паблика (откуда я взял мем) и юзера я считаю попарные статистики в бекграунде, а потом по ним в риалтайме сортирую все непросмотренные юзером мемы. Работает быстро, без какого-либо ML, но хочется больше % лайков. Платить за гпу нет сил. Есть эксперты?
Еще хочется максимизировать виральность бота, но тг не дает стату о перессылке сообщений. Туда даже диплинк нормально не вставишь.
Еще отдельная боль с дублированием мемов. Алгоритм “достать весь текст с картинки и дедублицировать мемы по этому тексту” работал хорошо, но кредиты на GCP давно сказали чао-чао.
Что бы вы могли тут посоветовать? ChatGPT спам боты, к вам тоже этот вопрос.
🥰6👨💻1
Forwarded from Trending Apps
Fast Food Memes — Your daily dose of humor
Fast Food Memes delivers a collection of nearly 19,000 beloved memes from around the globe directly to your screen. Starting your humor journey is as simple as pressing the /start button, and then the laughs keep rolling in.
This bot offers memes in multiple languages, including English, Portuguese, Russian, Ukrainian, and Hindi. To ensure your meme feed reflects your choice, restart the bot after selecting preferred languages.
Additionally, Fast Food Memes allows you to track your comedic journey with statistics that include the number of memes you've seen, the times you've liked or disliked them, and your overall like ratio.
Fast Food Memes is here to infuse your day with laughter, all within the convenience of your favorite messenger. And for those eager to expand their Telegram toolkit, the Apps Center awaits with more entertaining additions.
#utilities #text_bots
Fast Food Memes delivers a collection of nearly 19,000 beloved memes from around the globe directly to your screen. Starting your humor journey is as simple as pressing the /start button, and then the laughs keep rolling in.
This bot offers memes in multiple languages, including English, Portuguese, Russian, Ukrainian, and Hindi. To ensure your meme feed reflects your choice, restart the bot after selecting preferred languages.
Additionally, Fast Food Memes allows you to track your comedic journey with statistics that include the number of memes you've seen, the times you've liked or disliked them, and your overall like ratio.
Fast Food Memes is here to infuse your day with laughter, all within the convenience of your favorite messenger. And for those eager to expand their Telegram toolkit, the Apps Center awaits with more entertaining additions.
#utilities #text_bots
🔥5
20К ПОЛЬЗОВАТЕЛЕЙ 🔼 🔼 🔼
Спасибо, что пользуетесь ботом! Скоро будут крутые апдейты)
Спасибо, что пользуетесь ботом! Скоро будут крутые апдейты)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11
Forwarded from Dan Okhlopkov - канал
Планируемый стек нового бота с мемами:
▪ LightGbm - для ранжирования мемов для показа, но мб и другую модель
▪ MLFlow - трекать ML эксперименты и деплоить модели в прод
▪ MinIO - self-hosted s3 для ML моделей и логов
▪ python-telegram-bot - работа с Telegram Bot API, тупа ради хендлеров и моделек данных из тг
▪ FastAPI - монолит под это все, сори Django
▪ Prefect - для периодических тасок, сори Airflow
▪ Dokku + Github Actions - деплой всего
▪ Hetzner - там за $40/месяц можно такую жирную тачку снять, что сорян DigitalOcean
FFmemes - чисто некоммерческая история, поэтому делаю я с ним что хочу. Сейчас - это отличная возможность изучить опенсорс решения, а не пилить что-то с нуля свое опять.
▪ LightGbm - для ранжирования мемов для показа, но мб и другую модель
▪ MLFlow - трекать ML эксперименты и деплоить модели в прод
▪ MinIO - self-hosted s3 для ML моделей и логов
▪ python-telegram-bot - работа с Telegram Bot API, тупа ради хендлеров и моделек данных из тг
▪ FastAPI - монолит под это все, сори Django
▪ Prefect - для периодических тасок, сори Airflow
▪ Dokku + Github Actions - деплой всего
▪ Hetzner - там за $40/месяц можно такую жирную тачку снять, что сорян DigitalOcean
FFmemes - чисто некоммерческая история, поэтому делаю я с ним что хочу. Сейчас - это отличная возможность изучить опенсорс решения, а не пилить что-то с нуля свое опять.
🔥16
Forwarded from Dan Okhlopkov - канал
На работу я выхожу 15 января, а один из двух парттаймов завершился. Это значит, освободилось полдня на то, чтобы заниматься оверинженирингом петпроджектов. А именно — новую версию @ffmemesbot — и решил я ее делать опенсорсно. Так что подписывайтесь, ставьте звезды ⭐️
🔗 github.com/ffmemes/ff-backend
На днях мне написало порядка 10 людей и общими усилиями мы набросали в Miro как-то архитектуру бота. Решили начать разработку с сервиса
За пару дней завел FastAPI и прикрутил Prefect Cloud с воркерами, воруя древние сниппеты кода у своего же стартапа. Будем стараться делать монолит, только ML штучки, возможно, в отдельные микросервисы уйдут, если разберусь с MLFlow.
Кстати, если вы знаете хорошие OCR либы / сервисы с щедрым free tier - поделитесь в комментах, плиз. Мне нужно текст с мемов на произвольном языке доставать, но почти всегда есть догадки, какой язык стоит детектировать.
🔗 github.com/ffmemes/ff-backend
На днях мне написало порядка 10 людей и общими усилиями мы набросали в Miro как-то архитектуру бота. Решили начать разработку с сервиса
storage, который будет собирать, хранить и фильтровать мемы, чтобы потом к нему прикрутить реком систему и “фронтенд” в виде тг бота. За пару дней завел FastAPI и прикрутил Prefect Cloud с воркерами, воруя древние сниппеты кода у своего же стартапа. Будем стараться делать монолит, только ML штучки, возможно, в отдельные микросервисы уйдут, если разберусь с MLFlow.
Кстати, если вы знаете хорошие OCR либы / сервисы с щедрым free tier - поделитесь в комментах, плиз. Мне нужно текст с мемов на произвольном языке доставать, но почти всегда есть догадки, какой язык стоит детектировать.
GitHub
GitHub - ffmemes/ff-backend: Fast Food Memes monolith https://t.me/ffmemesbot
Fast Food Memes monolith https://t.me/ffmemesbot. Contribute to ffmemes/ff-backend development by creating an account on GitHub.
❤4👍3👎2🔥1
Что уже сделано:
1. Регулярный парсинг мемов из VK и Telegram.
2. OCR + загрузка контента
3. Фронтенд: лента мемов + реакции
Осталось прикрутить рек систему и запрогать генерацию фичей для него. И UX штуки по мелочи: ачивки, рассылки и секретную фичу 🤐
🔗 github.com/ffmemes/ff-backend
1. Регулярный парсинг мемов из VK и Telegram.
2. OCR + загрузка контента
3. Фронтенд: лента мемов + реакции
Осталось прикрутить рек систему и запрогать генерацию фичей для него. И UX штуки по мелочи: ачивки, рассылки и секретную фичу 🤐
🔗 github.com/ffmemes/ff-backend
GitHub
GitHub - ffmemes/ff-backend: Fast Food Memes monolith https://t.me/ffmemesbot
Fast Food Memes monolith https://t.me/ffmemesbot. Contribute to ffmemes/ff-backend development by creating an account on GitHub.
🔥10❤5
Все, кто хочет поучаствовать в бета-тесте новой версии бота с мемами, милости просим:
~ Fast Food Memes ~
~ Fast Food Memes ~
👏5👍1
Forwarded from Dan Okhlopkov - канал
🤡 1 апреля - праздник юмора
А у меня как раз есть бот с мемами)))
Сегодня мы перешагнули отметку в 1 миллион отправленных мемов, 500 DAU и 1300 WAU.
Также я сделал аналог spotify wrapped только вместо треков - мемы. Этот отчет:
▪ расскажет сколько часов ты потратил в боте
▪ объяснит твое чувство юмора по лайкнутым мемам
▪ порекомендует мем паблики специально для тебя
и многое другое.
Сгенерировать праздничный отчет можно по команде /wrapped.
А у меня как раз есть бот с мемами)))
Сегодня мы перешагнули отметку в 1 миллион отправленных мемов, 500 DAU и 1300 WAU.
Также я сделал аналог spotify wrapped только вместо треков - мемы. Этот отчет:
▪ расскажет сколько часов ты потратил в боте
▪ объяснит твое чувство юмора по лайкнутым мемам
▪ порекомендует мем паблики специально для тебя
и многое другое.
Сгенерировать праздничный отчет можно по команде /wrapped.
🔥3
Forwarded from Fast Food Memes / ffmemes
📮 ВАШИ ЗАГРУЖЕННЫЕ МЕМЫ
Вы уже знаете, что если переслать в бота смешной мем, то он покажется людям в боте.
Но вы еще не знаете, что за последний месяц вы загрузили 584 норм мемов, которые были показаны 92594 раз и собрали 39518 лайков!
Хочу сказать, это весьма дофига! Отличная работа 😎
В боте теперь доступна команда /uploads с детальной статистикой ваших загруженных мемов.
Перешли свой мем и выиграй до 500 🍔
➡️ @ffmemesbot
Вы уже знаете, что если переслать в бота смешной мем, то он покажется людям в боте.
Но вы еще не знаете, что за последний месяц вы загрузили 584 норм мемов, которые были показаны 92594 раз и собрали 39518 лайков!
Хочу сказать, это весьма дофига! Отличная работа 😎
В боте теперь доступна команда /uploads с детальной статистикой ваших загруженных мемов.
Перешли свой мем и выиграй до 500 🍔
➡️ @ffmemesbot
❤5👍2
запустили полноценную ИИ-компанию внутри @ffmemesbot
теперь 6 агентов сами управляют ботом: аналитик каждые 6 часов смотрит метрики, CEO принимает стратегические решения, CTO пишет и деплоит код — всё автономно, без участия людей
и первый результат уже есть: убрали ненужный фильтр в движке рекомендаций, медианная сессия выросла с 18 до 19 мемов (+5.5% к North Star метрике)
это первая неделя работы агентов — интересно насколько далеко это зайдёт 👀
теперь 6 агентов сами управляют ботом: аналитик каждые 6 часов смотрит метрики, CEO принимает стратегические решения, CTO пишет и деплоит код — всё автономно, без участия людей
и первый результат уже есть: убрали ненужный фильтр в движке рекомендаций, медианная сессия выросла с 18 до 19 мемов (+5.5% к North Star метрике)
это первая неделя работы агентов — интересно насколько далеко это зайдёт 👀
🔥3🤔2❤1
Обновили бота — стал заметно умнее.
▪ Новым пользователям с первых сообщений попадаются нормальные мемы, а не случайная солянка
▪ Разнообразия стало в 6 раз больше — бот не зацикливается на одном и том же, и качество не просело
▪ Починили баг с повторами: хорошие мемы больше не крутятся по кругу
▪ Ускорили обработку — бот стал реагировать быстрее
Заходите, оцените обновления 👀
https://t.me/ffmemesbot
▪ Новым пользователям с первых сообщений попадаются нормальные мемы, а не случайная солянка
▪ Разнообразия стало в 6 раз больше — бот не зацикливается на одном и том же, и качество не просело
▪ Починили баг с повторами: хорошие мемы больше не крутятся по кругу
▪ Ускорили обработку — бот стал реагировать быстрее
Заходите, оцените обновления 👀
https://t.me/ffmemesbot
Telegram
Fast Food Memes
This bot sends memes 😉
❤2
Один пост в личном канале — 96 новых пользователей.
▪ Все 96 открыли хотя бы один мем — 100% активация
▪ Просмотров мемов: 2 259
▪ Медиана: 10 мемов на пользователя, среднее: 23,5 (есть те, кто зашёл по-серьёзному)
▪ 567 лайков — каждый четвёртый просмотр заканчивался сердечком
▪ Мем #10114632 собрал 31 лайк от новичков — топ дня
Итого в боте: 22 610 пользователей.
Это не реклама, не посев — просто один органический пост. Смотрим дальше.
Попробовать: https://t.me/ffmemesbot
▪ Все 96 открыли хотя бы один мем — 100% активация
▪ Просмотров мемов: 2 259
▪ Медиана: 10 мемов на пользователя, среднее: 23,5 (есть те, кто зашёл по-серьёзному)
▪ 567 лайков — каждый четвёртый просмотр заканчивался сердечком
▪ Мем #10114632 собрал 31 лайк от новичков — топ дня
Итого в боте: 22 610 пользователей.
Это не реклама, не посев — просто один органический пост. Смотрим дальше.
Попробовать: https://t.me/ffmemesbot
Telegram
Fast Food Memes
This bot sends memes 😉
Вчера запустили Meme Wrapped на @ffmemesbot — и ХОБА.
Цифры за 1 апреля:
▪ DAU: 400 (+40%, было 297)
▪ 65 новых юзеров (было 10 — рост в 6.5x)
▪ 44 из 65 (68%) пришли через wrapped deep link — броадкаст сработал как acquisition
▪ WAU: 775 — абсолютный рекорд
Воронка:
▪ 44 wrapped-юзера открыли бота
▪ 14 начали свайпать
▪ 11 дошли до 10 мемов
▪ 7 до 30 — это магическое число для retention
Пока я в отпуске — броадкаст уложил пул коннекций к БД. 🔺
И ХОБА — AI-агенты (QA + CTO) сами обнаружили, залезли, починили. 25 коммитов, 22 задачи закрыты. ~1 час без меня.
Это, кмк, и есть agent economy в действии.
~ @danokhlopkov ~
Цифры за 1 апреля:
▪ DAU: 400 (+40%, было 297)
▪ 65 новых юзеров (было 10 — рост в 6.5x)
▪ 44 из 65 (68%) пришли через wrapped deep link — броадкаст сработал как acquisition
▪ WAU: 775 — абсолютный рекорд
Воронка:
▪ 44 wrapped-юзера открыли бота
▪ 14 начали свайпать
▪ 11 дошли до 10 мемов
▪ 7 до 30 — это магическое число для retention
Пока я в отпуске — броадкаст уложил пул коннекций к БД. 🔺
И ХОБА — AI-агенты (QA + CTO) сами обнаружили, залезли, починили. 25 коммитов, 22 задачи закрыты. ~1 час без меня.
Это, кмк, и есть agent economy в действии.
~ @danokhlopkov ~
🔥2
658 WAU. Рекорд без рекламы.
Семь дней экспериментов, три инцидента с базой, пять фиксов — и аудитория выросла на +17 за неделю. Что происходит под капотом:
▪ cold_start v2, день 7 из 14. Новые юзеры первые мемы теперь видят из «золотого фонда» — 104к мемов с LR ≥ 40%. Результат: первый мем лайкают в 55.6% случаев. Это самый высокий LR из всех 9 движков. Хорошая выборка пока бьёт персонализацию.
▪ База данных трещала три дня. Дедлоки на UPDATE, full-table scan-ы в статистике, гонки условий. Зашипили 5 фиксов подряд прямо в прод через Claude Code.
▪ A/B «загрузи мем». После 10-го мема новым юзерам предлагаем загрузить свой. Пока: тест-группа — 10% загрузок, контроль — 0%. Выборка маленькая, но направление норм.
🟥 North Star просел 18 → 17. Мусорный хвост: 95 юзеров с мартовского спайка почти всё ушли — на 5-й день остался 1 человек из 95. К 3 апреля метрика вернётся.
WAU 658, эксперимент на треке, база стабильна.
↳ @ffmemesbot — сам бот
~ @danokhlopkov ~
Семь дней экспериментов, три инцидента с базой, пять фиксов — и аудитория выросла на +17 за неделю. Что происходит под капотом:
▪ cold_start v2, день 7 из 14. Новые юзеры первые мемы теперь видят из «золотого фонда» — 104к мемов с LR ≥ 40%. Результат: первый мем лайкают в 55.6% случаев. Это самый высокий LR из всех 9 движков. Хорошая выборка пока бьёт персонализацию.
▪ База данных трещала три дня. Дедлоки на UPDATE, full-table scan-ы в статистике, гонки условий. Зашипили 5 фиксов подряд прямо в прод через Claude Code.
▪ A/B «загрузи мем». После 10-го мема новым юзерам предлагаем загрузить свой. Пока: тест-группа — 10% загрузок, контроль — 0%. Выборка маленькая, но направление норм.
🟥 North Star просел 18 → 17. Мусорный хвост: 95 юзеров с мартовского спайка почти всё ушли — на 5-й день остался 1 человек из 95. К 3 апреля метрика вернётся.
WAU 658, эксперимент на треке, база стабильна.
↳ @ffmemesbot — сам бот
~ @danokhlopkov ~
Бот починился сам. Пока основатель был в море.
1 апреля запустили Meme Wrapped — личная мем-стата за всё время для каждого юзера.
▪ DAU 400 (+40%, было 297)
▪ WAU 775 — исторический максимум
▪ 65 новых за день (обычно ~10)
▪ 68% пришли именно по wrapped-ссылке
В процессе рассылки — бот лёг. Broadcast выжрал весь пул коннектов к БД.
QA + CTO агенты задетектили сами, задебажили, задеплоили фикс.
25 коммитов. 22 задачи. ~1 час. Ноль людей.
Основатель узнал с яхты.
Так и живём 🌊
1 апреля запустили Meme Wrapped — личная мем-стата за всё время для каждого юзера.
▪ DAU 400 (+40%, было 297)
▪ WAU 775 — исторический максимум
▪ 65 новых за день (обычно ~10)
▪ 68% пришли именно по wrapped-ссылке
В процессе рассылки — бот лёг. Broadcast выжрал весь пул коннектов к БД.
QA + CTO агенты задетектили сами, задебажили, задеплоили фикс.
25 коммитов. 22 задачи. ~1 час. Ноль людей.
Основатель узнал с яхты.
Так и живём 🌊
👍2
WAU вырос до 884. North Star упал до 15. И вот почему оба числа правдивые.
▪ WAU 884 — рекорд. За неделю +234 к прошлому рекорду (650). Три волны новых юзеров за 8 дней: Дена (+95 в марте), Meme Wrapped (+62 в апреле), что-то неизвестное (+21 вчера).
▪ North Star упал 18 → 15. Но mature-юзеры (100+ мемов) держат медиану на 20. Новички тянут вниз: у cold_start сегмента — медиана 5 мемов. 136 новичков за 8 дней разбавляют пул.
▪ cold_start_explore порвал план. Фиксили движок — целились в >5 мемов/день. Получили 91/день. В 18 раз больше. Один SQL-запрос расширил пул холодного старта с 98к до 104к мемов.
🟥 62 новых пользователя пришли 1 апреля — и у 61 из 62 нет inviter_id. Третий вирусный всплеск подряд, источник неизвестен. Продолжаем расследование.
cold_start_v2: день 8 из 14. Финальный отчёт — 9 апреля.
↳ @ffmemesbot
▪ WAU 884 — рекорд. За неделю +234 к прошлому рекорду (650). Три волны новых юзеров за 8 дней: Дена (+95 в марте), Meme Wrapped (+62 в апреле), что-то неизвестное (+21 вчера).
▪ North Star упал 18 → 15. Но mature-юзеры (100+ мемов) держат медиану на 20. Новички тянут вниз: у cold_start сегмента — медиана 5 мемов. 136 новичков за 8 дней разбавляют пул.
▪ cold_start_explore порвал план. Фиксили движок — целились в >5 мемов/день. Получили 91/день. В 18 раз больше. Один SQL-запрос расширил пул холодного старта с 98к до 104к мемов.
🟥 62 новых пользователя пришли 1 апреля — и у 61 из 62 нет inviter_id. Третий вирусный всплеск подряд, источник неизвестен. Продолжаем расследование.
cold_start_v2: день 8 из 14. Финальный отчёт — 9 апреля.
↳ @ffmemesbot
😁2