Стартап с оценкой в $1 млн. Как не погибнуть в «долине смерти» и есть ли жизнь после 24 февраля?

0 256

Ранее мы рассказали, как стартап по созданию искусственного интеллекта для предиктивной аналитики матчей в Counter-Strike прошел путь от идеи до MVP и оценки в миллион долларов. В этом статье вы узнаете, как рутина (и 24 февраля) чуть не похоронили нас.

Краткое саммари, если вы не читали прошлые посты:

- Мы — Слава и Дима, не первый год в предпринимательстве

- Один из знакомых инвесторов предложил стать “продюсерами” стартапа про CS-аналитику, потому что в его развитии были проблемы

- Мы предложили не просто собирать аналитику, а делать это лучше других, и на основе этих данных обучить ИИ для прогнозирования результатов матчей CS2

- Осенью 2021 года мы получили MVP модели с точностью предсказаний 60% и оценку в $1 млн. Компанию по соглашению сторон покинул фаундер, забрав разработки своей оригинальной идеи (статистического сервиса), а мы стали фаундерами DataLouna

Рост по инерции на заряде после релиза MVP

Итак, осень 2021. У нас на руках первые деньги инвестора, MVP модели и понимание, что точность в 60% — хороший результат для начала, но нужно срочно начинать улучшать его. И это стало первым челленджем.

Разрабатывая MVP, мы форсировали некоторые события, потому что времени особо не было, а результат был нужен “уже вчера”. Мы не сравнивали алгоритмы и другие детали друг с другом, не думали об автоматизации, не покрывали код тестами и… В общем, классический стартаперский подход, для которого давно придуман и закреплен научный термин:

На дистанции в сотню матчей модель выдавала приемлемый средний результат, но дьявол кроется в деталях. Если рассматривать некоторые отдельные матчи, они могли обрабатываться очень странно, в них не было никакой логики.

Можно сравнить это с написанием статьи в текстовом редакторе, в который загрузили половину правил русского языка, из-за чего подчеркивается только половина ошибок. Да, в итоге текст получится читаемым, но проскакивают опечатки и ошибки, которые портят все впечатление.

Нам нужно было это исправить, работы предстояло много — и каждая, абсолютно каждая, деталь требовала кучу времени на тесты. Вот только некоторые вещи, которые мы фиксили всю осень и декабрь командой из двух программистов:

- Тестировали разные алгоритмы машинного обучения и выбирали, какой показывает лучший результат

- Разрабатывали, перерабатывали и дорабатывали саму структуру кода, который можно разбить на 4 блока: данные (записи матчей), ивенты (выделение из данных событий с самым большим импактом), машинное обучение, итоговый результат. Мы все время экспериментировали с процессами, чтобы понять, какой будет самым эффективным для каждого блока или подблока

- Например, на этом этапе мы начали валидировать данные. Если сначала мы закидывали в модель все данные, которые в теории могли работать, то теперь у нас было время разобрать цепочку разных событий от и до, чтобы понять, какие данные нужны, какие — нет, а какие считаются неправильно

- Пофиксили баги, в том числе те, из-за которых в модель уходили некорректные данные (при этом модель эти данные съедала и в некоторых ситуациях выдавала приемлемый результат). Приходилось тратить время на разборки с такими багами-фичами

- Поняли, что для каждого тира (уровня игры команд) требуется уникальная модель. То, что работает для топ-30 клубов мира, не будет также хорошо работать для команд рангом ниже

Параллельно этому мы приняли решение делать B2C-сервис (спойлер: посмотреть его в рабочем состоянии вы можете на datalouna.io). Хотя над созданием самого сайта работал отдельный программист, работы по бэкенду, связи модели с сервисом, автоматизации этих процессов и их тестирования все равно требовали внимания разработчиков модели.

Так выглядел сервис для пользователя в 2022 году без платной подписки или платного триала.

А так выглядит сервис для пользователя сейчас без платной подписки или платного триала.

Кроме фикса багов модели и разработки B2C-сервиса требовалось внедрять и новые фичи. Так, изначально мы использовали (фундаментально неправильный) подход “команда-матч” и перешли на “команда-карта”.

То есть программистам приходилось выполнять 2-3 функции вместо того, чтобы сфокусироваться на одной. Но несмотря на все эти сложности, в декабре выкатили новую версию модели с точностью 69% и все взяли новогодние каникулы (а мы улетели на Бали и решили зимовать и работать из Азии).

Первые проблемы и их решение

После возвращения разработчиков с отдыха, появились первые серьезные признаки раздолбайства.

На этапе разработки модели недостатка в мотивации не было — создание с нуля новой крутой штуки вдохновляло, и этого заряда хватило на пару месяцев рутины с фиксом багов и постепенным улучшением точности. Но после отдыха возвращение к работе проходило сложно.

Мы не знали, что делать и встали перед выбором: начать конфликтовать или посмотреть, что мы можем исправить. В итоге мы сделали всего понемножку.

До новогодних праздников мы решили премировать программистов за выполнение обычных рутинных задач, а не за создание чего-то прорывного — просто, чтобы сделать приятно. После отдыха стало понятно, что это было ошибкой — нельзя премировать людей за те задачи, которые они априори должны делать, и в итоге ребята подрасслабились (плюс надо понимать, что для программистов деньги не самый главный мотиватор).

Стартап — это работа с хаосом, наша задача как фаундеров — раскрыть потенциал людей. Для этого важно обсуждать их основные задачи и объяснять четко, что определенная задача (даже если это монотонная рутина верхом на обыденности) приведет к следующему конкретному результату.

Для того, чтобы выстроить систему и постоянно держать связь, не обойтись без Дискорда — в нем мы вели не только постоянные звонки с разработчиками, но и форсировали созвоны разработчиков друг с другом. Расписание созвонов и часть документации мы вели на том же Discord-сервере, но большая часть информации была распределена в Jira.

Также мы:

- Разделили свои роли: Дима стал другом, Слава — не стал. Классический кейс "хорошего и плохого полицейского". От друга нормально не воспринимается ни критика, ни похвала. При этом, если друга нет внутри, то делать работу становится эмоционально сложнее, не с кем откровенно поговорить. "Хороший и плохой полицейский" создают необходимый баланс

- Потратили много времени на создание системы: как правильно взаимодействовать с программистами так, чтобы наши задачи были понятны и выполнялись

- Поняли, что даже построенная система не гарантирует ее использование людьми. Нужно было приложить усилия для того, чтобы программисты и мы привыкли к ней

Художественный фильм "Плохой хороший полицейский". Для нас этот подход стал реалити-шоу

Чем ближе была весна, тем лучше становились процессы, наши результаты и атмосфера внутри команды. А потом наступило 24 февраля.

Жизнь после 24 февраля: потеряли инвестора, но не сдались

Первая проблема, с которой мы столкнулись после 24 февраля, это потеря инвестора. Человек, поверивший в нас на стадии MVP, перестал выходить на связь и мы потеряли финансирование. Как потом оказалось, инвестор взял весь свой капитал и просто покинул Россию.

Вторая проблема — психологическая напряженность и общая неопределенность (ведь в наших планах был выход на международные рынки, регистрация юрлица за границей, плюс мы начали процедуру регистрации патентов в США). Было сложно перестать следить за новостями и вернуться к работе.

Несколько дней все пробыли в трансе. Состояние полнейшей неопределенности и перегруз информационного поля не позволял даже думать о работе. Выходом стало осознание, что единственное, что от нас зависит и на что мы можем повлиять — это наш проект.

Поэтому мы стали доносить до команды, что как бы сложно не было, с помощью работы не только можно спасти эмоциональное состояние, но и обрести хотя бы иллюзию чувства стабильности. Это и стало светом в конце туннеля.

Весь март и апрель мы провели в новых тестах, новых задачах и разработке новых фичей.

Дедлайном по запуску B2C-сервиса мы поставили себе начало PGL Major Antwerp 2022 — турнира самой престижной серии в Counter-Strike. Он начинался 9 мая, и у нас было чуть больше двух месяцев на то, чтобы окончательно справиться с психологическим напряжением и внести последние изменения в модель.

Команды боролись за этот кубок и полмиллиона долларов за первое место. У нас на кону стояло не меньше

Стоит ли говорить, что по классике самые важные изменения вносились в самый последний момент? За пару недель до релиза задачи не прекращались, их становилось все больше и больше, а разница во времени Европы с Бали только ухудшала наше самочувствие и мотивацию — программисты ложились в 4 утра по европейскому времени, а мы — в 9 утра по местному времени.

И после четырех часов сна день сурка начинался снова.

5 мая на тестировании мы понимаем, что винрейты сильно меняются на один и тот же матч — предварительно модель прогнозирует один результат, а после пика карт командами он сильно менялся — вплоть до диаметрально противоположного.

Было понятно, что это надо срочно фиксить, ведь обычные пользователи вполне могут ориентироваться и на предварительный прогноз.

В итоге, за 3 дня (и ночи) наши разработчики Виталик и Даня при помощи тренера-аналитика Эрика с нуля создали новую модель, предварительно прогнозирующую самый вероятный распик карт командами. Это бустануло наши предварительные прогнозы — количество сильных изменений винрейта уменьшилось с 70% до 20%. Амплитуда в оставшихся 20% случаев значительно уменьшилась, изменения стали не по 50 процентных пунктов, а около 5-10.

Визуализация настроения в команде: смогли восстановиться после 24 февраля, но дедлайн и поток задач давили на работоспособность и мотивацию

Продакшн: неоднозначные результаты с хэппи эндом

Во время мейджора мы зарелизились и стали отслеживать не только процент точности предсказаний, но и моделировать виртуальный банк: брать средний коэффициент букмекеров и считать, сколько в теории можно было бы заработать на каждом из матчей.

Фан факт : на мейджоре мы стали ставить по прогнозам своей модели, но очень быстро поняли, что это тормозит процесс — поставленные деньги вынуждают смотреть матч и не отвлекаться от него. В ситуации, когда игровой день может идти по 10-12 часов, времени на работу просто не оставалось.

По ходу мейджора все было не так круто, как нам хотелось бы: время от времени модель выдавала странные (и неправильные) прогнозы, которые сильно били по мотивации.

А то, что при запуске мы не смогли подключить платежный шлюз и работали для пользователей бесплатно, с одной стороны давало некоторое облегчение, с другой — никак не приближало нас к самоокупаемости.

В итоге мейджор, состоящий из двух этапов, мы завершили с такой статистикой:

Но самым главным из 73 матчей стал самый последний — гранд-финал мейджора.

Небольшой контекст: в нашей первой MVP-версии модели не было многих вещей, в том числе дообучения по ходу турнира. К мейджору мы выкатили эту фичу, суть которой — по ходу турнира все меньше внимания уделять результатам команд на предыдущих соревнованиях. и вместо этого активнее оценивать форму по играм на самом турнире.

В гранд-финал мейджора вышли европейцы из FaZe Clan и состав NAVI с россиянами и украинцами.

Перед началом серии болельщики и букмекеры (особенно русскоязычные) достаточно уверенно прогнозировали победу NAVI. Команда уверенно громила всех соперников на предыдущем этапе и за 5 серий уступила только 2 карты, не проиграв при этом ни одного матча.

Наша модель дала совсем другой прогноз — вероятность победы NAVI только 27%. Представили наши лица?Но именно FaZe в итоге и победили — на первой карте команды боролись вплоть до овертайма, но в итоге серия завершилась поражением NAVI со счетом 0:2.

Но именно FaZe в итоге и победили — на первой карте команды боролись вплоть до овертайма, но в итоге серия завершилась поражением NAVI со счетом 0:2.

И это предсказание дало нам новый заряд мотивации, тильт от потери инвестора и событий 24 февраля ушли — впереди много работы.

Мы поняли, что наша модель — действительно крутая разработка, в которую просто нужно влить много ресурсов и времени. График способности работать и мотивации нарисовал "ракету" вверх.

И как обычно, если вы проскроллили текст статьи в самый конец только для того, чтобы найти строчку "Подписывайтесь на мой телеграм-канал", могу вас только разочаровать.

Но можете продолжать следить за нами, чтобы не пропустить следующие статьи, где я продолжу историю DataLouna и более предметно раскрою некоторые нюансы работы над проектом.

Связаться со мной можно через CEO@datalouna.ru

Зеленскому придется принять предложение Трампа по урегулированию конфликта на Украине

Британская газета «The Telegraph» отмечает, что президенту Украины Владимиру Зеленскому в ближайшем будущем, вероятно, не удастся избежать принятия мирного плана, предложенного бывшим президентом США ...

ХРИСТОС ВОСКРЕС (двойной акростих. моё)

Поздравляю всех православных с Великим Светлым Праздником! Радости! Добра! Любви! И веры в Светлое будущее!!!Внизу страницы есть ссылка на мою песню мп3. На...

Гностическое учение Александра Дугина, служение Небытию

Александр Дугин, один из наиболее противоречивых современных российских мыслителей, создал собственную философскую систему, которая представляет собой эклектичный синтез традиционализма...