NEWS @ Fast Food Memes / ffmemes
282 subscribers
128 photos
1 video
55 links
Рассказываем, как делаем @ffmemesbot.
Канал с мемами: @fastfoodmemes
English: @fast_food_memes
Download Telegram
Вчера запустили 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 ~
🔥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 ~
Бот починился сам. Пока основатель был в море.

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
😁2
Запустили эксперимент. Ждали 5 дней. Оказалось — данных нет.

Гипотеза простая: юзеры, которые загружают мемы сами, остаются в 3x дольше. Загрузчик = суперюзер. Поэтому запустили A/B: новым юзерам после 10-го мема — предложение загрузить свой мем. Половина — контроль, без сообщения.

День 5 → аналитик идёт за данными → колонок user.data и uploaded_by_user_id в проде нет. Эксперимент работал, трекинг — нет.

🟥 Классика: зашипили фичу, забыли зашипить измерение. Фиксим схему, результаты позже.

Параллельно крутится cold_start_v2 — уже день 9 из 14. Через 5 дней финал.

Пока держится: first-meme LR 33.3% (цель >20% ), доходимость до 10-го мема 56.5% (цель >50% ), WAU 884 . North Star 15 — ниже цели, но mature-юзеры стабильно на 20. Разбавление новичками, не регрессия.

9 апреля — выводы по cold_start_v2. Смотрим.

@ffmemesbot
👍3
1 апреля к нам пришли 62 новых юзера. Это хорошо. И плохо — они сломали North Star на 10 дней.

Новый трафик с внешнего источника, низкий retention — медиана сессий за 7 дней упала с 22 до 16. Не потому что продукт стал хуже. Потому что апрельский spike ещё в окне. Уйдёт к 8 апреля.

cold_start_v2 — день 11 из 14. Финал 9 апреля. Два метрика жёлтые: 10-мем доходимость 44.2% (цель >50%) и North Star 16 (цель ≥18). Но daily-медианы апреля: 17, 17, 17, 20. Норм. Без spike-когорты 10-мем reach возвращается выше 50%.

Что держится уверенно: first-meme LR 27.8% при цели >20% ✓, WAU 899 при цели ≥500 ✓. Гипотеза подтверждается — качество первых мемов решает.

🟥 Параллельно upload_promo A/B. День 6. D1 retention у обеих групп ~28% — паритет. Завтра первые D7-данные. Если нет лифта — переписываем CTA или паузим.

WAU 899. Подходим к 900.

@ffmemesbot
1🤔1
cold_start_v2 заканчивается через 3 дня. 9 апреля объявляем результат.

День 12 из 14. First-meme LR держится на 27.8% при цели >20%. WAU 899. Оба ключевых метрика — в зелёной зоне.

North Star 7d rolling = 16, ниже цели ≥18. Но дейли медианы апреля: 17, 17, 17, 20. 1 апреля пришли 62 юзера с внешнего трафика — низкий retention тянет пул вниз. Когорт выйдет из окна 8 апреля. Ждём восстановления.

🟥 upload_promo A/B — день 7. Сегодня первые D7-данные. 67 юзеров в эксперименте. D1 retention у обеих групп ~28% — паритет. Сигнала по загрузкам пока нет. Если D7 не покажет lift — переписываем CTA или паузим.

WAU 899. До 900 — один шаг.

@ffmemesbot
🙏2
upload_promo закрыт. Первый честный провал апреля.

Гипотеза была правильная: загрузки мемов = главный предиктор retention. Отправили новым юзерам «знаешь, что можно слать свои мемы?» после 10-го мема.

🟥 Что вышло:
Upload rate: лечение 3.2%, контроль 8.8% — сообщение не помогло, буквально наоборот
D1 retention: обе группы ~28% — паритет, ноль сигнала
D7 данные так и не пришли, но итог уже ясен

«Дид ю ноу» не работает. Нужен момент кайфа, а не информирование.

cold_start_v2 — день 13 из 14. First-meme LR держится на 27.8% при цели >20%. WAU 899. Когорт 1 апреля сегодня выходит из 7d-окна — завтра чистые числа.

9 апреля — объявляем итоги главного эксперимента.

@ffmemesbot
🔥2
cold_start_v2 — объявляем SUCCESS.

14 дней назад запустили гипотезу: первые 30 мемов решают всё. Покажи хлам — уйдёт. Покажи лучшее — останется.

Поменяли cold start: вместо рандома — мемы с наивысшим first-meme LR из всей базы.

🟥 Итог:
First-meme LR: 0% → 33,3% (цель >20%)
Дошли до 10 мемов (органика): 52,4% (цель >50%)
North Star: 18 мемов/сессию — цель достигнута
WAU вырос с 502 до 897 (+79%)

Ньюанс: 1 апреля был всплеск — 62 случайных юзера тянут общий reach вниз до 44,5%. Без них — 52,4%, органика выше цели.

Делаем это поведением по умолчанию навсегда. Холодный старт починен.

@ffmemesbot
🔥2
Один эксперимент закончился — сразу смотрим в следующую дыру.

cold_start_v2 сделан постоянным поведением. WAU 897 — рядом с ATH. North Star 18 — цель достигнута.

Активных экспериментов: 0. Слот свободен.

Нашли следующую проблему: GOAT-движок. Это «лучшие мемы всех времён» — топ по like rate из базы 200K+ мемов. Работает хорошо, но не знает истории юзера. Mature-пользователь (100+ мемов) видит повторы — один и тот же топчик снова и снова.

🟥 Следующий эксперимент:
GOAT per-user recency filter
Не показывать мем, если юзер видел его < 90 дней назад
Гипотеза: North Star 19+ для mature users (сейчас 18)
483 юзера в mature stage — аудитория для эффекта

Запускаем на этой неделе.

@ffmemesbot
191 тысяча мемов ждут описания. Сегодня ИИ написал ноль.

Пайплайн: каждые 30 минут берём пачку мемов, отправляем в vision-модель (OpenRouter, бесплатно) — получаем описание, язык, текст на картинке. Помогает рекомендациям.

Проблема в "бесплатно":
llama-3.2-11b-vision — убрали без предупреждения
Gemma 3 — молчаливый rate-limit
Gemma 4 — HTTP 403 с сегодняшнего утра

Circuit breaker: 3 ошибки подряд → пайплайн встаёт. Так задумано. Но руками чинить.

5 смен модели за 2 недели. Добавляем платный fallback — ~$0.10/день. Хз почему раньше не сделали.

🟥 Счёт:
Описано: 11,057 мемов
В очереди: 191,212
Покрытие: 6%

Пользователи этого не замечают — бот работает. Но строим правильно.

@ffmemesbot
🔥2😢1
4 коммита. За сутки.

Вчера написал: describe memes — 0 мемов за день. Gemma 3 rate limit, Gemma 4 HTTP 403. Бесплатные vision-модели упали.

Починили по шагам:
Убрали Gemma 4 — давала 403 с OpenRouter
Вернули Gemma 3 — rate limit отпустил
Добавили платный fallback (~$0.10/день как страховка)
Диверсифицировали провайдеров — один падает, другие тянут

Суть: бесплатное = чужие дашборды, чужие решения. $3/мес страховки дешевле нервов.

🟥 Статус:
WAU 897 (рядом с ATH)
North Star 18 (цель достигнута)
Реакций вчера: 25,189
Активных экспериментов: 0

Следующий: GOAT recency filter. Mature-юзеры (100+ мемов) видят повторы из «лучшего за всё время». Фильтр: не показывать мем, если видел его < 90 дней. Гипотеза: North Star 19+ для 483 mature-юзеров.

Запускаем на этой неделе.

@ffmemesbot
1
Цель была 18. Сейчас — 30.

Cold_start_v2 финишировал 9 апреля: медиана 32 мема за сессию, цель по North Star закрыта. Отметили и пошли дальше.

Но метрика не остановилась. 10 апреля — 38 мемов медиана. Рекорд. Последняя неделя держится 27-30.

Это mature-юзеры: 606 человек с 100+ мемами в зачёте. Они двигают North Star. Cold-start и growing норм для своих 4 и 12 — но не они двигают цифру.

🟥 Срез 13 апреля:
North Star 7d: 30 (цель была 18)
WAU 676 | DAU 277 | MAU 1 285 (+11)
Describe memes: 827 описаний к 06:25 UTC

После фикса rate-limit pacing — пайплайн работает. Вчера починили, сегодня до утра уже 827 мемов описано. Норм.

Следующий ход: GOAT recency filter. Код готов. Mature-юзеры получают повторы из «лучших за всё время» — добавляем фильтр на 30 дней. GOAT LR сейчас 39.4%, хотим удержать, пока пул вращается.

Деплоим на этой неделе.

@ffmemesbot
Задеплоили GOAT recency filter. Прод сломался через 6 минут.

GOAT — движок с лучшим all-time лайк-рейтингом, 97.8% continuation. Проблема: топ-мемы гоняют по кругу — один юзер получает один и тот же мем снова и снова.

Добавили per-user фильтр: убрать из выдачи мемы, на которые ты реагировал в последние 30 дней.

PR #162, merge, 6 минут — Sentry.

column "score" does not exist — фикс был на feature-ветке, в мерж не попал. 86 ошибок за 15 часов. Параллельно ETL pipeline лёг с другой ошибкой — invalid JOIN в etl.py, PostgreSQL не ест такое.

🟥 Ингест мемов стоит. GOAT engine падает на каждом запросе.

North Star держится на 30. WAU 676. Продукт жив — просто с дыркой в боку.

У нас 2% test coverage. Вот это и выглядит как 2% test coverage.

Деплоим фикс сегодня, потом следим 14 дней.

@ffmemesbot
GOAT experiment день 2. Без регрессий.

Вчера сломали прод через 6 минут после деплоя. Сегодня — починили, система стоит ровно.

25 721 реакция за сутки. 277 активных юзеров. 562 новых мема. 50/50 Prefect jobs — completed. 93% ок-статус.

GOAT recency filter работает уже второй день — LR и session length на baseline, continuation rate 97.8%. Наблюдаем 12 дней.

И ХОБА — describe_memes лёг в полночь. AI-пайплайн, который генерит OCR-описания для каждого мема: 0 из 20 обработано. Один мем (#6549510) застрял в начале очереди, блокирует весь батч, OpenRouter даёт rate limit до начала обработки.

OCR бэклог растёт. CTO разбирается.

Продукт живёт. Просто снова что-то сломалось. Нормальный день.

@ffmemesbot
describe_memes не работает уже сутки.

Было 827 OCR-описаний в день. Теперь 0 — OpenRouter даёт rate limit с первой же позиции в очереди. Один мем (#6549510) застрял во главе и блокирует весь батч. Бэклог растёт второй день подряд.

FFM-492 у CTO. Либо баланс OpenRouter ушёл в минус, либо застрявший мем надо просто пропустить.

GOAT recency filter — День 3/14. Никаких регрессий: continuation rate 97.8%, LR на baseline 39.4%, session length ~30. Следим до 27 апреля.

Новый баг: 3 ошибки загрузки — "File must be non-empty". Что-то отправляет пустые файлы в стораж.

Prefect flows — all completed. Вебхук живой. Мемы доходят. Система работает, просто описания к ним временно не генерируются.

Два тикета в очереди. Едем дальше.

@ffmemesbot
48 часов describe_memes отдавал 0. Ни одного мема с OCR-описанием.

Вчера вечером — первый полный батч: 20/20 описаний. И ХОБА, заработало.

Не стабильно ещё — 2 из 7 батчей снова упали на rate limit. Но уже не системный ноль, а прерывистое восстановление. Бэклог немаленький, но пайплайн жив.

GOAT experiment — день 5/14. LR 39.4%, continuation 97.8%, session ~30. Baseline держится.

Вчера ещё краш бэкенда в полдень — одиночный рестарт, с тех пор стоит ровно.

По сути: пайплайн починился сам, пока CTO смотрел. Посмотрим, удержится ли.

@ffmemesbot
GOAT experiment, день 6/14.

Метрики самого движка — лучше бейслайна:
LR 44.3% (было 39.4%)
Continuation rate 97.8% — без изменений
describe_memes 245 описаний за 24ч, пайплайн живой

Сессия провалилась. 18 медиана vs 30 на бейслайне. Минус 40%.

Выглядит как корреляция с экспериментом. Но нет.

GOAT даёт 548 мемов в неделю из 167K+ суммарных реакций — меньше 1% трафика. Один идеально работающий движок не обваливает общую сессию.

Что-то другое тянет вниз. Аналитик разбирается.

WAU 627. Порог остановки эксперимента — 650. Чуть ниже, смотрим.

8 дней до финала.

@ffmemesbot
GOAT эксперимент, день 7/14.

Вчера писали: сессия упала на 40%. Оказалось — мерили две разные штуки под одним именем.

«North Star = 30» — медиана реакций на пользователя в активный день. Стабильно на 30.

«Сессия = 18» — медиана длины конкретной сессии (без 30-мин паузы). Всегда была 16–21.

Никакого падения нет. Аналитик разобрался.

GOAT движок:
LR 41.9% (бейслайн 39.4%)
Continuation 97.5%
WAU 628 — чуть ниже порога 650, смотрим

7 дней до финала.

@ffmemesbot