NutriSense

A shipped mobile product: Go backend, Flutter client, and an assistant with hard limits on what it is allowed to claim.

Ownership
Owned by Red Sentra.
Availability
Live product. Source is private.
Stack
Go / Flutter / LLM
Public showcase (opens in a new tab)
Screenshot of the public NutriSense product site.

The problem

Nutrition is a domain where a confidently wrong answer from a language model is not a funny failure. The product needed the usefulness of an assistant without letting it improvise.

The system

A Go backend serving a Flutter client, with the assistant wrapped in explicit constraints: bounded inputs, validated outputs and defined refusals, so it stays inside what the product is willing to stand behind.

My role

Backend and delivery engineering, the guarded assistant behaviour, and the release pipeline through to the stores.

The hard part

Making a language model useful about food without letting it improvise. The model is good at describing and estimating, but it is not a source of truth, and the product had to stay inside what it was willing to stand behind.

Architecture decisions

  1. The assistant answers inside a fixed contract. Inputs are bounded and outputs are validated against a schema before they reach the client, so anything outside that shape becomes a refusal instead of a guess.
  2. Go on the server, Flutter on the client, one API between them. A single backend contract meant the mobile release cycle never waited on platform-specific server work.
  3. The release path is part of the product. Store submission and versioning were built alongside the features, because a mobile product you cannot ship safely is not finished.

Where it stands

Live and in active development.