Calorichat is an AI-powered nutrition tracking application that lets users log meals through natural language and receive personalized coaching. Built as an internal Astravia product, it showcases how conversational AI can simplify tedious health tracking workflows.
Users needed to log meals in plain language (e.g. "a bowl of rice with grilled chicken and a side salad") and get accurate calorie breakdowns. The AI had to handle ambiguous quantities, regional food names, and compound dishes without frustrating the user with follow-up questions.
The Approach
Designed a multi-pass parsing pipeline: the first pass extracts individual food items and inferred portions using an LLM prompt tuned with few-shot examples, and the second pass maps each item to a nutrition database for macronutrient values. A confidence score determines whether to auto-log or ask the user for clarification, keeping the interaction smooth for common cases.
02
Streaming AI Coach Responses
The Challenge
The nutrition coaching feature needed to feel conversational and responsive. Waiting for a full LLM response before displaying it made the experience feel sluggish, especially on slower connections.
The Approach
Implemented server-sent events (SSE) to stream tokens from the AI model directly to the client as they are generated. On the frontend, a custom hook incrementally renders markdown content, giving users the impression of a real-time conversation while the full response is still being generated.
03
Personalized Nutrition Goals
The Challenge
Different users have vastly different caloric needs based on age, weight, activity level, and personal goals (weight loss, muscle gain, maintenance). The system had to adapt recommendations dynamically without requiring a complex onboarding flow.
The Approach
Built a progressive profiling system that gathers user data over the first few interactions instead of requiring a long sign-up form. Nutritional targets are recalculated on each profile update using Mifflin-St Jeor equations and activity multipliers, and the AI coach prompt is dynamically injected with the user's current goals so responses stay contextually relevant.