многие воспринимают баги и жалобы пользователей как что то плохое, а Я воспринимаю жалобу как подарок, ведь если тебе за несколько минут или пару часов после апдейта уже жалуются что что-то сломалось, притом в какой-то второстепенной фиче и редком кейсе - это говорит о том, что твоим продуктом очень активно пользуются, что не может не вдохновлять
похожий принцип в нейробиологии: как ученые понимали, за что какая извилина отвечает? они находили пациентов у кого именно эта часть мозга повреждена и смотрели а каких привычных функций не хватает
есть даже такие штуки как ухудшающие аб тесты (например мешаем порядок в выдаче у какого-то % юзеров, смотрим как просадим метрики… или повысим), или замедляющие тесты в бекенде (кидаем time.sleep(0.1) в какой то функции, смотрим во сколько / на сколько поменялась общая производительность (как часто то или иное место кода прогонялось → понимаешь насколько имеет смысл оптимизировать это место, до того как думать, как)
только через боль и утрату ты понимаешь что для тебя по настоящему важно 🐺
#Vibe
Мне для проверки некоторых гипотез по вайбу понадобилось 20-30 человек, как одиноких, так и в отношениях, как женщин, так и мужчин (в том числе кто не заходил)
Кто готов созвониться на 10-15 минут, оставьте пожалуйста заявочку тут https://forms.gle/rszapkF5SDHXNvyv9
ожидаемая корреляция: чем больше юзеров попробовало, тем больше будет оплат (размер - число запросов за неделю)
Читать полностью…В комментариях задали важный вопрос, ответ на который будет полезен с продуктовой точки зрения для ребят, кто строит AI-продукт.
Звучит примерно как: почему у VIBE подписка, а не депозит сообщений (оплата pay-as-you-go)?
Ответ: депозит сообщений Я пробовал, и это было первой бизнес-моделью, НО это добавляло пользователям дополнительные фрикции, как до покупки, так и после:
- А мне точно хватит?
- А что будет когда закончатся?
- А где почитать, какие запросы сколько расходуют?
- А я пользуюсь реже, потому что экономлю…
Таким образом, лишние фрикции или сокращают конверсию в покупку, или «штрафуют» за активность.
Я посмотрел в данные, подавляющее число пользователей не расходуют квоту полностью за свой период подписки. В то же время был забавный паттерн, что при покупке недельной подписки, квота часто расходовалась за 2-3 дня. Но в среднем по больнице, юнитка очень-очень вкусная и «запас прочности» очень большой.
Поэтому Я решил упростить пользователям жизнь, и перейти к «безлимиту» в рамках подписки. Я думаю что здесь нам как бизнесу надо взять риски на себя (риски что по отдельному пользователю экономика станет отрицательной)… благо это происходит на очень малом % пользователей. Тем более, что сервис всё лучше оптимизирован с точки зрения костов.
Может, разве что, позже введу дневные лимиты. Но пока не настолько горит.
P.S. Заострю внимание, что данное рассуждение верно строго для B2C продукта, где есть как минимум сотни-тысячи пользователей, по которым размываются косты. В B2B, где малое число более осознанных расчетливых пользователей (например, менеджеры, разрабы) и большой разброс масштабов потребления - ситуация другая и там система депозитов была бы почти всегда уместнее.
#VIBE
Слушайте, ну обратная связь от вас в комментариях – просто праздник, спасибо что подсветили важнейшие точки роста даже раньше по воронке 🥰
Читать полностью…Делать стартап – лучший способ освоить System Design, если ты что-то не понимаешь, у тебя рано или поздно это выстрелит боттлнеком. Сегодня мы разобрались с географией серверов Telеgram и других апишек, в которые ходим, много нового узнали.
ping -c 10 api.telegram.org
ping -c 10 api.openai.com
«Художественная литература исчезла больше 100 лет назад, литература и писатели продолжали существовать, но повествование теперь не писали, а монтировали как набор цифровых образов»
– Лю Цысинь, «Вечная жизнь Смерти», 2010
Слушаю третью книгу трилогии, "Вечная жизнь Смерти". Первые 2 главы, а уже было 5-10 моментов, где Я или был на грани, или действительно прослезился, пока слушал: настолько глубокие, или романтические, или масштабные моменты описываются. И самое обидное, что никаким из этих моментов нельзя поделиться, не заспойлерив важные моменты из второй или первой книг...
Читать полностью…34% – на столько получилось сократить косты (на графике цена промпта/генерации на 1к запросов)
Весь фокус в следующем:
1. Есть такая либа https://github.com/aurelio-labs/semantic-router, Я ридми не читал и не заводил, но увидел в превью идею строить маршрутизатор (intent recognition) на эмбеддингах, Мне понравилась идея, пошёл пробовать
2. У Меня на входе текст и кратинки, для чисто текстовых запросов можно использовать обычные эмбеддинги, для картинок надо заводить CLIP (Я юзаю в serverless режиме).
CLIP маппит текст и картинки в одно пространство и в нем можно находить близость, следовательно, делать zero-shot классификацию (когда описываешь класс текстом).
3. Заменяем все вспомогательные ллм вызовы семантической маршрутизацией (а их где-то 1, где-то 2 шага) - и вуаля, оптимизируем и скорость (100ms vs 3-4s) – и косты (можем например на каждый интент даже держать несколько описаний и делать knn и экспериментировать с k / агрегацией)..
4. Но возникает проблема: сырой knn поверх CLIP "тупее", хуже разделяет интены, что делать? как его промптить? благо, CLIP хотя бы обучен на скраппенных данных с интернетов, телегу от инсты отличит
Используем подход DALLE/Sora: берем другую модель, которая генерит промпт для этой, на основе этого можно быстро сгенерить детасет (поверх достаточного числа картинок на разные интенты, особенно corner кейсы), заэмбеддить как примеры запросов, так и "окрестности" вокруг этих эмбеддингов в виде наших сгенеренных промптов, на основе этого обучаем логрег или двуслойную сетку и получаем нормальное быстрое разделение на интенты почти бесплатно
Конечно, некст степ - нормально честно зафайнтюнить, даже начиная с ViT, но пока текущее качество Меня устраивает и есть более важные задачи. Так-то, не одними LLM сыты.
#LLMOps
Вообще, это одна из фишек, которым учит книга Валеры – описать на бумаге конкретно, что надо сделать и как (дизайн док), быстро сделать из говна и палок самую сырую первую версию (бейзлайн), которая уже замыкает цепочку обратной связи с миром – и вперёд итерироваться ("анализ ошибок").
Выпусти ± осмысленную первую версию в прод как можно скорее и начни копить данные. Уже за полтора дня логов понимаю, каких уведомлений не хватает, какие лишние, по каким местам надо будет гонять много аб-тестов и т.д.
Например, от специализированной таблицы notifications
точно ближайшее время уйду к общей таблице events
где будут в том числе важные интеракции пользователя с сервисом (которые могут послужить триггером какого-то уведомления / действия с нашей стороны) + разные наши активности за пределами уведомлений, на которые тоже можно будет завязывать ту или иную логику взаимодействия с пользователем.
#Vibe
Хорошее приложение как хороший ресторан: должно само взаимодействовать с посетителем, а не ждать на кассе, пока он подойдёт.
Премиальные мишленовские рестораны – так вообще эталон того, насколько окружающее пространство может адаптироваться под тебя. Это уже не про еду, а про подачу, про сервис, про user experience. Ты только захотел встать, за тобой появляется 2 официанта, помогающие отодвинуть стул и подняться. Только испачкал уголок рта, тебе уже подают салфетку. Открытие вина превращается в шоу, тарелка удовлетворяет уже не голод, а эстетические потребности.
Вчера с друзьями-CTO накидывали одностраничный дизайн-док push-уведомлений для бота, прикинули логику, подводные камни, сегменты, событийную модель и т.д. Уведомления – механизм, через который можно взаимодействовать с пользователем на всех этапах воронки, а не бросать его на произвол судьбы уровня "разобрался – молодец, не разобрался – твои проблемы".
Основные идеи (Why? What? How?):
Why? – желание увеличить конверсию на разных этапах воронки. При этом не хочется спамить людей и мешать пользователю "полюбить" наш сервис.
- Повысить процент пользователей которые хоть что-то попробовали (может, пользователь отвлекся; может, у него нет под рукой свежей переписки или удалён сайт знакомств)
- Повысить процент пользователей, которые не просто отправили скриншот, но ещё и разобрались, как генерировать альтернативные варианты
- Повысить процент пользователей, которые полностью расходуют свою квоту
- Повысить конверсию в оплату
- Повысить вовлеченность пользователей после оплаты (чтобы не забивали больше чем на N дней и не ушли в "отток")
What? – собственно, push-уведомления, которые будут отправляться пользователям в той или иной ситуации, которые ориентируются на то, на каком этапе воронки он застрял, и которые подталкивают его перейти к следующему.
How?
1. Заводим отдельные уведомления на каждый чих (условно, первое напоминание пользователю, что мы ждём от него первый скриншот и второе – это разные)
2. Под уведомления заводится отдельная таблица в бд, чтобы помнить что кому недавно отправили
3. Каждое уведомление работает в stateless режиме (чтобы при перезагрузке бота ничего не отваливалось): мы через SQL-запрос описываем сегмент (например, такой-то тариф, столько-то бесплатных кредитов осталось, делал последний запрос в таком-то окне времени, получал ранее такое-то уведомления и ещё не получал такое-то)
4. Чтобы избежать блокировки тг по флуду, уведомления размазываются во времени + в каждую проверку делается рассылка не более чем на N юзеров (также, предваритально проверяем, не заблочил ли юзер бота)
5. Кроме сегмента сущность уведомлений содержит cron-расписание, возможные сообщения (если надо что-то отправить, берем случайное), действие (если надо запустить какой-то скрипт), промпт (если хотим AI-generated уведомление)
6. Шедулер запускается вместе с ботом, Я привык к apscheduler, максимально простой и понятный в использовании, поэтому юзаю его
7. Сами уведомления задаются и хранятся в yaml вместе с другими конфигами (а не размазываются по разным местам кода или бд)
Пока написал только первые 10-15 уведомлений по первым этапам воронки, но уже вижу, что это вполне универсальное решение для совершенно разных кейсов. Как писал Стив Макконел в "Совершенный код", правильно мыслить, что кодовая база "выращивается" как живой орагнизм, а не пишется по сценарию. Вижу, что в рамках данной простой и гибкой архитектуры, это можно делать чуть ли не во все стороны, которые могут понадобиться.
Надеюсь, вдохновит вас завести подобное в ваших сервисах/ботах/приложениях. 🥰
#VIBE
Какое-то время подписан на блог Ника Берёзы, делают UniMatch, "тиндер для стартапов и инвесторов". Только сегодня перешёл по ссылке "об авторе", самое интересное – прочитать ключевые ценности и принципы. Все 12/12 резонируют.
Делюсь:
У нас в VIBE основной функционал вертится вокруг вопросов "что написать?" / "что ответить?":
– это может быть самое первое приложение (скриншот профиля на сайте знакомств)
– это может быть первая фраза при знакомстве вживую (по фото)
– это может быть середина коммуникации (по скриншотам переписки)
– это может быть описание ситуации на свидании / в переписке (описывают текстом)
Перед генерацией ответов, бот анализирует текущую стадию коммуникации и контекст (стадии упоминал в истории), и в зависимости от них предлагает свои варианты управления стилем / тоном / посылом ответа. Например, знакомство в ночном клубе сильно отличается от знакомства в кафе. Варианты, какое написать первое сообщение на сайте знакомств, сильно отличаются от ситуации когда ваш разговор вроде идёт хорошо, но стал слишком... дружеским, скучным, бытовым.
Проблема: то, как называются стадии и опции ответов сейчас, на Мой взгляд может быть непонятно неподготовленному пользователю. Если пользователь что-то не понимает, он чувствует себя тупым, а нам не хочется общаться с людьми и приложениями, которые вызывают у нас такие ощущения. поэтому Я хочу это минимизировать и подобрать слова для обозначения стадий, которые будут понятны хоть Мише-боксёру, хоть Олегу-айтишнику, хоть дяде Славе-таксисту, который решил после работы полистать Твинби.
В связи с этим прошу присоединиться к брейншторму, какие названия стадий лучше поставить, чтобы было понятно о чём речь, и не требовало подготовки. Как вам пример названий из гифки? У самого уже bias и глаз замылен. Также предлагайте свои варианты или присоединяйтесь к критике, обсуждению
Сейчас пока:
- Знакомство
- Флирт / влечение / интерес
- Раскрытие (подсказал Ваня Абсент, вместо "квалификация")
- Погружение
- Сближение
#VIBE
Notion Calendar
Мини-апдейт по #LifeOps штукам. Календарь – это безусловно один из 2-3 главных «инструментов завоевания мира» у любого из нас: владеешь своим временем – владеешь реальностью. Долгое время считал, что, несмотря на минималистичный UI, Apple Calendar – это лучшее, что есть на рынке. Приложения Apple часто не богаты функционалом, но зато вылизаны до дыр, чтобы устраивать максимум пользователей.
Я пробовал разные другие календари: Fantastical – на Мой вкус, как будто переусложнён, сильно перегружает голову (а хороший инструмент, наоборот, помогает видеть важное и не видеть неважное). Google Calendar – у них нет приложения, из-за чего надо заходить сначала в браузер, затем в календарь, что оверхед.
Есть большая надежда на продукты вида Akiflow, Sunsama, Motion (которые совмещают to-do лист, календарь и time-block planner / deep sessions planner), но пока они как будто лишь добавляют +1 инструмент в систему, а не заменяют "2-3 по цене 1". Верю, что это в будущем исправится, идея Мне очень нравится, но пока все подобные тулзы с точки зрения UX сыроваты.
Недавно затестил Notion Calendar (и незаметно для себя, полностью переехал). Больших надежд не возлагал, но интересно наблюдать, как Notion выходит за границы персональной или корпоративной базы знаний и пускает щупальцы в соседние компоненты систем продуктивности: тудушки, календарь.
Что понравилось:
1. настолько же прост в управлении, как и наш baseline, Apple Calendar. например, ты можешь взять событие за верхнюю/нижнюю границу и подвинуть начало/конец ивента, что удивительно, не в каждом из перечисленных календарей такая база есть
2. гугл миты / зум миты создаются в один клик, вместе с ссылкой и/или гостями
3. как и в Fantastical можешь поставить цвет события, отличный от цвета календаря
4. приятная глазу темная тема; почти ничего лишнего
5. возможность ставить двойную таймзону как в Fantastical (и как нельзя в Apple Calendar)
Почему пока 9/10, а не 10/10:
1. в приложении телефона пункт №1 из того, что понравилось, не работает (молюсь, что поправят)
2. на иконке приложения телефона не отображается день месяца как в Apple Calendar (хотя на десктопе отображается, молюсь, что это возможно не-родному приложению айфона менять)
Будем посмотреть
Друг-продакт посоветовал Амплитуду https://amplitude.com/
Кто пользовался? Какие бонусы дало по сравнению с "DIY"?
Забавно как в этой трилогии или, для примера, в фильме «Прометей» расшифровка языка чужой цивилизации с другой планеты упоминается как какая-то рядовая операция. Вспоминаю какой большой акцент Игорь делал на том, как легко GPT-4 трансферит знания с языка на язык
Было бы интересно посмотреть эксперименты как LLM будущего будут расшифровать структуру языков (которых не было в интернетах) и понимать картину мира которую они несут…
Да и, думаю, с условной GPT-5 или GPT-6 можно будет просимулировать сильно отличную от нас цивилизацию на планете в другой звездной системе и прикинуть, какое у них бы выработалось отношение к миру, жизни, Вселенной и друг другу, как бы это отразилось на языке, как их концепты матчились бы с нашими
Созвонились с Катей, Катя – маркетолог уже 7 лет, была маркетологом в Dodo-пицца, делала запуски на десятки млн рублей (Мне б такие цифры), 4 года развивала своё маркетинговое агентство, обучила 350+ маркетологов
Недавно начала вести блог в Instagram: https://www.instagram.com/ekaterina_shp
Вообще, Катя это даже не про маркетинг – Катя это про рост твоего продукта в целом, всесторонний, глубокий. Она задаёт не стандартные вопросы по методичке, а всесторонне за считанные минуты изучает под лупой каждый шаг пользовательского экспириенса, задаёт вопросы по каждому касанию с пользователем, посвечивает самые важные бутылочные горлышки твоего стартапа.
После созвона с ней у тебя на руках вырастает понятный список шагов, что сделать сегодня вечером, на этой неделе, за этот месяц. Очень рекомендую с ней поработать и однозначно буду обращаться снова. Кому нужно нащупать, как наращивать аудиторию продукта – рекомендую.
Планирую написать пост(ы) на Хабре / VC / где-то ещё про наш стартап. Про что / про какие аспекты было бы интересно прочитать? Напишите свой топ-3
Хотим завируситься 😎
#VIBE
12.5% запросов в Адаме – это знакомства вживую…
…и наша долгосрочная цель – повышать этот процент.
Сайты знакомств – это безусловно популярная платформа для знакомств и общения, они соединяют десятки миллионов мужчин и женщин друг с другом. Но в Моей жизни, да и жизни Моих друзей, самые интересные знакомства и самые яркие истории любви происходили вживую. И мы хотим всё больше и больше «выводить» пользователей в оффлайн, в реальную жизнь, давать им real-time поддержку, а не помогать пылесосить сайты знакомств, сидя дома.
Рынок дейтинга простирается далеко за границы интернетов и Адам, как маленький дьяволенок на плече, помогает чувствовать себя чуточку увереннее даже при знакомствах в кафе, барах и торговых центрах: достаточно отправить ему фото, с кем хочешь познакомиться, и он подскажет оригинальную первую фразу под ваш контекст.
tinyurl.com/adamcopilot
P.S. И кстати, по промокоду #NIGHTGAME до конца недели можно получить скидку на 23% и добавить в свою жизнь больше необычных знакомств, как вживую, так и онлайн.
#adam