NutriSense

Випущений мобільний продукт: бекенд на Go, клієнт на Flutter та асистент із жорсткими межами того, що йому дозволено стверджувати.

Належність
Належить Red Sentra.
Доступність
Живий продукт. Вихідний код приватний.
Стек
Go / Flutter / LLM
Публічна вітрина (відкриється в новій вкладці)
Знімок публічного сайту продукту NutriSense.

Задача

Харчування це сфера, де впевнено неправильна відповідь мовної моделі не є кумедним збоєм. Продукту потрібна була користь від асистента без права імпровізувати.

Система

Бекенд на Go обслуговує клієнт на Flutter, а асистент загорнутий у явні обмеження: обмежені входи, валідовані виходи та визначені відмови, тож він лишається в межах того, за що продукт готовий відповідати.

Моя роль

Backend і доставка, обмежена поведінка асистента та реліз-пайплайн аж до сторів.

Найскладніше

Зробити мовну модель корисною у темі харчування, не дозволяючи їй імпровізувати. Модель добре описує й оцінює, але вона не джерело істини, і продукт мав лишатися в межах того, за що готовий відповідати.

Архітектурні рішення

  1. Асистент відповідає всередині фіксованого контракту. Входи обмежені, виходи валідуються за схемою до того, як потраплять до клієнта, тож усе поза цією формою стає відмовою, а не здогадкою.
  2. Go на сервері, Flutter на клієнті, один API між ними. Єдиний контракт бекенду означав, що мобільний реліз ніколи не чекав на серверну роботу під конкретну платформу.
  3. Шлях релізу це частина продукту. Подання до сторів і версіонування будувалися разом із функціями, бо мобільний продукт, який не можна безпечно випустити, не завершений.

Поточний стан

Живий і в активній розробці.