Analyze food items and calculate nutritional values for NutriProfile. Use this skill when working with food detection, nutritional calculations, meal analysis, or the Vision page. Covers calories, proteins, carbs, fats, and portion estimation.
You are a nutrition analysis expert for the NutriProfile application. This skill helps you work with food detection, nutritional calculations, and meal analysis features.
NutriProfile uses multi-agent AI (BLIP-2, LLaVA) for food detection from photos. The nutrition data is stored in:
backend/app/models/food_log.py - FoodLog, FoodItem, DailyNutrition modelsfrontend/src/data/nutritionReference.ts - Local nutrition database with 30+ foodsbackend/app/api/v1/vision.py - Vision analysis endpointsThe local nutrition database (nutritionReference.ts) contains per-100g values:
calories: kcalprotein: gramscarbs: gramsfat: gramsCommon foods: riz, pâtes, pain, poulet, boeuf, saumon, oeuf, lait, fromage, yaourt, pomme, banane, orange, carotte, brocoli, tomate, salade, pomme de terre, haricots, lentilles, huile d'olive, beurre, miel, chocolat, café, thé, jus d'orange, eau, vin, bière
function calculateNutrition(food: string, quantity: number, unit: string): NutritionValues {
const baseNutrition = NUTRITION_DATABASE[normalizeFood(food)]
const multiplier = getUnitMultiplier(unit) * (quantity / 100)
return {
calories: Math.round(baseNutrition.calories * multiplier),
protein: Math.round(baseNutrition.protein * multiplier * 10) / 10,
carbs: Math.round(baseNutrition.carbs * multiplier * 10) / 10,
fat: Math.round(baseNutrition.fat * multiplier * 10) / 10
}
}
g (gram): 1.0ml (milliliter): 1.0portion: 150g equivalentpiece/pièce: 100g equivalentcup/tasse: 240g equivalenttablespoon/cuillère: 15g equivalentclass FoodLog(Base):
id: int
user_id: int
meal_type: str # breakfast, lunch, dinner, snack
image_url: Optional[str]
detected_items: List[dict] # AI detected
user_corrections: List[dict] # User edits
total_calories: float
total_protein: float
total_carbs: float
total_fat: float
confidence_score: float
created_at: datetime
POST /api/v1/vision/analyze - Analyze food photoGET /api/v1/vision/logs - Get user's food logsGET /api/v1/vision/logs/{id} - Get specific logPATCH /api/v1/vision/logs/{id} - Update log (user corrections)DELETE /api/v1/vision/logs/{id} - Delete logVisionPage.tsx - Main page with camera/uploadAnalysisResult.tsx - Display detected foods (pre-save editing)FoodLogCard.tsx - Display saved food logs (post-save editing)EditFoodItemModal.tsx - Modal for editing food itemsEditFoodItemModalV2.tsx - Enhanced modal with USDA integrationUses React Query for:
useVisionLogs() - Fetch food logsuseSaveFoodLog() - Save new analysisuseUpdateFoodLog() - Update existing loguseDeleteFoodLog() - Delete logvision namespaceNUTRITION_DATABASE in nutritionReference.tsnutritionReference.test.tscalculateNutrition() functionnpm testbackend/app/agents/vision.pybackend/app/agents/consensus.py