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

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

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

  • Мы — Слава и Дима, не первый год в предпринимательстве
  • Один из знакомых инвесторов предложил стать “продюсерами” стартапа про CS:GO-аналитику, потому что в его развитии были проблемы
  • Мы предложили не просто собирать аналитику, а делать это лучше других, и на основе этих данных обучить ИИ для прогнозирования результатов матчей CS:GO
  • Осенью 2021 года мы получили MVP модели с точностью предсказаний 60% и оценку в $1 млн. Компанию по соглашению сторон покинул фаундер, забрав разработки своей оригинальной идеи (статистического сервиса), а мы стали фаундерами DataLouna

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

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

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

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

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

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

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

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

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

Так сейчас выглядит сервис для пользователя без платной подписки или бесплатного триала<br />
Так сейчас выглядит сервис для пользователя без платной подписки или бесплатного триала

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

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

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

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

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

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

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

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

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

Также мы:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* * *

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

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

Связаться со мной можно через личные сообщения на VC или CEO@datalouna.ru

2323
36 комментариев

Зверя нет сильней на свете, виртуспро вперед к победе!

4
Ответить

В сервисе нет логики. Это все равно, что пытаться спрогнозировать как упадет монета или кто выиграет в карточном дураке. ИИ не может использовать "математическое ожидание" или прогнозировать события, которые не зависит от факторов в перспективе истории.
Ваш результат - совпадение. Конечно это можно подавать под соусом новой крутой технологии для лудоманов, но научной или математической основы нет.

3
Ответить

Вы немного (ну прям сильно немного) неправы. Другое дело - что они берут в модель для обучения. Как я понимаю про спорт - обычно это Марковские цепи и расчёт вероятности выигрыша на маленьких отрезках времени при заданных параметрах. Какие параметры - было бы круто узнать, потому как количество гранат или патрон (или чего там ещё) - важная фигня, но не менее важно расположение на карте и, например, насколько конкретный человек «в настроении». Короч, не самая простая фигня. Ну и да, интересно: модель «смотрит» видео (вряд ли) или логи (скорее всего)? Если видео - интересно как авторы умудрились сделать потоковую обработку и передачу новых данных в модель. Это реально круто.

1
Ответить

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

1
Ответить

😂😂😂
Если бы нам давали хотя бы рубль каждый раз когда мы это слышим. А вообще рекомендую глянуть фильм Moneyball или Человек, который изменил всё

Ответить

Будет лучшая статистика по cs:gо на рынке

2
Ответить

А какой был шанс, что НаВи проиграют Виталити и НиП в ЕСЛ на Мальте?

1
Ответить