NutriSense
Випущений мобільний продукт: бекенд на Go, клієнт на Flutter та асистент із жорсткими межами того, що йому дозволено стверджувати.
- Належність
- Належить Red Sentra.
- Доступність
- Живий продукт. Вихідний код приватний.
- Стек
- Go / Flutter / LLM

Задача
Харчування це сфера, де впевнено неправильна відповідь мовної моделі не є кумедним збоєм. Продукту потрібна була користь від асистента без права імпровізувати.
Система
Бекенд на Go обслуговує клієнт на Flutter, а асистент загорнутий у явні обмеження: обмежені входи, валідовані виходи та визначені відмови, тож він лишається в межах того, за що продукт готовий відповідати.
Моя роль
Backend і доставка, обмежена поведінка асистента та реліз-пайплайн аж до сторів.
Найскладніше
Зробити мовну модель корисною у темі харчування, не дозволяючи їй імпровізувати. Модель добре описує й оцінює, але вона не джерело істини, і продукт мав лишатися в межах того, за що готовий відповідати.
Архітектурні рішення
- Асистент відповідає всередині фіксованого контракту. Входи обмежені, виходи валідуються за схемою до того, як потраплять до клієнта, тож усе поза цією формою стає відмовою, а не здогадкою.
- Go на сервері, Flutter на клієнті, один API між ними. Єдиний контракт бекенду означав, що мобільний реліз ніколи не чекав на серверну роботу під конкретну платформу.
- Шлях релізу це частина продукту. Подання до сторів і версіонування будувалися разом із функціями, бо мобільний продукт, який не можна безпечно випустити, не завершений.
Поточний стан
Живий і в активній розробці.