редакции
Как мы строили фудтрекер под свою продуктовую логику
Почему вообще зашёл разговор про собственный трекер
Физикл работает с 2017-го. Тогда в России всё ещё доминировали рестриктивные диеты — это когда продукты исключают из рациона группами. Либо наоборот, вот список разрешённого, остальное нельзя. Штука предельно понятная и простая в использовании, но нихренанеадаптивная в отношении конкретного клиента и неустойчивая на дистанции. Идея, того, что со всеми продуктами порядок, а вот с их количеством — нет для массового фитнес-рынка была в новинку. Мы выстроили продукт вокруг подсчета и практически показали, что достигать результата можно веселее и, фактически, вкуснее.
Долгое время для подсчёта питания мы использовали FatSecret — базовая функция выполняется, данные есть, клиенты пользуются. Но по мере того как мы начали выдавать продуктовые рекомендации, выяснилось, что FatSecret для этого не приспособлен.
Например, у нас есть рекомендация: 600–800 г растительности в день. Туда входят овощи, фрукты, зелёные листья, ягоды, грибы. Пытливый ум поинтересуется — а где, например, картошка? И тут приходилось пускаться в объяснения, что одни — крахмалистые и там клетчатки мало. А фасоль хороша, но отдельный класс. И так далее. А арбуз подходит (ягода же), но такой он водянистый, что его для тех же эффектов на здоровье нужно больше, намного. И все это приходилось объяснять через контент и индивидуальную работу, а всё от того, что Fat Secret достаточно беден на данные, кроме самых базовых.
Будь в нем качественная информация о содержании клетчатки (пищевых волокон), нам не приходилось бы играть в нутрицилогический фашизм, разделяя растительность здорового и растительность курильщика. Один нутриент за которым не сложно следить и мы тут же убираем ненужное и довольно искусственное нагромождение, а вся растительность снова становится старой доброй растительностью, но со своим индивидуальным количеством пищевых волокон (клетчатки).
То же с железом. То же с кальцием. И так далее.
Примерно 3 года назад, когда ресурсы разработки позволяли, мы сели и решили: сделаем своё. Так, чтобы кураторам не приходилось высчитывать что там клиенты съели вручную, а клиентам — держать десяток инструкций и несколько десятков оговорок в голове.
Три проблемы, которые нельзя решить чужим инструментом
1. Продуктовые категории
Нам нужно различать:
- красное мясо vs всё остальное
- обработанное и необработанное
- приготовленное / сырое
- степень обработки продукта или блюда
- растительность как отдельная категория, овощи и фрукты как субкатегории итд.
- и многое многое другое
Ни один существующий трекер не позволяет задать чёткие правила: этот продукт сюда, тот — туда, и использовать это в рекомендациях в формировании рекомендаций для клиентов.
2. Микронутриенты без американского контекста
Есть приложение Chronometer — популярный инструмент среди биохакеров, который тоже считает микронутриенты. Но он работает с базами данных американских продуктов, которые зачастую дополнительно обогащены микронутриентами. Например, производители добавляют кальций и витамин D в хлопья и всё это честно записывается в базу. Так они поддерживают здоровье нации, тех кто живет и функционирует на «быстрой еде» почти целиком.
Если через эти данные считать российское питание, получается странная картина: нормы витаминов и минералов набираются сами собой из набора продуктов, который на подобное не способен.
Нам приходится работать с базами вручную, размечая свойства продуктов. Под приоритет попадет то, что чаще всего едят наши клиенты. Сейчас это порядка 75 тысяч продуктов — и по этому параметру мы опережаем существующие приложения. Говорю не чтобы похвастаться, а чтобы показать масштаб проблемы, которая скрывается под капотом.
3. Рекомендации как данные, а не текст
Это, пожалуй, главное. Когда рекомендация существует только в виде текста — «ешь больше овощей», «следи за клетчаткой» — это не продукт, это брошюра. Нам нужно было, чтобы система сама считала, набрал ли человек норму по растительности, по белку из конкретных источников, по степени обработки рациона. И давала конкретный сигнал, а не общее напутствие.
Без размеченной базы под свои категории это просто не работает.
Что получилось
Сейчас в базе:
- ~75 тысяч продуктов
- микронутриенты с ручной разметкой под российские реалии
- рекомендации, которые считаются программно, а не объясняются текстом
Пользовательский слой намеренно остаётся простым. Пользователь видит только «сегодня не хватает растительности» или «хорошо закрыл белок». Вся работа под капотом остаётся на нашей стороне.
Это принципиальная позиция. Стандартные трекеры вываливают на пользователя ворох цифр. Если человек не погружён в нутрициологию, то это не помогает, а пугает. Наша задача другая: быть мостом между сложными данными и понятным действием.
Про AI-распознавание и доверие к классу решений
Отдельная тема. За последние годы рынок наполнился приложениями с AI-распознаванием еды. Значительная часть из них работает откровенно плохо — под этим я подразумеваю «неточно». Пользователь, который не разбирается в деталях, не видит разницы между продуктом, который серьёзно работает с данными (такие тоже есть на рынке), и продуктом, который просто подключил API и назвал это «умным трекером». В итоге скептицизм распространяется на весь класс решений.
Мы поставили задачу сделать распознавание максимально точным — насколько позволяют технические решения и срастить с нашей базой.
Зачем вообще это всё
Первая версия была далека от идеала — небольшая база, много ручной работы, ошибки. По мере роста команды, наших компетенций и развития LLM, база расширялась, возможности становились шире. Мы просто делаем то, что считаем правильным, и пытаемся обработать как можно больше данных максимально качественно.
Фудтрекер для нас — это не цель и не продукт сам по себе. Это инструмент, который делает измеримым то, что вчера требовало серьезных усилий, снижает величину человеческой ошибки (и клиента, и куратора), автоматизирует процессы, которые закладывают фундамент для здоровья на долгие годы.
Конечная задача — влиять на качество рациона в долгую. Для этого нужен инструмент, который понимает еду так же, как понимаем её мы. Готовых таких инструментов не существовало. Пришлось сделать.