diff --git a/apps/ios/Platform/Persistence/Static/USDAIngredientNutritionStaticData.swift b/apps/ios/Platform/Persistence/Static/USDAIngredientNutritionStaticData.swift index db1c1f003..a8a4bec74 100644 --- a/apps/ios/Platform/Persistence/Static/USDAIngredientNutritionStaticData.swift +++ b/apps/ios/Platform/Persistence/Static/USDAIngredientNutritionStaticData.swift @@ -27,10 +27,10 @@ struct USDAIngredientNutritionRecord: Identifiable, Sendable { } enum USDAIngredientNutritionStaticData { - static let source = "USDA FoodData Central API (usda-fdc client)" - static let generatedAtUTC = "2026-02-10T05:33:27Z" + static let source = "USDA FoodData Central API (catalog bootstrap + targeted fallback)" + static let generatedAtUTC = "2026-02-11T05:07:06Z" static let ingredientCount = 50 - static let matchedCount = 15 + static let matchedCount = 49 static let records: [USDAIngredientNutritionRecord] = [ USDAIngredientNutritionRecord( @@ -38,19 +38,19 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "1", ingredientName: "egg", queryUsed: "egg", - matchedFdcId: 323604, - matchedDescription: "Egg, whole, raw, frozen, pasteurized", - matchedDataType: "Foundation", + matchedFdcId: 170893, + matchedDescription: "Egg, whole, raw, frozen, salted, pasteurized", + matchedDataType: "SR Legacy", matchedFoodCategory: "Dairy and Egg Products", - matchScore: 0.287, - calories: 150, - proteinG: 12.3, - carbsG: 0.91, - fatG: 10.3, + matchScore: 0.7152, + calories: 138, + proteinG: 10.97, + carbsG: 0.83, + fatG: 10.07, fiberG: 0, - sugarG: 0, - sodiumG: 121, - source: "USDA FoodData Central API (usda-fdc client)", + sugarG: 0.07, + sodiumG: 3.663, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -58,39 +58,39 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "2", ingredientName: "rice", queryUsed: "rice", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 168878, + matchedDescription: "Rice, white, long-grain, regular, enriched, cooked", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Cereal Grains and Pasta", + matchScore: -0.2703, calories: 130, - proteinG: 2.7, - carbsG: 28, - fatG: 0.3, + proteinG: 2.69, + carbsG: 28.17, + fatG: 0.28, fiberG: 0.4, - sugarG: 0, + sugarG: 0.05, sodiumG: 0.001, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 3, ingredientKey: "3", ingredientName: "soy sauce", queryUsed: "soy sauce", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, - calories: 53, - proteinG: 8.1, - carbsG: 4.9, + matchedFdcId: 170949, + matchedDescription: "Babyfood, fruit, applesauce and cherries, strained", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Baby Foods", + matchScore: 4.2657, + calories: 51, + proteinG: 0, + carbsG: 14.1, fatG: 0, - fiberG: 0, - sugarG: 0.4, - sodiumG: 5.493, - source: "Local bundled data fallback", + fiberG: 1.1, + sugarG: 10.81, + sodiumG: 0.001, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -98,20 +98,19 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "4", ingredientName: "chicken breast", queryUsed: "chicken breast", - matchedFdcId: 331960, - matchedDescription: - "Chicken, broiler or fryers, breast, skinless, boneless, meat only, cooked, braised", - matchedDataType: "Foundation", + matchedFdcId: 171140, + matchedDescription: "Chicken, broiler or fryers, breast, skinless, boneless, meat only, cooked, braised", + matchedDataType: "SR Legacy", matchedFoodCategory: "Poultry Products", - matchScore: 0.0523, - calories: 166, - proteinG: 32.1, + matchScore: -0.0215, + calories: 157, + proteinG: 32.06, carbsG: 0, fatG: 3.24, fiberG: 0, sugarG: 0, - sodiumG: 47, - source: "USDA FoodData Central API (usda-fdc client)", + sodiumG: 0.047, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -119,19 +118,19 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "5", ingredientName: "onion", queryUsed: "onion", - matchedFdcId: 790577, - matchedDescription: "Onions, red, raw", - matchedDataType: "Foundation", + matchedFdcId: 170000, + matchedDescription: "Onions, raw", + matchedDataType: "SR Legacy", matchedFoodCategory: "Vegetables and Vegetable Products", - matchScore: 0.3816, - calories: 44, - proteinG: 0.94, - carbsG: 9.93, + matchScore: -0.0957, + calories: 40, + proteinG: 1.1, + carbsG: 9.34, fatG: 0.1, - fiberG: 2.2, - sugarG: 0, - sodiumG: 1, - source: "USDA FoodData Central API (usda-fdc client)", + fiberG: 1.7, + sugarG: 4.24, + sodiumG: 0.004, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -139,19 +138,19 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "6", ingredientName: "garlic", queryUsed: "garlic", - matchedFdcId: 1_104_647, + matchedFdcId: 169230, matchedDescription: "Garlic, raw", - matchedDataType: "Foundation", + matchedDataType: "SR Legacy", matchedFoodCategory: "Vegetables and Vegetable Products", - matchScore: 0.3221, - calories: 143, - proteinG: 6.62, - carbsG: 28.2, - fatG: 0.38, - fiberG: 2.7, - sugarG: 0, - sodiumG: 0, - source: "USDA FoodData Central API (usda-fdc client)", + matchScore: -0.0925, + calories: 149, + proteinG: 6.36, + carbsG: 33.06, + fatG: 0.5, + fiberG: 2.1, + sugarG: 1, + sodiumG: 0.017, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -159,119 +158,119 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "7", ingredientName: "tomato", queryUsed: "tomato", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 170457, + matchedDescription: "Tomatoes, red, ripe, raw, year round average", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: -0.0774, calories: 18, - proteinG: 0.9, - carbsG: 3.9, + proteinG: 0.88, + carbsG: 3.89, fatG: 0.2, fiberG: 1.2, - sugarG: 2.6, + sugarG: 2.63, sodiumG: 0.005, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 8, ingredientKey: "8", ingredientName: "bell pepper", queryUsed: "bell pepper", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, - calories: 31, - proteinG: 1, - carbsG: 6, + matchedFdcId: 170108, + matchedDescription: "Peppers, sweet, red, raw", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: 1.1488, + calories: 26, + proteinG: 0.99, + carbsG: 6.03, fatG: 0.3, fiberG: 2.1, sugarG: 4.2, sodiumG: 0.004, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 9, ingredientKey: "9", ingredientName: "pasta", - queryUsed: "pasta cooked", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + queryUsed: "pasta", + matchedFdcId: 169728, + matchedDescription: "Pasta, fresh-refrigerated, plain, cooked", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Cereal Grains and Pasta", + matchScore: 0.7274, calories: 131, - proteinG: 5, - carbsG: 25, - fatG: 1.1, - fiberG: 1.8, - sugarG: 0.6, - sodiumG: 0.001, - source: "Local bundled data fallback", - error: "HTTP Error 404: Not Found" + proteinG: 5.15, + carbsG: 24.93, + fatG: 1.05, + fiberG: 0, + sugarG: 0, + sodiumG: 0.006, + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 10, ingredientKey: "10", ingredientName: "potato", queryUsed: "potato", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 170026, + matchedDescription: "Potatoes, flesh and skin, raw", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: -0.0376, calories: 77, - proteinG: 2, - carbsG: 17, - fatG: 0.1, - fiberG: 2.2, - sugarG: 0.8, + proteinG: 2.05, + carbsG: 17.49, + fatG: 0.09, + fiberG: 2.1, + sugarG: 0.82, sodiumG: 0.006, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 11, ingredientKey: "11", ingredientName: "carrot", queryUsed: "carrot", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 170393, + matchedDescription: "Carrots, raw", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: -0.0279, calories: 41, - proteinG: 0.9, - carbsG: 9.6, - fatG: 0.2, + proteinG: 0.93, + carbsG: 9.58, + fatG: 0.24, fiberG: 2.8, - sugarG: 4.7, + sugarG: 4.74, sodiumG: 0.069, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 12, ingredientKey: "12", ingredientName: "cheese", queryUsed: "cheese", - matchedFdcId: 167705, - matchedDescription: "Cheese, parmesan, low sodium", + matchedFdcId: 170843, + matchedDescription: "Cheese, fontina", matchedDataType: "SR Legacy", matchedFoodCategory: "Dairy and Egg Products", - matchScore: 1.4648, - calories: 451, - proteinG: 41.6, - carbsG: 3.7, - fatG: 29.99, + matchScore: 0.2381, + calories: 389, + proteinG: 25.6, + carbsG: 1.55, + fatG: 31.14, fiberG: 0, - sugarG: 0.85, - sodiumG: 63, - source: "USDA FoodData Central API (usda-fdc client)", + sugarG: 1.55, + sodiumG: 0.8, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -279,59 +278,59 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "13", ingredientName: "milk", queryUsed: "milk", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 170872, + matchedDescription: "Milk, lowfat, fluid, 1% milkfat, with added vitamin A and vitamin D", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Dairy and Egg Products", + matchScore: -0.0592, calories: 42, - proteinG: 3.4, - carbsG: 5, - fatG: 1, + proteinG: 3.37, + carbsG: 4.99, + fatG: 0.97, fiberG: 0, - sugarG: 5, + sugarG: 5.2, sodiumG: 0.044, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 14, ingredientKey: "14", ingredientName: "butter", queryUsed: "butter", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, - calories: 717, + matchedFdcId: 169052, + matchedDescription: "Margarine-like, butter-margarine blend, 80% fat, stick, without salt", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Fats and Oils", + matchScore: 0.4079, + calories: 718, proteinG: 0.9, - carbsG: 0.1, - fatG: 81, + carbsG: 0.6, + fatG: 80.7, fiberG: 0, - sugarG: 0.1, - sodiumG: 0.011, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + sugarG: 0, + sodiumG: 0.028, + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 15, ingredientKey: "15", ingredientName: "bread", queryUsed: "bread", - matchedFdcId: 167532, - matchedDescription: "Bread, white wheat", + matchedFdcId: 167943, + matchedDescription: "Bread, potato", matchedDataType: "SR Legacy", matchedFoodCategory: "Baked Products", - matchScore: 0.8559, - calories: 238, - proteinG: 10.66, - carbsG: 43.91, - fatG: 2.15, - fiberG: 9.2, - sugarG: 5, - sodiumG: 478, - source: "USDA FoodData Central API (usda-fdc client)", + matchScore: 0.2205, + calories: 266, + proteinG: 12.5, + carbsG: 47.07, + fatG: 3.13, + fiberG: 6.3, + sugarG: 9.38, + sodiumG: 0.375, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -339,20 +338,20 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "16", ingredientName: "olive oil", queryUsed: "olive oil", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 167737, + matchedDescription: "Oil, corn, peanut, and olive", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Fats and Oils", + matchScore: -0.2, calories: 884, proteinG: 0, carbsG: 0, fatG: 100, fiberG: 0, sugarG: 0, - sodiumG: 0.002, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + sodiumG: 0, + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 17, @@ -362,16 +361,16 @@ enum USDAIngredientNutritionStaticData { matchedFdcId: 167746, matchedDescription: "Lemons, raw, without peel", matchedDataType: "SR Legacy", - matchedFoodCategory: "Fruits and Fruit Juices", - matchScore: 0.0021, + matchedFoodCategory: "", + matchScore: -0.0979, calories: 29, proteinG: 1.1, carbsG: 9.32, fatG: 0.3, fiberG: 2.8, sugarG: 2.5, - sodiumG: 2, - source: "USDA FoodData Central API (usda-fdc client)", + sodiumG: 0.002, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -379,59 +378,59 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "18", ingredientName: "mushroom", queryUsed: "mushroom", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 169251, + matchedDescription: "Mushrooms, white, raw", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: -0.0447, calories: 22, - proteinG: 3.1, - carbsG: 3.3, - fatG: 0.3, + proteinG: 3.09, + carbsG: 3.26, + fatG: 0.34, fiberG: 1, - sugarG: 2, + sugarG: 1.98, sodiumG: 0.005, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 19, ingredientKey: "19", ingredientName: "spinach", queryUsed: "spinach", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 168462, + matchedDescription: "Spinach, raw", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: -0.0679, calories: 23, - proteinG: 2.9, - carbsG: 3.6, - fatG: 0.4, + proteinG: 2.86, + carbsG: 3.63, + fatG: 0.39, fiberG: 2.2, - sugarG: 0.4, + sugarG: 0.42, sodiumG: 0.079, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 20, ingredientKey: "20", ingredientName: "banana", queryUsed: "banana", - matchedFdcId: 1_105_314, - matchedDescription: "Bananas, ripe and slightly ripe, raw", - matchedDataType: "Foundation", + matchedFdcId: 167764, + matchedDescription: "Fruit salad, (pineapple and papaya and banana and guava), tropical, canned, heavy syrup, solids and liquids", + matchedDataType: "SR Legacy", matchedFoodCategory: "Fruits and Fruit Juices", - matchScore: 0.4934, - calories: 97, - proteinG: 0.74, - carbsG: 23, - fatG: 0.29, - fiberG: 1.7, + matchScore: 0.8477, + calories: 86, + proteinG: 0.41, + carbsG: 22.36, + fatG: 0.1, + fiberG: 1.3, sugarG: 0, - sodiumG: 0, - source: "USDA FoodData Central API (usda-fdc client)", + sodiumG: 0.002, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -439,19 +438,19 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "21", ingredientName: "green onion", queryUsed: "green onion", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 170005, + matchedDescription: "Onions, spring or scallions (includes tops and bulb), raw", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: 0.6818, calories: 32, - proteinG: 1.8, - carbsG: 7.3, - fatG: 0.2, + proteinG: 1.83, + carbsG: 7.34, + fatG: 0.19, fiberG: 2.6, - sugarG: 2.3, + sugarG: 2.33, sodiumG: 0.016, - source: "Local bundled data fallback", + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -459,11 +458,11 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "22", ingredientName: "sesame oil", queryUsed: "sesame oil", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 171016, + matchedDescription: "Oil, sesame, salad or cooking", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Fats and Oils", + matchScore: -0.2, calories: 884, proteinG: 0, carbsG: 0, @@ -471,7 +470,7 @@ enum USDAIngredientNutritionStaticData { fiberG: 0, sugarG: 0, sodiumG: 0, - source: "Local bundled data fallback", + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -479,19 +478,19 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "23", ingredientName: "tofu", queryUsed: "tofu", - matchedFdcId: 172461, - matchedDescription: "MORI-NU, Tofu, silken, firm", + matchedFdcId: 167722, + matchedDescription: "Tofu yogurt", matchedDataType: "SR Legacy", matchedFoodCategory: "Legumes and Legume Products", - matchScore: 1.336, - calories: 62, - proteinG: 6.9, - carbsG: 2.4, - fatG: 2.7, - fiberG: 0.1, - sugarG: 1.27, - sodiumG: 36, - source: "USDA FoodData Central API (usda-fdc client)", + matchScore: 2.5429, + calories: 94, + proteinG: 3.5, + carbsG: 15.96, + fatG: 1.8, + fiberG: 0.2, + sugarG: 1.24, + sodiumG: 0.035, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -499,19 +498,19 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "24", ingredientName: "broccoli", queryUsed: "broccoli", - matchedFdcId: 168510, - matchedDescription: "Broccoli, cooked, boiled, drained, with salt", + matchedFdcId: 170379, + matchedDescription: "Broccoli, raw", matchedDataType: "SR Legacy", matchedFoodCategory: "Vegetables and Vegetable Products", - matchScore: 0.2708, - calories: 35, - proteinG: 2.38, - carbsG: 7.18, - fatG: 0.41, - fiberG: 3.3, - sugarG: 1.39, - sodiumG: 262, - source: "USDA FoodData Central API (usda-fdc client)", + matchScore: -0.0115, + calories: 34, + proteinG: 2.82, + carbsG: 6.64, + fatG: 0.37, + fiberG: 2.6, + sugarG: 1.7, + sodiumG: 0.033, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -519,20 +518,20 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "25", ingredientName: "cucumber", queryUsed: "cucumber", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 168409, + matchedDescription: "Cucumber, with peel, raw", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: -0.0317, calories: 15, - proteinG: 0.7, - carbsG: 3.6, - fatG: 0.1, + proteinG: 0.65, + carbsG: 3.63, + fatG: 0.11, fiberG: 0.5, - sugarG: 1.7, + sugarG: 1.67, sodiumG: 0.002, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 26, @@ -559,19 +558,19 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "27", ingredientName: "black beans", queryUsed: "black beans", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 168404, + matchedDescription: "Cowpeas (blackeyes), immature seeds, frozen, cooked, boiled, drained, without salt", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: 2.6086, calories: 132, - proteinG: 8.9, - carbsG: 23.7, - fatG: 0.5, - fiberG: 8.7, - sugarG: 0.3, - sodiumG: 0.001, - source: "Local bundled data fallback", + proteinG: 8.49, + carbsG: 23.76, + fatG: 0.66, + fiberG: 6.4, + sugarG: 4.46, + sodiumG: 0.005, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -579,20 +578,20 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "28", ingredientName: "tortilla", queryUsed: "tortilla", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, - calories: 306, - proteinG: 8.1, - carbsG: 50.5, - fatG: 7.9, - fiberG: 3.5, - sugarG: 3, - sodiumG: 0.618, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + matchedFdcId: 167535, + matchedDescription: "Tortillas, ready-to-bake or -fry, flour, shelf stable", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Baked Products", + matchScore: 0.0642, + calories: 297, + proteinG: 8.01, + carbsG: 49.27, + fatG: 7.58, + fiberG: 2.4, + sugarG: 2.66, + sodiumG: 0.742, + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 29, @@ -602,16 +601,16 @@ enum USDAIngredientNutritionStaticData { matchedFdcId: 168155, matchedDescription: "Limes, raw", matchedDataType: "SR Legacy", - matchedFoodCategory: "Fruits and Fruit Juices", - matchScore: 0.0038, + matchedFoodCategory: "", + matchScore: -0.1, calories: 30, proteinG: 0.7, - carbsG: 10.54, + carbsG: 10.5, fatG: 0.2, fiberG: 2.8, sugarG: 1.69, - sodiumG: 2, - source: "USDA FoodData Central API (usda-fdc client)", + sodiumG: 0.002, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -622,57 +621,57 @@ enum USDAIngredientNutritionStaticData { matchedFdcId: 169231, matchedDescription: "Ginger root, raw", matchedDataType: "SR Legacy", - matchedFoodCategory: "Vegetables and Vegetable Products", - matchScore: 0.0627, + matchedFoodCategory: "", + matchScore: -0.039, calories: 80, proteinG: 1.82, - carbsG: 17.77, + carbsG: 17.8, fatG: 0.75, fiberG: 2, sugarG: 1.7, - sodiumG: 13, - source: "USDA FoodData Central API (usda-fdc client)", + sodiumG: 0.013, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( ingredientId: 31, ingredientKey: "31", ingredientName: "oats", - queryUsed: "rolled oats", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + queryUsed: "oats", + matchedFdcId: 169705, + matchedDescription: "Oats (Includes foods for USDA's Food Distribution Program)", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Cereal Grains and Pasta", + matchScore: 1.601, calories: 389, - proteinG: 16.9, - carbsG: 66.3, + proteinG: 16.89, + carbsG: 66.27, fatG: 6.9, fiberG: 10.6, sugarG: 0, sodiumG: 0.002, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 32, ingredientKey: "32", ingredientName: "yogurt", queryUsed: "yogurt", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 170894, + matchedDescription: "Yogurt, Greek, plain, nonfat (Includes foods for USDA's Food Distribution Program)", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Dairy and Egg Products", + matchScore: -0.0714, calories: 59, - proteinG: 10, + proteinG: 10.19, carbsG: 3.6, - fatG: 0.4, + fatG: 0.39, fiberG: 0, - sugarG: 3.2, + sugarG: 3.24, sodiumG: 0.036, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 33, @@ -682,16 +681,16 @@ enum USDAIngredientNutritionStaticData { matchedFdcId: 169640, matchedDescription: "Honey", matchedDataType: "SR Legacy", - matchedFoodCategory: "Sweets", - matchScore: 0, + matchedFoodCategory: "", + matchScore: -0.1, calories: 304, proteinG: 0.3, carbsG: 82.4, fatG: 0, fiberG: 0.2, - sugarG: 82.12, - sodiumG: 4, - source: "USDA FoodData Central API (usda-fdc client)", + sugarG: 82.1, + sodiumG: 0.004, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -699,99 +698,99 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "34", ingredientName: "corn", queryUsed: "corn", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 168538, + matchedDescription: "Corn, sweet, white, raw", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: -0.058, calories: 86, - proteinG: 3.3, - carbsG: 19, - fatG: 1.2, + proteinG: 3.22, + carbsG: 19.02, + fatG: 1.18, fiberG: 2.7, - sugarG: 3.2, + sugarG: 3.22, sodiumG: 0.015, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 35, ingredientKey: "35", ingredientName: "chickpea", - queryUsed: "chickpeas canned", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, - calories: 164, - proteinG: 8.9, - carbsG: 27.4, - fatG: 2.6, - fiberG: 7.6, - sugarG: 4.8, - sodiumG: 0.007, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + queryUsed: "chickpea", + matchedFdcId: 168916, + matchedDescription: "Pasta, whole grain, 51% whole wheat, remaining unenriched semolina, cooked", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Cereal Grains and Pasta", + matchScore: 4.341, + calories: 159, + proteinG: 5.82, + carbsG: 31.51, + fatG: 1.5, + fiberG: 4.6, + sugarG: 0.85, + sodiumG: 0.006, + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 36, ingredientKey: "36", ingredientName: "salmon", queryUsed: "salmon", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, - calories: 208, - proteinG: 20.4, + matchedFdcId: 167647, + matchedDescription: "Fish, salmon, king, with skin, kippered, (Alaska Native)", + matchedDataType: "SR Legacy", + matchedFoodCategory: "American Indian/Alaska Native Foods", + matchScore: 0.9682, + calories: 209, + proteinG: 23.19, carbsG: 0, - fatG: 13.4, + fatG: 12.95, fiberG: 0, sugarG: 0, - sodiumG: 0.059, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + sodiumG: 0.87, + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 37, ingredientKey: "37", ingredientName: "sweet potato", queryUsed: "sweet potato", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, - calories: 86, - proteinG: 1.6, - carbsG: 20.1, - fatG: 0.1, - fiberG: 3, - sugarG: 4.2, + matchedFdcId: 168483, + matchedDescription: "Sweet potato, cooked, baked in skin, flesh, without salt", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: 0.1168, + calories: 90, + proteinG: 2.01, + carbsG: 20.71, + fatG: 0.15, + fiberG: 3.3, + sugarG: 6.48, sodiumG: 0.036, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 38, ingredientKey: "38", ingredientName: "ground beef", queryUsed: "ground beef", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, - calories: 254, - proteinG: 17.2, + matchedFdcId: 168651, + matchedDescription: "Beef, ground, 70% lean meat / 30% fat, patty, cooked, broiled", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Beef Products", + matchScore: 1.0884, + calories: 277, + proteinG: 25.38, carbsG: 0, - fatG: 20, + fatG: 18.66, fiberG: 0, sugarG: 0, - sodiumG: 0.066, - source: "Local bundled data fallback", + sodiumG: 0.081, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -799,79 +798,79 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "39", ingredientName: "lettuce", queryUsed: "lettuce", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 169249, + matchedDescription: "Lettuce, green leaf, raw", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: -0.0111, calories: 15, - proteinG: 1.4, - carbsG: 2.9, - fatG: 0.2, + proteinG: 1.36, + carbsG: 2.87, + fatG: 0.15, fiberG: 1.3, - sugarG: 0.8, + sugarG: 0.78, sodiumG: 0.028, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 40, ingredientKey: "40", ingredientName: "apple", queryUsed: "apple", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 169127, + matchedDescription: "Pineapple, canned, light syrup pack, solids and liquids", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Fruits and Fruit Juices", + matchScore: 0.0654, calories: 52, - proteinG: 0.3, - carbsG: 13.8, - fatG: 0.2, - fiberG: 2.4, - sugarG: 10.4, + proteinG: 0.36, + carbsG: 13.45, + fatG: 0.12, + fiberG: 0.8, + sugarG: 12.65, sodiumG: 0.001, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 41, ingredientKey: "41", ingredientName: "peanut butter", queryUsed: "peanut butter", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, - calories: 588, - proteinG: 25.1, - carbsG: 20, - fatG: 50.4, - fiberG: 6, - sugarG: 9.2, - sodiumG: 0.459, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + matchedFdcId: 169869, + matchedDescription: "Peanut butter, reduced sodium", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Legumes and Legume Products", + matchScore: 1.6977, + calories: 590, + proteinG: 24, + carbsG: 21.83, + fatG: 49.9, + fiberG: 6.6, + sugarG: 9.29, + sodiumG: 0.203, + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 42, ingredientKey: "42", ingredientName: "frozen peas", queryUsed: "frozen peas", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, - calories: 81, - proteinG: 5.4, - carbsG: 14.5, - fatG: 0.4, - fiberG: 5.1, - sugarG: 5.7, - sodiumG: 0.005, - source: "Local bundled data fallback", + matchedFdcId: 170017, + matchedDescription: "Peas, green, frozen, cooked, boiled, drained, without salt", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: -0.096, + calories: 78, + proteinG: 5.15, + carbsG: 14.26, + fatG: 0.27, + fiberG: 4.5, + sugarG: 4.4, + sodiumG: 0.072, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -879,79 +878,79 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "43", ingredientName: "canned tuna", queryUsed: "canned tuna", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, - calories: 132, - proteinG: 29, + matchedFdcId: 167614, + matchedDescription: "Fish, salmon, king, chinook, smoked and canned (Alaska Native)", + matchedDataType: "SR Legacy", + matchedFoodCategory: "American Indian/Alaska Native Foods", + matchScore: 3.7905, + calories: 150, + proteinG: 23.2, carbsG: 0, - fatG: 1, + fatG: 5.9, fiberG: 0, sugarG: 0, - sodiumG: 0.338, - source: "Local bundled data fallback", - error: "HTTP Error 404: Not Found" + sodiumG: 0, + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 44, ingredientKey: "44", ingredientName: "celery", queryUsed: "celery", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, - calories: 16, - proteinG: 0.7, - carbsG: 3, - fatG: 0.2, + matchedFdcId: 169988, + matchedDescription: "Celery, raw", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: 0.325, + calories: 14, + proteinG: 0.69, + carbsG: 2.97, + fatG: 0.17, fiberG: 1.6, - sugarG: 1.3, + sugarG: 1.34, sodiumG: 0.08, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 45, ingredientKey: "45", ingredientName: "zucchini", queryUsed: "zucchini", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 169291, + matchedDescription: "Squash, summer, zucchini, includes skin, raw", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Vegetables and Vegetable Products", + matchScore: -0.0685, calories: 17, - proteinG: 1.2, - carbsG: 3.1, - fatG: 0.3, + proteinG: 1.21, + carbsG: 3.11, + fatG: 0.32, fiberG: 1, sugarG: 2.5, sodiumG: 0.008, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), USDAIngredientNutritionRecord( ingredientId: 46, ingredientKey: "46", ingredientName: "red pepper flakes", queryUsed: "red pepper flakes", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 170932, + matchedDescription: "Spices, pepper, red or cayenne", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Spices and Herbs", + matchScore: 1.5031, calories: 318, - proteinG: 12, - carbsG: 56.6, - fatG: 17.3, - fiberG: 34.8, - sugarG: 10.3, + proteinG: 12.01, + carbsG: 56.63, + fatG: 17.27, + fiberG: 27.2, + sugarG: 10.34, sodiumG: 0.03, - source: "Local bundled data fallback", + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -962,16 +961,16 @@ enum USDAIngredientNutritionStaticData { matchedFdcId: 170923, matchedDescription: "Spices, cumin seed", matchedDataType: "SR Legacy", - matchedFoodCategory: "Spices and Herbs", - matchScore: 0.0028, + matchedFoodCategory: "", + matchScore: -0.1, calories: 375, - proteinG: 17.81, - carbsG: 44.24, - fatG: 22.27, + proteinG: 17.8, + carbsG: 44.2, + fatG: 22.3, fiberG: 10.5, sugarG: 2.25, - sodiumG: 168, - source: "USDA FoodData Central API (usda-fdc client)", + sodiumG: 0.168, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -982,16 +981,16 @@ enum USDAIngredientNutritionStaticData { matchedFdcId: 169997, matchedDescription: "Coriander (cilantro) leaves, raw", matchedDataType: "SR Legacy", - matchedFoodCategory: "Vegetables and Vegetable Products", - matchScore: 1.2922, + matchedFoodCategory: "", + matchScore: -0.0578, calories: 23, proteinG: 2.13, carbsG: 3.67, fatG: 0.52, fiberG: 2.8, sugarG: 0.87, - sodiumG: 46, - source: "USDA FoodData Central API (usda-fdc client)", + sodiumG: 0.046, + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -999,19 +998,19 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "49", ingredientName: "coconut milk", queryUsed: "coconut milk", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, + matchedFdcId: 170172, + matchedDescription: "Nuts, coconut milk, raw (liquid expressed from grated meat and water)", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Nut and Seed Products", + matchScore: 1.6327, calories: 230, - proteinG: 2.3, - carbsG: 6, - fatG: 23.8, + proteinG: 2.29, + carbsG: 5.54, + fatG: 23.84, fiberG: 2.2, - sugarG: 3.3, + sugarG: 3.34, sodiumG: 0.015, - source: "Local bundled data fallback", + source: "USDA FoodData Central API (catalog bootstrap)", error: nil ), USDAIngredientNutritionRecord( @@ -1019,20 +1018,20 @@ enum USDAIngredientNutritionStaticData { ingredientKey: "50", ingredientName: "sour cream", queryUsed: "sour cream", - matchedFdcId: nil, - matchedDescription: nil, - matchedDataType: nil, - matchedFoodCategory: nil, - matchScore: nil, - calories: 198, + matchedFdcId: 170869, + matchedDescription: "Sour cream, imitation, cultured", + matchedDataType: "SR Legacy", + matchedFoodCategory: "Dairy and Egg Products", + matchScore: 0.2566, + calories: 208, proteinG: 2.4, - carbsG: 4.6, - fatG: 19.4, + carbsG: 6.63, + fatG: 19.52, fiberG: 0, - sugarG: 3.5, - sodiumG: 0.053, - source: "Local bundled data fallback", - error: "USDA match below quality threshold" + sugarG: 6.63, + sodiumG: 0.102, + source: "USDA FoodData Central API (catalog bootstrap)", + error: nil ), ] } diff --git a/apps/ios/Resources/RecipeCatalog/recipes-v2.json b/apps/ios/Resources/RecipeCatalog/recipes-v2.json index c7c89ad6f..d65eed44e 100644 --- a/apps/ios/Resources/RecipeCatalog/recipes-v2.json +++ b/apps/ios/Resources/RecipeCatalog/recipes-v2.json @@ -1,7 +1,7 @@ { "schema": "https://fridgeluck.app/schemas/recipe-bundle-v2.schema.json", "bundle_version": 2, - "generated_at": "2026-10-15T12:45:00Z", + "generated_at": "2026-10-15T16:46:35Z", "cuisines": [ "american", "asian", @@ -47,11 +47,19 @@ }, { "key": "allspice", - "fdc_id": null, + "fdc_id": 171315, "legacy_id": null, "display_name": "Allspice", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 263.0, + "protein_g": 6.09, + "carbs_g": 72.12, + "fat_g": 8.69, + "fiber_g": 21.6, + "sugar_g": 0.0, + "sodium_mg": 77.0 + }, "aliases": [ "allspice" ] @@ -143,11 +151,19 @@ }, { "key": "apple_cider_vinegar", - "fdc_id": null, + "fdc_id": 173469, "legacy_id": null, "display_name": "Apple cider vinegar", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 21.0, + "protein_g": 0.0, + "carbs_g": 0.93, + "fat_g": 0.0, + "fiber_g": 0.0, + "sugar_g": 0.4, + "sodium_mg": 5.0 + }, "aliases": [ "apple cider vinegar", "cider vinegar" @@ -284,22 +300,38 @@ }, { "key": "baguette", - "fdc_id": null, + "fdc_id": 2707610, "legacy_id": null, "display_name": "Baguette", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 272.0, + "protein_g": 10.75, + "carbs_g": 51.88, + "fat_g": 2.42, + "fiber_g": 2.2, + "sugar_g": 4.62, + "sodium_mg": 602.0 + }, "aliases": [ "baguette" ] }, { "key": "baking_powder", - "fdc_id": null, + "fdc_id": 172803, "legacy_id": null, "display_name": "Baking powder", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 53.0, + "protein_g": 0.0, + "carbs_g": 27.7, + "fat_g": 0.0, + "fiber_g": 0.2, + "sugar_g": 0.0, + "sodium_mg": 10600.0 + }, "aliases": [ "baking powder" ] @@ -384,11 +416,19 @@ }, { "key": "beansprouts", - "fdc_id": null, + "fdc_id": 2709768, "legacy_id": null, "display_name": "Beansprouts", "category": "vegetable", - "per_100g": null, + "per_100g": { + "kcal": 30.0, + "protein_g": 3.04, + "carbs_g": 5.94, + "fat_g": 0.18, + "fiber_g": 1.8, + "sugar_g": 4.13, + "sodium_mg": 6.0 + }, "aliases": [ "beansprouts" ] @@ -426,11 +466,19 @@ }, { "key": "beef_stock", - "fdc_id": null, + "fdc_id": 172883, "legacy_id": null, "display_name": "Beef stock", "category": "condiment", - "per_100g": null, + "per_100g": { + "kcal": 13.0, + "protein_g": 1.97, + "carbs_g": 1.2, + "fat_g": 0.09, + "fiber_g": 0.0, + "sugar_g": 0.54, + "sodium_mg": 198.0 + }, "aliases": [ "beef broth", "beef stock" @@ -492,11 +540,19 @@ }, { "key": "besan", - "fdc_id": null, + "fdc_id": 174288, "legacy_id": null, "display_name": "Besan", "category": "vegetable", - "per_100g": null, + "per_100g": { + "kcal": 387.0, + "protein_g": 22.39, + "carbs_g": 57.82, + "fat_g": 6.69, + "fiber_g": 10.8, + "sugar_g": 10.85, + "sodium_mg": 64.0 + }, "aliases": [ "besan (chickpea flour)" ] @@ -538,11 +594,19 @@ }, { "key": "black_eyed_peas", - "fdc_id": null, + "fdc_id": 2707412, "legacy_id": null, "display_name": "Black eyed peas", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 166.0, + "protein_g": 7.18, + "carbs_g": 19.29, + "fat_g": 7.0, + "fiber_g": 6.0, + "sugar_g": 3.07, + "sodium_mg": 220.0 + }, "aliases": [ "black-eyed peas" ] @@ -617,11 +681,19 @@ }, { "key": "borlotti_beans", - "fdc_id": null, + "fdc_id": 173736, "legacy_id": null, "display_name": "Borlotti beans", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 136.0, + "protein_g": 9.34, + "carbs_g": 24.46, + "fat_g": 0.46, + "fiber_g": 8.6, + "sugar_g": 0.0, + "sodium_mg": 1.0 + }, "aliases": [ "borlotti beans, drained" ] @@ -658,11 +730,19 @@ }, { "key": "breadcrumbs", - "fdc_id": null, + "fdc_id": 174928, "legacy_id": null, "display_name": "Breadcrumbs", "category": "vegetable", - "per_100g": null, + "per_100g": { + "kcal": 395.0, + "protein_g": 13.35, + "carbs_g": 71.98, + "fat_g": 5.3, + "fiber_g": 4.5, + "sugar_g": 6.2, + "sodium_mg": 732.0 + }, "aliases": [ "bread crumbs", "breadcrumbs", @@ -692,11 +772,19 @@ }, { "key": "broth", - "fdc_id": null, + "fdc_id": 2707132, "legacy_id": null, "display_name": "Broth", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 6.0, + "protein_g": 0.89, + "carbs_g": 0.24, + "fat_g": 0.22, + "fiber_g": 0.0, + "sugar_g": 0.22, + "sodium_mg": 372.0 + }, "aliases": [ "broth" ] @@ -781,11 +869,19 @@ }, { "key": "burger_buns", - "fdc_id": null, + "fdc_id": 2707657, "legacy_id": null, "display_name": "Burger buns", "category": "grain", - "per_100g": null, + "per_100g": { + "kcal": 267.0, + "protein_g": 9.43, + "carbs_g": 49.2, + "fat_g": 3.59, + "fiber_g": 2.3, + "sugar_g": 5.34, + "sodium_mg": 450.0 + }, "aliases": [ "burger buns" ] @@ -1052,11 +1148,19 @@ }, { "key": "cayenne", - "fdc_id": null, + "fdc_id": 170932, "legacy_id": null, "display_name": "Cayenne", "category": "spice", - "per_100g": null, + "per_100g": { + "kcal": 318.0, + "protein_g": 12.01, + "carbs_g": 56.63, + "fat_g": 17.27, + "fiber_g": 27.2, + "sugar_g": 10.34, + "sodium_mg": 30.0 + }, "aliases": [ "cayenne" ] @@ -1181,11 +1285,19 @@ }, { "key": "chicken_stock", - "fdc_id": null, + "fdc_id": 172884, "legacy_id": null, "display_name": "Chicken stock", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 36.0, + "protein_g": 2.52, + "carbs_g": 3.53, + "fat_g": 1.2, + "fiber_g": 0.0, + "sugar_g": 1.58, + "sodium_mg": 143.0 + }, "aliases": [ "chicken bone broth", "chicken broth", @@ -1262,22 +1374,38 @@ }, { "key": "chiles", - "fdc_id": null, + "fdc_id": 168570, "legacy_id": null, "display_name": "Chiles", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 324.0, + "protein_g": 10.58, + "carbs_g": 69.86, + "fat_g": 5.81, + "fiber_g": 28.7, + "sugar_g": 41.06, + "sodium_mg": 91.0 + }, "aliases": [ "dried chiles" ] }, { "key": "chili_powder", - "fdc_id": null, + "fdc_id": 171319, "legacy_id": null, "display_name": "Chili powder", "category": "spice", - "per_100g": null, + "per_100g": { + "kcal": 282.0, + "protein_g": 13.46, + "carbs_g": 49.7, + "fat_g": 14.28, + "fiber_g": 34.8, + "sugar_g": 7.19, + "sodium_mg": 2867.0 + }, "aliases": [ "chili powder" ] @@ -1517,11 +1645,19 @@ }, { "key": "cola", - "fdc_id": null, + "fdc_id": 174852, "legacy_id": null, "display_name": "Cola", "category": "condiment", - "per_100g": null, + "per_100g": { + "kcal": 42.0, + "protein_g": 0.0, + "carbs_g": 10.36, + "fat_g": 0.25, + "fiber_g": 0.0, + "sugar_g": 9.94, + "sodium_mg": 3.0 + }, "aliases": [ "cola" ] @@ -1746,11 +1882,19 @@ }, { "key": "cranberry_sauce", - "fdc_id": null, + "fdc_id": 2709280, "legacy_id": null, "display_name": "Cranberry sauce", "category": "condiment", - "per_100g": null, + "per_100g": { + "kcal": 159.0, + "protein_g": 0.9, + "carbs_g": 40.4, + "fat_g": 0.15, + "fiber_g": 1.1, + "sugar_g": 31.75, + "sodium_mg": 5.0 + }, "aliases": [ "cranberry sauce" ] @@ -1860,11 +2004,19 @@ }, { "key": "daikon", - "fdc_id": null, + "fdc_id": 168451, "legacy_id": null, "display_name": "Daikon", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 18.0, + "protein_g": 0.6, + "carbs_g": 4.1, + "fat_g": 0.1, + "fiber_g": 1.6, + "sugar_g": 2.5, + "sodium_mg": 21.0 + }, "aliases": [ "daikon" ] @@ -2216,11 +2368,19 @@ }, { "key": "french_fries", - "fdc_id": null, + "fdc_id": 2709456, "legacy_id": null, "display_name": "French fries", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 225.0, + "protein_g": 2.5, + "carbs_g": 23.23, + "fat_g": 14.07, + "fiber_g": 1.8, + "sugar_g": 0.34, + "sodium_mg": 295.0 + }, "aliases": [ "french fries" ] @@ -2338,11 +2498,19 @@ }, { "key": "glass_noodles", - "fdc_id": null, + "fdc_id": 174258, "legacy_id": null, "display_name": "Glass noodles", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 351.0, + "protein_g": 0.16, + "carbs_g": 86.09, + "fat_g": 0.06, + "fiber_g": 0.5, + "sugar_g": 0.0, + "sodium_mg": 10.0 + }, "aliases": [ "glass noodles" ] @@ -2388,11 +2556,19 @@ }, { "key": "goat_meat", - "fdc_id": null, + "fdc_id": 175303, "legacy_id": null, "display_name": "Goat meat", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 109.0, + "protein_g": 20.6, + "carbs_g": 0.0, + "fat_g": 2.31, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 82.0 + }, "aliases": [ "goat meat" ] @@ -2521,11 +2697,19 @@ }, { "key": "green_chili", - "fdc_id": null, + "fdc_id": 170497, "legacy_id": null, "display_name": "Green chili", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 40.0, + "protein_g": 2.0, + "carbs_g": 9.46, + "fat_g": 0.2, + "fiber_g": 1.5, + "sugar_g": 5.1, + "sodium_mg": 7.0 + }, "aliases": [ "green chili", "mild green chiles" @@ -2642,22 +2826,38 @@ }, { "key": "ground_coriander", - "fdc_id": null, + "fdc_id": 170922, "legacy_id": null, "display_name": "Ground coriander", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 298.0, + "protein_g": 12.37, + "carbs_g": 54.99, + "fat_g": 17.77, + "fiber_g": 41.9, + "sugar_g": 0.0, + "sodium_mg": 35.0 + }, "aliases": [ "ground coriander" ] }, { "key": "ground_ginger", - "fdc_id": null, + "fdc_id": 170926, "legacy_id": null, "display_name": "Ground ginger", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 335.0, + "protein_g": 8.98, + "carbs_g": 71.62, + "fat_g": 4.24, + "fiber_g": 14.1, + "sugar_g": 3.39, + "sodium_mg": 27.0 + }, "aliases": [ "ground ginger" ] @@ -2685,11 +2885,19 @@ }, { "key": "ground_turmeric", - "fdc_id": null, + "fdc_id": 172231, "legacy_id": null, "display_name": "Ground turmeric", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 312.0, + "protein_g": 9.68, + "carbs_g": 67.14, + "fat_g": 3.25, + "fiber_g": 22.7, + "sugar_g": 3.21, + "sodium_mg": 27.0 + }, "aliases": [ "ground turmeric" ] @@ -2728,11 +2936,19 @@ }, { "key": "hao_you", - "fdc_id": null, + "fdc_id": 2707150, "legacy_id": null, "display_name": "Hao you", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 51.0, + "protein_g": 1.35, + "carbs_g": 10.92, + "fat_g": 0.25, + "fiber_g": 0.3, + "sugar_g": 0.0, + "sodium_mg": 2733.0 + }, "aliases": [ "hao you" ] @@ -2771,11 +2987,19 @@ }, { "key": "hoisin", - "fdc_id": null, + "fdc_id": 2707441, "legacy_id": null, "display_name": "Hoisin", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 220.0, + "protein_g": 3.31, + "carbs_g": 44.08, + "fat_g": 3.39, + "fiber_g": 2.8, + "sugar_g": 27.26, + "sodium_mg": 1615.0 + }, "aliases": [ "hoisin sauce" ] @@ -3113,11 +3337,19 @@ }, { "key": "lemon_juice", - "fdc_id": null, + "fdc_id": 2709180, "legacy_id": null, "display_name": "Lemon juice", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 22.0, + "protein_g": 0.35, + "carbs_g": 6.9, + "fat_g": 0.24, + "fiber_g": 0.3, + "sugar_g": 2.52, + "sodium_mg": 1.0 + }, "aliases": [ "lemon juice" ] @@ -3316,11 +3548,19 @@ }, { "key": "mild_curry_powder", - "fdc_id": null, + "fdc_id": 170924, "legacy_id": null, "display_name": "Mild curry powder", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 325.0, + "protein_g": 14.29, + "carbs_g": 55.83, + "fat_g": 14.01, + "fiber_g": 53.2, + "sugar_g": 2.76, + "sodium_mg": 52.0 + }, "aliases": [ "mild curry powder" ] @@ -3368,11 +3608,19 @@ }, { "key": "millet_flour", - "fdc_id": null, + "fdc_id": 172023, "legacy_id": null, "display_name": "Millet flour", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 382.0, + "protein_g": 10.75, + "carbs_g": 75.12, + "fat_g": 4.25, + "fiber_g": 3.5, + "sugar_g": 1.66, + "sodium_mg": 4.0 + }, "aliases": [ "millet flour" ] @@ -3574,11 +3822,19 @@ }, { "key": "nutmeg", - "fdc_id": null, + "fdc_id": 171326, "legacy_id": null, "display_name": "Nutmeg", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 525.0, + "protein_g": 5.84, + "carbs_g": 49.29, + "fat_g": 36.31, + "fiber_g": 20.8, + "sugar_g": 2.99, + "sodium_mg": 16.0 + }, "aliases": [ "nutmeg" ] @@ -3694,11 +3950,19 @@ }, { "key": "orange_juice", - "fdc_id": null, + "fdc_id": 2709186, "legacy_id": null, "display_name": "Orange juice", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 47.0, + "protein_g": 0.77, + "carbs_g": 10.17, + "fat_g": 0.34, + "fiber_g": 0.3, + "sugar_g": 8.18, + "sodium_mg": 2.0 + }, "aliases": [ "orange juice" ] @@ -3745,11 +4009,19 @@ }, { "key": "orzo", - "fdc_id": null, + "fdc_id": 2708357, "legacy_id": null, "display_name": "Orzo", "category": "vegetable", - "per_100g": null, + "per_100g": { + "kcal": 157.0, + "protein_g": 5.76, + "carbs_g": 30.68, + "fat_g": 0.92, + "fiber_g": 1.8, + "sugar_g": 0.56, + "sodium_mg": 232.0 + }, "aliases": [ "orzo", "risoni" @@ -3777,11 +4049,19 @@ }, { "key": "paprika", - "fdc_id": null, + "fdc_id": 171329, "legacy_id": null, "display_name": "Paprika", "category": "spice", - "per_100g": null, + "per_100g": { + "kcal": 282.0, + "protein_g": 14.14, + "carbs_g": 53.99, + "fat_g": 12.89, + "fiber_g": 34.9, + "sugar_g": 10.34, + "sodium_mg": 68.0 + }, "aliases": [ "paprika" ] @@ -4068,11 +4348,19 @@ }, { "key": "pomegranate_seeds", - "fdc_id": null, + "fdc_id": 169134, "legacy_id": null, "display_name": "Pomegranate seeds", "category": "fruit", - "per_100g": null, + "per_100g": { + "kcal": 83.0, + "protein_g": 1.67, + "carbs_g": 18.7, + "fat_g": 1.17, + "fiber_g": 4.0, + "sugar_g": 13.67, + "sodium_mg": 3.0 + }, "aliases": [ "pomegranate seeds" ] @@ -4119,11 +4407,19 @@ }, { "key": "pork_cutlets", - "fdc_id": null, + "fdc_id": 168230, "legacy_id": null, "display_name": "Pork cutlets", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 143.0, + "protein_g": 21.43, + "carbs_g": 0.0, + "fat_g": 5.66, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 52.0 + }, "aliases": [ "pork cutlets" ] @@ -4384,11 +4680,19 @@ }, { "key": "red_palm_oil", - "fdc_id": null, + "fdc_id": 171015, "legacy_id": null, "display_name": "Red palm oil", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 884.0, + "protein_g": 0.0, + "carbs_g": 0.0, + "fat_g": 100.0, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 0.0 + }, "aliases": [ "red palm oil" ] @@ -4519,11 +4823,19 @@ }, { "key": "rice_flour", - "fdc_id": null, + "fdc_id": 169714, "legacy_id": null, "display_name": "Rice flour", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 366.0, + "protein_g": 5.95, + "carbs_g": 80.13, + "fat_g": 1.42, + "fiber_g": 2.4, + "sugar_g": 0.12, + "sodium_mg": 0.0 + }, "aliases": [ "rice flour" ] @@ -4717,11 +5029,19 @@ }, { "key": "salt_cod", - "fdc_id": null, + "fdc_id": 174190, "legacy_id": null, "display_name": "Salt cod", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 290.0, + "protein_g": 62.82, + "carbs_g": 0.0, + "fat_g": 2.37, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 7027.0 + }, "aliases": [ "salt cod" ] @@ -5008,11 +5328,19 @@ }, { "key": "smoked_sausage", - "fdc_id": null, + "fdc_id": 174585, "legacy_id": null, "display_name": "Smoked sausage", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 320.0, + "protein_g": 12.0, + "carbs_g": 2.42, + "fat_g": 28.73, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 911.0 + }, "aliases": [ "smoked sausage" ] @@ -5115,22 +5443,38 @@ }, { "key": "squid", - "fdc_id": null, + "fdc_id": 174223, "legacy_id": null, "display_name": "Squid", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 92.0, + "protein_g": 15.58, + "carbs_g": 3.08, + "fat_g": 1.38, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 44.0 + }, "aliases": [ "squid" ] }, { "key": "sriracha", - "fdc_id": null, + "fdc_id": 171186, "legacy_id": null, "display_name": "Sriracha", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 93.0, + "protein_g": 1.93, + "carbs_g": 19.16, + "fat_g": 0.93, + "fiber_g": 2.2, + "sugar_g": 15.11, + "sodium_mg": 2124.0 + }, "aliases": [ "sriracha" ] @@ -5211,11 +5555,19 @@ }, { "key": "swede", - "fdc_id": null, + "fdc_id": 168454, "legacy_id": null, "display_name": "Swede", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 37.0, + "protein_g": 1.08, + "carbs_g": 8.62, + "fat_g": 0.16, + "fiber_g": 2.3, + "sugar_g": 4.46, + "sodium_mg": 12.0 + }, "aliases": [ "swede, peeled and cubed" ] @@ -5297,11 +5649,19 @@ }, { "key": "tamari", - "fdc_id": null, + "fdc_id": 174278, "legacy_id": null, "display_name": "Tamari", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 60.0, + "protein_g": 10.51, + "carbs_g": 5.57, + "fat_g": 0.1, + "fiber_g": 0.8, + "sugar_g": 1.7, + "sodium_mg": 5586.0 + }, "aliases": [ "japanese tamari", "tamari", @@ -5310,11 +5670,19 @@ }, { "key": "tamarind_paste", - "fdc_id": null, + "fdc_id": 167763, "legacy_id": null, "display_name": "Tamarind paste", "category": "condiment", - "per_100g": null, + "per_100g": { + "kcal": 239.0, + "protein_g": 2.8, + "carbs_g": 62.5, + "fat_g": 0.6, + "fiber_g": 5.1, + "sugar_g": 38.8, + "sodium_mg": 28.0 + }, "aliases": [ "tamarind paste", "tamarind paste or rice vinegar" @@ -5507,22 +5875,38 @@ }, { "key": "turmeric", - "fdc_id": null, + "fdc_id": 172231, "legacy_id": null, "display_name": "Turmeric", "category": "spice", - "per_100g": null, + "per_100g": { + "kcal": 312.0, + "protein_g": 9.68, + "carbs_g": 67.14, + "fat_g": 3.25, + "fiber_g": 22.7, + "sugar_g": 3.21, + "sodium_mg": 27.0 + }, "aliases": [ "turmeric" ] }, { "key": "udon_noodles", - "fdc_id": null, + "fdc_id": 2708352, "legacy_id": null, "display_name": "Udon noodles", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 137.0, + "protein_g": 4.51, + "carbs_g": 25.01, + "fat_g": 2.06, + "fiber_g": 1.2, + "sugar_g": 0.4, + "sodium_mg": 236.0 + }, "aliases": [ "udon noodles" ] @@ -5578,11 +5962,19 @@ }, { "key": "vegetable_stock", - "fdc_id": null, + "fdc_id": 171180, "legacy_id": null, "display_name": "Vegetable stock", "category": "condiment", - "per_100g": null, + "per_100g": { + "kcal": 6.0, + "protein_g": 0.23, + "carbs_g": 1.02, + "fat_g": 0.07, + "fiber_g": 0.0, + "sugar_g": 0.57, + "sodium_mg": 303.0 + }, "aliases": [ "veg stock", "vegetable broth", @@ -5773,22 +6165,38 @@ }, { "key": "white_vinegar", - "fdc_id": null, + "fdc_id": 172237, "legacy_id": null, "display_name": "White vinegar", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 18.0, + "protein_g": 0.0, + "carbs_g": 0.04, + "fat_g": 0.0, + "fiber_g": 0.0, + "sugar_g": 0.04, + "sodium_mg": 2.0 + }, "aliases": [ "white vinegar" ] }, { "key": "whole_wheat_flour", - "fdc_id": null, + "fdc_id": 168893, "legacy_id": null, "display_name": "Whole wheat flour", "category": "grain", - "per_100g": null, + "per_100g": { + "kcal": 340.0, + "protein_g": 13.21, + "carbs_g": 71.97, + "fat_g": 2.5, + "fiber_g": 10.7, + "sugar_g": 0.41, + "sodium_mg": 2.0 + }, "aliases": [ "whole wheat flour" ] @@ -6324,13 +6732,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 412.0, + "kcal": 413.8, "protein_g": 13.2, - "carbs_g": 54.4, + "carbs_g": 55.4, "fat_g": 15.1, "fiber_g": 2.0, - "sodium_mg": 428.9, - "coverage": "partial", + "sodium_mg": 786.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -6849,13 +7257,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 173.9, + "kcal": 174.3, "protein_g": 9.3, - "carbs_g": 30.7, + "carbs_g": 30.9, "fat_g": 6.1, "fiber_g": 4.1, - "sodium_mg": 159.2, - "coverage": "partial", + "sodium_mg": 238.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -8315,13 +8723,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 272.6, - "protein_g": 11.6, - "carbs_g": 30.5, - "fat_g": 11.9, + "kcal": 283.4, + "protein_g": 12.0, + "carbs_g": 32.4, + "fat_g": 12.0, "fiber_g": 3.2, - "sodium_mg": 659.7, - "coverage": "partial", + "sodium_mg": 1205.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -8485,13 +8893,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 306.9, - "protein_g": 25.8, - "carbs_g": 12.3, - "fat_g": 17.3, + "kcal": 436.5, + "protein_g": 34.9, + "carbs_g": 25.0, + "fat_g": 21.6, "fiber_g": 1.3, - "sodium_mg": 443.1, - "coverage": "partial", + "sodium_mg": 957.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -8832,13 +9240,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 807.9, - "protein_g": 45.0, - "carbs_g": 104.6, - "fat_g": 23.2, + "kcal": 923.1, + "protein_g": 53.0, + "carbs_g": 115.9, + "fat_g": 27.0, "fiber_g": 5.9, - "sodium_mg": 472.3, - "coverage": "partial", + "sodium_mg": 929.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -9789,13 +10197,13 @@ "dairy_free": true }, "nutrition_per_serving": { - "kcal": 829.0, - "protein_g": 38.6, - "carbs_g": 152.9, + "kcal": 838.6, + "protein_g": 40.3, + "carbs_g": 153.8, "fat_g": 4.9, - "fiber_g": 3.9, - "sodium_mg": 116.8, - "coverage": "partial", + "fiber_g": 4.1, + "sodium_mg": 1010.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -10805,13 +11213,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 325.0, - "protein_g": 22.9, - "carbs_g": 29.7, - "fat_g": 12.8, + "kcal": 359.5, + "protein_g": 25.4, + "carbs_g": 33.1, + "fat_g": 13.9, "fiber_g": 3.6, - "sodium_mg": 201.4, - "coverage": "partial", + "sodium_mg": 338.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -12649,13 +13057,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 220.6, + "kcal": 221.4, "protein_g": 5.6, - "carbs_g": 29.2, + "carbs_g": 29.6, "fat_g": 9.1, "fiber_g": 2.2, - "sodium_mg": 68.1, - "coverage": "partial", + "sodium_mg": 227.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -13454,13 +13862,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 428.2, - "protein_g": 17.2, - "carbs_g": 73.5, - "fat_g": 10.4, + "kcal": 442.6, + "protein_g": 17.7, + "carbs_g": 75.9, + "fat_g": 10.5, "fiber_g": 18.9, - "sodium_mg": 40.3, - "coverage": "partial", + "sodium_mg": 767.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -13864,13 +14272,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 276.7, - "protein_g": 26.6, - "carbs_g": 27.9, - "fat_g": 6.1, + "kcal": 363.1, + "protein_g": 32.7, + "carbs_g": 36.3, + "fat_g": 9.0, "fiber_g": 2.9, - "sodium_mg": 299.3, - "coverage": "partial", + "sodium_mg": 642.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -14075,12 +14483,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 417.2, - "protein_g": 31.8, - "carbs_g": 29.5, - "fat_g": 18.9, - "fiber_g": 2.0, - "sodium_mg": 183.8, + "kcal": 419.6, + "protein_g": 31.9, + "carbs_g": 30.0, + "fat_g": 19.0, + "fiber_g": 2.2, + "sodium_mg": 184.0, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -14470,13 +14878,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 790.1, - "protein_g": 54.2, - "carbs_g": 45.9, - "fat_g": 44.5, + "kcal": 811.7, + "protein_g": 55.7, + "carbs_g": 48.1, + "fat_g": 45.2, "fiber_g": 13.0, - "sodium_mg": 501.0, - "coverage": "partial", + "sodium_mg": 586.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -14897,13 +15305,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1255.2, - "protein_g": 17.3, - "carbs_g": 165.8, + "kcal": 1262.4, + "protein_g": 18.5, + "carbs_g": 166.5, "fat_g": 60.2, - "fiber_g": 12.3, - "sodium_mg": 1481.4, - "coverage": "partial", + "fiber_g": 12.4, + "sodium_mg": 2151.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -15311,12 +15719,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 406.6, - "protein_g": 28.6, - "carbs_g": 27.9, + "kcal": 408.9, + "protein_g": 28.7, + "carbs_g": 28.4, "fat_g": 20.0, - "fiber_g": 2.5, - "sodium_mg": 211.9, + "fiber_g": 2.7, + "sodium_mg": 212.1, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -15572,13 +15980,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 398.3, - "protein_g": 27.9, - "carbs_g": 46.4, - "fat_g": 11.6, + "kcal": 441.5, + "protein_g": 31.0, + "carbs_g": 50.6, + "fat_g": 13.0, "fiber_g": 4.2, - "sodium_mg": 310.0, - "coverage": "partial", + "sodium_mg": 481.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -16538,13 +16946,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1844.7, - "protein_g": 75.8, - "carbs_g": 326.0, - "fat_g": 27.3, + "kcal": 1866.3, + "protein_g": 76.6, + "carbs_g": 329.7, + "fat_g": 27.6, "fiber_g": 22.2, - "sodium_mg": 2269.3, - "coverage": "partial", + "sodium_mg": 3360.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -16704,13 +17112,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 280.9, + "kcal": 282.1, "protein_g": 16.8, - "carbs_g": 9.2, + "carbs_g": 9.5, "fat_g": 19.3, - "fiber_g": 0.5, - "sodium_mg": 233.2, - "coverage": "partial", + "fiber_g": 0.6, + "sodium_mg": 233.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -16880,13 +17288,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 236.0, - "protein_g": 6.0, - "carbs_g": 23.6, + "kcal": 237.2, + "protein_g": 6.1, + "carbs_g": 23.8, "fat_g": 14.7, - "fiber_g": 4.1, - "sodium_mg": 38.2, - "coverage": "partial", + "fiber_g": 4.2, + "sodium_mg": 38.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -17049,13 +17457,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 236.5, - "protein_g": 8.6, - "carbs_g": 36.4, - "fat_g": 6.8, - "fiber_g": 5.7, - "sodium_mg": 59.9, - "coverage": "partial", + "kcal": 662.7, + "protein_g": 25.2, + "carbs_g": 126.6, + "fat_g": 9.9, + "fiber_g": 19.2, + "sodium_mg": 62.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -17388,13 +17796,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 309.4, - "protein_g": 14.4, - "carbs_g": 45.7, + "kcal": 311.7, + "protein_g": 14.5, + "carbs_g": 46.2, "fat_g": 8.4, - "fiber_g": 7.8, - "sodium_mg": 111.5, - "coverage": "partial", + "fiber_g": 7.9, + "sodium_mg": 111.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -17776,13 +18184,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 412.6, + "kcal": 413.9, "protein_g": 18.0, - "carbs_g": 43.6, + "carbs_g": 43.9, "fat_g": 19.8, "fiber_g": 16.0, - "sodium_mg": 479.1, - "coverage": "partial", + "sodium_mg": 479.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -18178,13 +18586,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 368.7, - "protein_g": 26.1, - "carbs_g": 11.2, + "kcal": 371.0, + "protein_g": 26.2, + "carbs_g": 11.7, "fat_g": 25.1, - "fiber_g": 2.7, - "sodium_mg": 99.5, - "coverage": "partial", + "fiber_g": 2.8, + "sodium_mg": 99.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -18393,12 +18801,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1153.1, - "protein_g": 53.9, - "carbs_g": 170.8, + "kcal": 1155.5, + "protein_g": 54.0, + "carbs_g": 171.3, "fat_g": 32.2, - "fiber_g": 34.1, - "sodium_mg": 192.8, + "fiber_g": 34.2, + "sodium_mg": 193.0, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -19633,13 +20041,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 213.8, - "protein_g": 24.4, - "carbs_g": 4.0, - "fat_g": 10.5, + "kcal": 235.4, + "protein_g": 25.9, + "carbs_g": 6.1, + "fat_g": 11.3, "fiber_g": 0.9, - "sodium_mg": 89.9, - "coverage": "partial", + "sodium_mg": 175.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -19987,13 +20395,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 241.0, - "protein_g": 25.2, - "carbs_g": 11.5, - "fat_g": 10.8, + "kcal": 284.2, + "protein_g": 28.3, + "carbs_g": 15.8, + "fat_g": 12.2, "fiber_g": 2.7, - "sodium_mg": 92.2, - "coverage": "partial", + "sodium_mg": 263.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -21216,13 +21624,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1148.7, - "protein_g": 52.3, - "carbs_g": 163.4, - "fat_g": 36.1, + "kcal": 1155.9, + "protein_g": 52.6, + "carbs_g": 164.7, + "fat_g": 36.2, "fiber_g": 32.9, - "sodium_mg": 110.5, - "coverage": "partial", + "sodium_mg": 474.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -22458,13 +22866,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 505.0, - "protein_g": 34.1, - "carbs_g": 41.8, - "fat_g": 22.9, + "kcal": 548.2, + "protein_g": 37.1, + "carbs_g": 46.1, + "fat_g": 24.4, "fiber_g": 4.9, - "sodium_mg": 917.6, - "coverage": "partial", + "sodium_mg": 1089.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -22770,13 +23178,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 177.9, - "protein_g": 20.2, - "carbs_g": 11.9, - "fat_g": 5.0, + "kcal": 350.7, + "protein_g": 32.3, + "carbs_g": 28.8, + "fat_g": 10.8, "fiber_g": 0.9, - "sodium_mg": 619.5, - "coverage": "partial", + "sodium_mg": 1305.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -23470,13 +23878,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 462.7, - "protein_g": 22.5, - "carbs_g": 38.9, + "kcal": 472.3, + "protein_g": 24.1, + "carbs_g": 39.8, "fat_g": 23.5, - "fiber_g": 2.1, - "sodium_mg": 851.7, - "coverage": "partial", + "fiber_g": 2.2, + "sodium_mg": 1745.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -23682,12 +24090,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 431.0, - "protein_g": 31.1, - "carbs_g": 33.3, - "fat_g": 22.7, + "kcal": 441.8, + "protein_g": 31.5, + "carbs_g": 35.1, + "fat_g": 22.8, "fiber_g": 3.3, - "sodium_mg": 890.1, + "sodium_mg": 1435.5, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -24299,13 +24707,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 282.2, - "protein_g": 4.7, - "carbs_g": 36.2, - "fat_g": 14.7, + "kcal": 296.6, + "protein_g": 5.3, + "carbs_g": 38.6, + "fat_g": 14.8, "fiber_g": 8.3, - "sodium_mg": 1090.5, - "coverage": "partial", + "sodium_mg": 1817.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -25316,13 +25724,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 517.3, + "kcal": 519.7, "protein_g": 28.2, - "carbs_g": 40.6, + "carbs_g": 41.1, "fat_g": 27.9, - "fiber_g": 6.3, - "sodium_mg": 1131.9, - "coverage": "partial", + "fiber_g": 6.5, + "sodium_mg": 1132.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -25560,13 +25968,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 910.3, - "protein_g": 27.6, - "carbs_g": 89.5, - "fat_g": 52.7, - "fiber_g": 20.4, - "sodium_mg": 1635.7, - "coverage": "partial", + "kcal": 912.7, + "protein_g": 27.7, + "carbs_g": 90.0, + "fat_g": 52.8, + "fiber_g": 20.5, + "sodium_mg": 1635.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -26452,12 +26860,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 622.9, - "protein_g": 28.2, - "carbs_g": 53.1, + "kcal": 625.3, + "protein_g": 28.3, + "carbs_g": 53.6, "fat_g": 33.9, - "fiber_g": 9.6, - "sodium_mg": 1148.9, + "fiber_g": 9.8, + "sodium_mg": 1149.2, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -26819,13 +27227,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 375.6, - "protein_g": 7.6, - "carbs_g": 27.1, - "fat_g": 28.6, + "kcal": 397.2, + "protein_g": 8.4, + "carbs_g": 30.8, + "fat_g": 28.8, "fiber_g": 5.7, - "sodium_mg": 1181.6, - "coverage": "partial", + "sodium_mg": 2272.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -27690,12 +28098,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 394.3, - "protein_g": 38.8, - "carbs_g": 14.5, + "kcal": 396.6, + "protein_g": 38.9, + "carbs_g": 15.0, "fat_g": 20.1, - "fiber_g": 3.4, - "sodium_mg": 1014.1, + "fiber_g": 3.6, + "sodium_mg": 1014.3, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -28319,13 +28727,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 365.7, - "protein_g": 30.1, - "carbs_g": 12.9, - "fat_g": 22.2, + "kcal": 387.3, + "protein_g": 31.6, + "carbs_g": 15.0, + "fat_g": 22.9, "fiber_g": 3.1, - "sodium_mg": 1007.0, - "coverage": "partial", + "sodium_mg": 1092.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -29198,13 +29606,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 347.6, - "protein_g": 29.1, - "carbs_g": 32.1, - "fat_g": 11.2, + "kcal": 412.4, + "protein_g": 33.6, + "carbs_g": 38.4, + "fat_g": 13.4, "fiber_g": 4.9, - "sodium_mg": 1554.7, - "coverage": "partial", + "sodium_mg": 1812.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -29438,13 +29846,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 759.4, - "protein_g": 26.0, - "carbs_g": 55.7, - "fat_g": 53.2, - "fiber_g": 14.8, - "sodium_mg": 1298.6, - "coverage": "partial", + "kcal": 761.7, + "protein_g": 26.1, + "carbs_g": 56.2, + "fat_g": 53.3, + "fiber_g": 14.9, + "sodium_mg": 1298.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -30218,13 +30626,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 453.6, - "protein_g": 12.5, - "carbs_g": 39.1, - "fat_g": 29.3, + "kcal": 482.4, + "protein_g": 13.6, + "carbs_g": 44.0, + "fat_g": 29.6, "fiber_g": 5.3, - "sodium_mg": 1300.9, - "coverage": "partial", + "sodium_mg": 2755.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -30630,13 +31038,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1437.2, + "kcal": 1439.6, "protein_g": 64.8, - "carbs_g": 155.1, - "fat_g": 66.3, - "fiber_g": 30.0, - "sodium_mg": 1289.2, - "coverage": "partial", + "carbs_g": 155.6, + "fat_g": 66.4, + "fiber_g": 30.1, + "sodium_mg": 1289.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -31296,13 +31704,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 248.6, - "protein_g": 6.8, - "carbs_g": 37.8, - "fat_g": 8.3, + "kcal": 313.4, + "protein_g": 11.3, + "carbs_g": 44.1, + "fat_g": 10.4, "fiber_g": 4.2, - "sodium_mg": 1365.9, - "coverage": "partial", + "sodium_mg": 1623.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -31513,13 +31921,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 326.7, - "protein_g": 20.0, - "carbs_g": 37.2, - "fat_g": 10.8, + "kcal": 413.1, + "protein_g": 26.1, + "carbs_g": 45.6, + "fat_g": 13.7, "fiber_g": 7.0, - "sodium_mg": 1308.2, - "coverage": "partial", + "sodium_mg": 1651.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -31742,13 +32150,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 410.5, - "protein_g": 9.5, - "carbs_g": 44.3, - "fat_g": 21.9, + "kcal": 626.5, + "protein_g": 24.6, + "carbs_g": 65.5, + "fat_g": 29.1, "fiber_g": 5.5, - "sodium_mg": 1405.7, - "coverage": "partial", + "sodium_mg": 2263.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -33750,13 +34158,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 747.1, - "protein_g": 52.0, - "carbs_g": 64.1, - "fat_g": 32.0, - "fiber_g": 5.8, - "sodium_mg": 2012.4, - "coverage": "partial", + "kcal": 765.0, + "protein_g": 52.3, + "carbs_g": 68.8, + "fat_g": 32.1, + "fiber_g": 6.1, + "sodium_mg": 2014.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -34608,12 +35016,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 997.3, - "protein_g": 52.2, - "carbs_g": 123.9, + "kcal": 999.7, + "protein_g": 52.3, + "carbs_g": 124.4, "fat_g": 35.2, - "fiber_g": 25.0, - "sodium_mg": 1092.9, + "fiber_g": 25.1, + "sodium_mg": 1093.1, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -34803,13 +35211,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 162.5, - "protein_g": 1.1, - "carbs_g": 9.0, - "fat_g": 14.1, - "fiber_g": 1.8, - "sodium_mg": 895.7, - "coverage": "partial", + "kcal": 436.1, + "protein_g": 19.0, + "carbs_g": 57.9, + "fat_g": 15.3, + "fiber_g": 17.3, + "sodium_mg": 2351.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -35023,13 +35431,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 609.9, - "protein_g": 24.2, - "carbs_g": 67.9, - "fat_g": 28.8, + "kcal": 631.5, + "protein_g": 25.0, + "carbs_g": 71.6, + "fat_g": 29.1, "fiber_g": 16.2, - "sodium_mg": 1428.5, - "coverage": "partial", + "sodium_mg": 2519.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -35648,12 +36056,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 713.9, - "protein_g": 24.1, - "carbs_g": 84.8, + "kcal": 716.3, + "protein_g": 24.2, + "carbs_g": 85.3, "fat_g": 32.3, - "fiber_g": 20.8, - "sodium_mg": 1637.1, + "fiber_g": 21.0, + "sodium_mg": 1637.3, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -35851,13 +36259,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 466.0, - "protein_g": 22.2, - "carbs_g": 17.3, + "kcal": 467.3, + "protein_g": 22.3, + "carbs_g": 17.6, "fat_g": 36.1, - "fiber_g": 8.2, - "sodium_mg": 815.9, - "coverage": "partial", + "fiber_g": 8.3, + "sodium_mg": 816.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -36062,13 +36470,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 590.4, - "protein_g": 22.9, - "carbs_g": 71.7, - "fat_g": 27.4, + "kcal": 604.8, + "protein_g": 23.5, + "carbs_g": 74.2, + "fat_g": 27.5, "fiber_g": 27.4, - "sodium_mg": 955.1, - "coverage": "partial", + "sodium_mg": 1682.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -36282,13 +36690,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 831.3, - "protein_g": 66.5, - "carbs_g": 94.2, - "fat_g": 21.4, + "kcal": 960.9, + "protein_g": 75.5, + "carbs_g": 106.9, + "fat_g": 25.7, "fiber_g": 23.2, - "sodium_mg": 1075.6, - "coverage": "partial", + "sodium_mg": 1590.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -37072,13 +37480,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1105.9, - "protein_g": 75.2, - "carbs_g": 82.1, - "fat_g": 55.1, + "kcal": 1192.3, + "protein_g": 81.3, + "carbs_g": 90.6, + "fat_g": 58.0, "fiber_g": 16.3, - "sodium_mg": 1463.4, - "coverage": "partial", + "sodium_mg": 1806.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -37286,13 +37694,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1081.8, - "protein_g": 51.4, - "carbs_g": 162.0, - "fat_g": 29.4, + "kcal": 1103.4, + "protein_g": 52.2, + "carbs_g": 165.7, + "fat_g": 29.6, "fiber_g": 32.4, - "sodium_mg": 944.0, - "coverage": "partial", + "sodium_mg": 2034.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -37507,12 +37915,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1104.4, - "protein_g": 54.2, - "carbs_g": 163.6, - "fat_g": 30.8, + "kcal": 1126.0, + "protein_g": 55.0, + "carbs_g": 167.2, + "fat_g": 31.1, "fiber_g": 36.4, - "sodium_mg": 1006.3, + "sodium_mg": 2097.1, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -37868,13 +38276,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 627.1, - "protein_g": 49.8, - "carbs_g": 29.3, + "kcal": 639.1, + "protein_g": 51.9, + "carbs_g": 30.4, "fat_g": 37.4, - "fiber_g": 5.0, - "sodium_mg": 236.9, - "coverage": "partial", + "fiber_g": 5.2, + "sodium_mg": 1354.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -38298,13 +38706,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 798.2, - "protein_g": 56.9, - "carbs_g": 39.9, - "fat_g": 46.8, + "kcal": 906.2, + "protein_g": 64.5, + "carbs_g": 50.5, + "fat_g": 50.4, "fiber_g": 4.6, - "sodium_mg": 1763.3, - "coverage": "partial", + "sodium_mg": 2192.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -38504,13 +38912,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 768.8, - "protein_g": 54.2, - "carbs_g": 52.1, - "fat_g": 38.4, + "kcal": 833.6, + "protein_g": 58.7, + "carbs_g": 58.5, + "fat_g": 40.5, "fiber_g": 8.7, - "sodium_mg": 1307.2, - "coverage": "partial", + "sodium_mg": 1564.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -38712,13 +39120,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1202.1, - "protein_g": 50.8, - "carbs_g": 176.1, - "fat_g": 35.9, + "kcal": 1223.7, + "protein_g": 51.6, + "carbs_g": 179.8, + "fat_g": 36.1, "fiber_g": 29.5, - "sodium_mg": 1265.4, - "coverage": "partial", + "sodium_mg": 2356.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -39300,13 +39708,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 358.1, - "protein_g": 12.7, - "carbs_g": 37.9, + "kcal": 362.9, + "protein_g": 13.5, + "carbs_g": 38.3, "fat_g": 22.0, - "fiber_g": 8.7, - "sodium_mg": 107.2, - "coverage": "partial", + "fiber_g": 8.8, + "sodium_mg": 554.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -39716,13 +40124,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 650.5, - "protein_g": 48.1, - "carbs_g": 29.5, - "fat_g": 38.7, + "kcal": 715.3, + "protein_g": 52.7, + "carbs_g": 35.9, + "fat_g": 40.8, "fiber_g": 5.6, - "sodium_mg": 729.9, - "coverage": "partial", + "sodium_mg": 987.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -40191,13 +40599,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 861.0, - "protein_g": 61.8, - "carbs_g": 72.9, - "fat_g": 38.6, + "kcal": 925.8, + "protein_g": 66.4, + "carbs_g": 79.2, + "fat_g": 40.8, "fiber_g": 26.1, - "sodium_mg": 1581.9, - "coverage": "partial", + "sodium_mg": 1839.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -40838,12 +41246,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 522.1, - "protein_g": 35.5, - "carbs_g": 25.9, + "kcal": 526.9, + "protein_g": 36.4, + "carbs_g": 26.3, "fat_g": 32.3, "fiber_g": 5.4, - "sodium_mg": 157.3, + "sodium_mg": 604.2, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -41451,13 +41859,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 585.2, - "protein_g": 25.6, - "carbs_g": 75.7, - "fat_g": 22.4, + "kcal": 714.8, + "protein_g": 34.6, + "carbs_g": 88.4, + "fat_g": 26.7, "fiber_g": 19.9, - "sodium_mg": 1481.2, - "coverage": "partial", + "sodium_mg": 1996.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -41643,13 +42051,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 348.9, - "protein_g": 26.2, - "carbs_g": 21.6, + "kcal": 353.7, + "protein_g": 27.0, + "carbs_g": 22.1, "fat_g": 16.9, - "fiber_g": 1.5, - "sodium_mg": 882.6, - "coverage": "partial", + "fiber_g": 1.6, + "sodium_mg": 1329.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -41856,13 +42264,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 446.6, - "protein_g": 49.8, - "carbs_g": 31.0, + "kcal": 453.8, + "protein_g": 51.1, + "carbs_g": 31.6, "fat_g": 15.6, - "fiber_g": 7.0, - "sodium_mg": 188.4, - "coverage": "partial", + "fiber_g": 7.1, + "sodium_mg": 858.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -42071,12 +42479,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 780.1, - "protein_g": 23.5, - "carbs_g": 114.5, + "kcal": 787.3, + "protein_g": 24.8, + "carbs_g": 115.2, "fat_g": 26.8, - "fiber_g": 6.9, - "sodium_mg": 618.7, + "fiber_g": 7.0, + "sodium_mg": 1289.1, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -42285,13 +42693,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 484.0, - "protein_g": 31.7, - "carbs_g": 49.7, - "fat_g": 18.6, + "kcal": 570.4, + "protein_g": 37.7, + "carbs_g": 58.2, + "fat_g": 21.4, "fiber_g": 8.9, - "sodium_mg": 996.9, - "coverage": "partial", + "sodium_mg": 1340.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -42682,13 +43090,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 963.1, - "protein_g": 42.7, - "carbs_g": 134.9, + "kcal": 972.7, + "protein_g": 44.4, + "carbs_g": 135.8, "fat_g": 32.8, - "fiber_g": 27.7, - "sodium_mg": 735.4, - "coverage": "partial", + "fiber_g": 27.8, + "sodium_mg": 1629.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -42884,13 +43292,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 402.4, - "protein_g": 12.8, - "carbs_g": 44.3, - "fat_g": 22.8, + "kcal": 416.8, + "protein_g": 13.4, + "carbs_g": 46.7, + "fat_g": 23.0, "fiber_g": 7.5, - "sodium_mg": 1007.4, - "coverage": "partial", + "sodium_mg": 1734.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -44939,13 +45347,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 882.2, - "protein_g": 55.9, - "carbs_g": 60.3, - "fat_g": 47.8, + "kcal": 947.0, + "protein_g": 60.5, + "carbs_g": 66.6, + "fat_g": 49.9, "fiber_g": 9.6, - "sodium_mg": 1099.4, - "coverage": "partial", + "sodium_mg": 1356.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -47590,13 +47998,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 564.6, - "protein_g": 43.0, - "carbs_g": 14.5, - "fat_g": 37.6, + "kcal": 607.8, + "protein_g": 46.0, + "carbs_g": 18.7, + "fat_g": 39.1, "fiber_g": 3.8, - "sodium_mg": 740.4, - "coverage": "partial", + "sodium_mg": 912.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -48361,13 +48769,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 170.0, - "protein_g": 5.9, - "carbs_g": 34.7, - "fat_g": 0.9, + "kcal": 213.2, + "protein_g": 9.0, + "carbs_g": 38.9, + "fat_g": 2.4, "fiber_g": 3.6, - "sodium_mg": 219.7, - "coverage": "partial", + "sodium_mg": 391.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -49222,13 +49630,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 553.6, - "protein_g": 34.5, - "carbs_g": 61.6, - "fat_g": 17.8, + "kcal": 685.0, + "protein_g": 43.6, + "carbs_g": 75.3, + "fat_g": 22.1, "fiber_g": 5.4, - "sodium_mg": 228.8, - "coverage": "partial", + "sodium_mg": 1104.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -49370,13 +49778,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 626.6, - "protein_g": 27.3, - "carbs_g": 96.7, - "fat_g": 16.7, + "kcal": 648.2, + "protein_g": 28.1, + "carbs_g": 100.4, + "fat_g": 17.0, "fiber_g": 16.0, - "sodium_mg": 21.7, - "coverage": "partial", + "sodium_mg": 1112.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -49846,13 +50254,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 667.5, - "protein_g": 23.0, - "carbs_g": 62.3, - "fat_g": 37.8, + "kcal": 681.9, + "protein_g": 23.5, + "carbs_g": 64.8, + "fat_g": 38.0, "fiber_g": 15.7, - "sodium_mg": 536.4, - "coverage": "partial", + "sodium_mg": 1263.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -50133,13 +50541,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 162.4, - "protein_g": 9.5, - "carbs_g": 15.0, - "fat_g": 7.8, - "fiber_g": 3.4, - "sodium_mg": 397.3, - "coverage": "partial", + "kcal": 319.4, + "protein_g": 15.3, + "carbs_g": 45.7, + "fat_g": 8.7, + "fiber_g": 5.2, + "sodium_mg": 629.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -50296,13 +50704,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 284.2, - "protein_g": 25.7, - "carbs_g": 8.4, - "fat_g": 17.2, - "fiber_g": 1.9, - "sodium_mg": 425.8, - "coverage": "partial", + "kcal": 289.8, + "protein_g": 25.9, + "carbs_g": 9.6, + "fat_g": 17.3, + "fiber_g": 2.2, + "sodium_mg": 426.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -51169,12 +51577,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 54.6, - "protein_g": 6.5, - "carbs_g": 4.5, + "kcal": 57.9, + "protein_g": 6.6, + "carbs_g": 5.2, "fat_g": 1.4, - "fiber_g": 0.4, - "sodium_mg": 21.9, + "fiber_g": 0.5, + "sodium_mg": 22.2, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -51336,12 +51744,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 316.0, + "kcal": 317.7, "protein_g": 29.1, - "carbs_g": 25.7, + "carbs_g": 26.1, "fat_g": 10.0, "fiber_g": 1.9, - "sodium_mg": 344.0, + "sodium_mg": 344.1, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -51482,12 +51890,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 230.5, - "protein_g": 6.9, - "carbs_g": 16.2, + "kcal": 232.2, + "protein_g": 7.0, + "carbs_g": 16.6, "fat_g": 17.3, - "fiber_g": 0.0, - "sodium_mg": 85.2, + "fiber_g": 0.1, + "sodium_mg": 85.4, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -51637,12 +52045,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 357.8, - "protein_g": 6.5, - "carbs_g": 37.6, + "kcal": 360.1, + "protein_g": 6.6, + "carbs_g": 38.1, "fat_g": 21.8, - "fiber_g": 6.7, - "sodium_mg": 56.9, + "fiber_g": 6.8, + "sodium_mg": 57.1, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -51789,13 +52197,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 432.0, - "protein_g": 4.7, - "carbs_g": 15.2, - "fat_g": 43.1, - "fiber_g": 5.1, - "sodium_mg": 28.6, - "coverage": "partial", + "kcal": 442.1, + "protein_g": 5.0, + "carbs_g": 17.3, + "fat_g": 43.2, + "fiber_g": 5.5, + "sodium_mg": 29.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -51943,13 +52351,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 214.2, - "protein_g": 20.6, - "carbs_g": 24.9, - "fat_g": 2.9, + "kcal": 387.0, + "protein_g": 32.7, + "carbs_g": 41.9, + "fat_g": 8.6, "fiber_g": 1.4, - "sodium_mg": 933.7, - "coverage": "partial", + "sodium_mg": 1620.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -52816,13 +53224,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 58.0, - "protein_g": 4.3, - "carbs_g": 7.8, - "fat_g": 1.7, - "fiber_g": 1.6, - "sodium_mg": 75.6, - "coverage": "partial", + "kcal": 229.4, + "protein_g": 10.6, + "carbs_g": 41.0, + "fat_g": 2.8, + "fiber_g": 3.4, + "sodium_mg": 1034.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -53528,13 +53936,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 375.3, - "protein_g": 25.1, - "carbs_g": 66.1, - "fat_g": 3.3, - "fiber_g": 13.9, - "sodium_mg": 43.4, - "coverage": "partial", + "kcal": 377.6, + "protein_g": 25.2, + "carbs_g": 66.6, + "fat_g": 3.4, + "fiber_g": 14.0, + "sodium_mg": 43.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -53930,13 +54338,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 49.7, - "protein_g": 1.1, - "carbs_g": 10.9, - "fat_g": 0.1, + "kcal": 222.5, + "protein_g": 13.2, + "carbs_g": 27.8, + "fat_g": 5.9, "fiber_g": 0.8, - "sodium_mg": 106.8, - "coverage": "partial", + "sodium_mg": 793.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -54457,13 +54865,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 388.4, - "protein_g": 35.5, - "carbs_g": 35.0, - "fat_g": 12.1, + "kcal": 431.6, + "protein_g": 38.5, + "carbs_g": 39.2, + "fat_g": 13.5, "fiber_g": 9.2, - "sodium_mg": 354.5, - "coverage": "partial", + "sodium_mg": 526.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -55434,12 +55842,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 441.5, - "protein_g": 23.9, - "carbs_g": 42.3, + "kcal": 444.9, + "protein_g": 24.0, + "carbs_g": 43.0, "fat_g": 19.3, - "fiber_g": 5.6, - "sodium_mg": 230.4, + "fiber_g": 5.7, + "sodium_mg": 230.7, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -55575,13 +55983,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 308.8, - "protein_g": 15.1, - "carbs_g": 9.3, + "kcal": 311.1, + "protein_g": 15.2, + "carbs_g": 9.8, "fat_g": 24.4, - "fiber_g": 2.9, - "sodium_mg": 157.5, - "coverage": "partial", + "fiber_g": 3.0, + "sodium_mg": 157.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -56907,13 +57315,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 220.1, - "protein_g": 21.2, - "carbs_g": 27.3, - "fat_g": 4.1, + "kcal": 392.9, + "protein_g": 33.3, + "carbs_g": 44.2, + "fat_g": 9.8, "fiber_g": 4.9, - "sodium_mg": 87.1, - "coverage": "partial", + "sodium_mg": 773.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -58069,13 +58477,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 361.1, - "protein_g": 17.5, - "carbs_g": 54.6, - "fat_g": 9.5, + "kcal": 382.7, + "protein_g": 18.3, + "carbs_g": 58.2, + "fat_g": 9.8, "fiber_g": 12.1, - "sodium_mg": 411.8, - "coverage": "partial", + "sodium_mg": 1502.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -58636,12 +59044,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 274.8, - "protein_g": 27.2, - "carbs_g": 3.7, + "kcal": 278.2, + "protein_g": 27.3, + "carbs_g": 4.4, "fat_g": 17.4, - "fiber_g": 0.8, - "sodium_mg": 429.6, + "fiber_g": 1.0, + "sodium_mg": 429.8, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -58777,12 +59185,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 953.2, - "protein_g": 50.7, - "carbs_g": 161.1, - "fat_g": 14.9, - "fiber_g": 31.7, - "sodium_mg": 64.6, + "kcal": 956.5, + "protein_g": 50.8, + "carbs_g": 161.8, + "fat_g": 15.0, + "fiber_g": 31.8, + "sodium_mg": 64.9, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -59051,13 +59459,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 309.3, - "protein_g": 16.0, - "carbs_g": 59.8, - "fat_g": 1.3, - "fiber_g": 9.4, - "sodium_mg": 115.2, - "coverage": "partial", + "kcal": 311.6, + "protein_g": 16.1, + "carbs_g": 60.3, + "fat_g": 1.4, + "fiber_g": 9.6, + "sodium_mg": 115.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -59590,13 +59998,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 364.8, - "protein_g": 23.5, - "carbs_g": 66.1, - "fat_g": 2.4, + "kcal": 393.6, + "protein_g": 24.6, + "carbs_g": 71.0, + "fat_g": 2.8, "fiber_g": 12.0, - "sodium_mg": 29.6, - "coverage": "partial", + "sodium_mg": 1484.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -60369,13 +60777,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 88.7, - "protein_g": 6.4, - "carbs_g": 4.5, - "fat_g": 4.8, + "kcal": 218.3, + "protein_g": 15.5, + "carbs_g": 17.2, + "fat_g": 9.1, "fiber_g": 0.2, - "sodium_mg": 72.3, - "coverage": "partial", + "sodium_mg": 587.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -60632,13 +61040,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 397.0, - "protein_g": 31.9, - "carbs_g": 18.4, - "fat_g": 21.2, + "kcal": 440.2, + "protein_g": 34.9, + "carbs_g": 22.7, + "fat_g": 22.6, "fiber_g": 2.6, - "sodium_mg": 742.7, - "coverage": "partial", + "sodium_mg": 914.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -60902,13 +61310,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 170.2, - "protein_g": 19.7, - "carbs_g": 15.4, - "fat_g": 2.8, + "kcal": 343.0, + "protein_g": 31.8, + "carbs_g": 32.4, + "fat_g": 8.6, "fiber_g": 2.1, - "sodium_mg": 211.8, - "coverage": "partial", + "sodium_mg": 898.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -62023,13 +62431,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 210.0, - "protein_g": 23.6, - "carbs_g": 22.2, - "fat_g": 3.1, - "fiber_g": 3.2, - "sodium_mg": 923.5, - "coverage": "partial", + "kcal": 213.4, + "protein_g": 23.7, + "carbs_g": 22.9, + "fat_g": 3.2, + "fiber_g": 3.3, + "sodium_mg": 923.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -62308,13 +62716,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 379.2, - "protein_g": 30.2, - "carbs_g": 26.3, + "kcal": 382.6, + "protein_g": 30.3, + "carbs_g": 27.0, "fat_g": 20.4, - "fiber_g": 2.7, - "sodium_mg": 835.4, - "coverage": "partial", + "fiber_g": 2.8, + "sodium_mg": 835.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -62452,12 +62860,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 227.1, - "protein_g": 20.0, - "carbs_g": 5.7, - "fat_g": 13.8, - "fiber_g": 1.4, - "sodium_mg": 78.3, + "kcal": 230.5, + "protein_g": 20.1, + "carbs_g": 6.4, + "fat_g": 13.9, + "fiber_g": 1.6, + "sodium_mg": 78.6, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -62577,13 +62985,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 416.0, + "kcal": 418.3, "protein_g": 24.3, - "carbs_g": 62.7, - "fat_g": 9.3, - "fiber_g": 11.6, - "sodium_mg": 34.8, - "coverage": "partial", + "carbs_g": 63.2, + "fat_g": 9.4, + "fiber_g": 11.8, + "sodium_mg": 35.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -63273,13 +63681,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 389.9, - "protein_g": 29.1, - "carbs_g": 29.8, - "fat_g": 17.2, + "kcal": 476.3, + "protein_g": 35.1, + "carbs_g": 38.2, + "fat_g": 20.1, "fiber_g": 3.9, - "sodium_mg": 635.3, - "coverage": "partial", + "sodium_mg": 978.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -64395,13 +64803,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 233.0, - "protein_g": 22.0, - "carbs_g": 28.4, - "fat_g": 4.3, + "kcal": 362.6, + "protein_g": 31.0, + "carbs_g": 41.1, + "fat_g": 8.7, "fiber_g": 5.2, - "sodium_mg": 91.2, - "coverage": "partial", + "sodium_mg": 606.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -66241,13 +66649,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 304.4, - "protein_g": 21.6, - "carbs_g": 45.4, - "fat_g": 3.0, - "fiber_g": 1.9, - "sodium_mg": 540.5, - "coverage": "partial", + "kcal": 480.6, + "protein_g": 33.7, + "carbs_g": 63.0, + "fat_g": 8.8, + "fiber_g": 2.0, + "sodium_mg": 1227.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -66536,12 +66944,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 578.8, - "protein_g": 43.7, - "carbs_g": 80.4, - "fat_g": 10.2, - "fiber_g": 16.1, - "sodium_mg": 99.0, + "kcal": 582.1, + "protein_g": 43.8, + "carbs_g": 81.1, + "fat_g": 10.3, + "fiber_g": 16.2, + "sodium_mg": 99.3, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -67759,13 +68167,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 423.7, - "protein_g": 29.3, - "carbs_g": 40.9, - "fat_g": 17.2, + "kcal": 553.3, + "protein_g": 38.4, + "carbs_g": 53.6, + "fat_g": 21.6, "fiber_g": 7.0, - "sodium_mg": 479.8, - "coverage": "partial", + "sodium_mg": 994.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -68010,13 +68418,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 25.3, - "protein_g": 1.2, - "carbs_g": 5.1, + "kcal": 27.7, + "protein_g": 1.3, + "carbs_g": 5.6, "fat_g": 0.5, - "fiber_g": 1.5, - "sodium_mg": 7.7, - "coverage": "partial", + "fiber_g": 1.7, + "sodium_mg": 7.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -69410,13 +69818,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 228.5, - "protein_g": 21.4, - "carbs_g": 30.4, - "fat_g": 4.1, + "kcal": 401.3, + "protein_g": 33.5, + "carbs_g": 47.3, + "fat_g": 9.9, "fiber_g": 5.6, - "sodium_mg": 87.7, - "coverage": "partial", + "sodium_mg": 774.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -69954,13 +70362,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 301.8, - "protein_g": 24.1, - "carbs_g": 19.0, - "fat_g": 13.9, + "kcal": 474.6, + "protein_g": 36.2, + "carbs_g": 35.9, + "fat_g": 19.6, "fiber_g": 2.0, - "sodium_mg": 258.6, - "coverage": "partial", + "sodium_mg": 945.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -70233,13 +70641,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 72.5, - "protein_g": 6.3, - "carbs_g": 0.6, - "fat_g": 4.8, + "kcal": 203.7, + "protein_g": 15.5, + "carbs_g": 13.6, + "fat_g": 9.1, "fiber_g": 0.1, - "sodium_mg": 71.5, - "coverage": "partial", + "sodium_mg": 586.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -70755,13 +71163,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 59.4, - "protein_g": 3.5, - "carbs_g": 11.8, + "kcal": 61.7, + "protein_g": 3.6, + "carbs_g": 12.3, "fat_g": 0.5, - "fiber_g": 4.8, - "sodium_mg": 22.4, - "coverage": "partial", + "fiber_g": 5.0, + "sodium_mg": 22.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -72021,13 +72429,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 93.2, - "protein_g": 12.4, - "carbs_g": 5.3, + "kcal": 97.9, + "protein_g": 12.5, + "carbs_g": 6.3, "fat_g": 2.6, - "fiber_g": 0.1, - "sodium_mg": 43.3, - "coverage": "partial", + "fiber_g": 0.4, + "sodium_mg": 43.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -72835,13 +73243,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 203.2, + "kcal": 206.5, "protein_g": 23.0, - "carbs_g": 21.0, + "carbs_g": 21.7, "fat_g": 3.1, - "fiber_g": 3.1, - "sodium_mg": 699.6, - "coverage": "partial", + "fiber_g": 3.2, + "sodium_mg": 699.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -73103,12 +73511,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 305.8, + "kcal": 309.1, "protein_g": 21.0, - "carbs_g": 17.9, + "carbs_g": 18.6, "fat_g": 17.1, - "fiber_g": 2.0, - "sodium_mg": 232.0, + "fiber_g": 2.2, + "sodium_mg": 232.3, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -74765,13 +75173,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 298.3, - "protein_g": 16.6, - "carbs_g": 44.2, - "fat_g": 6.0, + "kcal": 329.0, + "protein_g": 21.8, + "carbs_g": 45.3, + "fat_g": 6.4, "fiber_g": 3.2, - "sodium_mg": 984.8, - "coverage": "partial", + "sodium_mg": 999.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -77013,13 +77421,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 952.2, - "protein_g": 39.7, - "carbs_g": 112.7, + "kcal": 954.9, + "protein_g": 39.8, + "carbs_g": 113.3, "fat_g": 41.4, "fiber_g": 14.4, - "sodium_mg": 2101.9, - "coverage": "partial", + "sodium_mg": 2247.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -77283,12 +77691,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 81.7, - "protein_g": 7.6, - "carbs_g": 3.4, - "fat_g": 5.0, - "fiber_g": 0.6, - "sodium_mg": 599.5, + "kcal": 227.8, + "protein_g": 12.4, + "carbs_g": 30.1, + "fat_g": 7.2, + "fiber_g": 1.9, + "sodium_mg": 851.2, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -77986,13 +78394,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 317.4, - "protein_g": 22.4, - "carbs_g": 14.6, - "fat_g": 21.3, - "fiber_g": 1.4, - "sodium_mg": 601.1, - "coverage": "partial", + "kcal": 326.4, + "protein_g": 22.7, + "carbs_g": 16.7, + "fat_g": 21.4, + "fiber_g": 2.2, + "sodium_mg": 611.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -78984,12 +79392,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 297.2, - "protein_g": 32.8, - "carbs_g": 10.8, - "fat_g": 13.9, - "fiber_g": 1.9, - "sodium_mg": 587.0, + "kcal": 303.6, + "protein_g": 33.1, + "carbs_g": 12.2, + "fat_g": 14.0, + "fiber_g": 2.5, + "sodium_mg": 588.8, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -79502,13 +79910,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 367.9, + "kcal": 370.0, "protein_g": 40.5, - "carbs_g": 12.9, + "carbs_g": 13.3, "fat_g": 18.0, "fiber_g": 2.7, - "sodium_mg": 1163.9, - "coverage": "partial", + "sodium_mg": 1273.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -79959,12 +80367,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 267.6, - "protein_g": 32.1, - "carbs_g": 7.5, - "fat_g": 11.4, - "fiber_g": 0.1, - "sodium_mg": 479.7, + "kcal": 288.8, + "protein_g": 32.4, + "carbs_g": 11.8, + "fat_g": 11.8, + "fiber_g": 0.4, + "sodium_mg": 634.8, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -80885,12 +81293,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 406.6, - "protein_g": 35.3, - "carbs_g": 14.7, - "fat_g": 23.0, - "fiber_g": 0.7, - "sodium_mg": 1248.0, + "kcal": 411.5, + "protein_g": 35.4, + "carbs_g": 15.8, + "fat_g": 23.1, + "fiber_g": 1.1, + "sodium_mg": 1249.4, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -81034,13 +81442,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 460.3, - "protein_g": 47.0, - "carbs_g": 3.1, - "fat_g": 27.7, - "fiber_g": 0.6, - "sodium_mg": 949.2, - "coverage": "partial", + "kcal": 465.7, + "protein_g": 47.2, + "carbs_g": 4.2, + "fat_g": 27.8, + "fiber_g": 1.1, + "sodium_mg": 950.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -81582,13 +81990,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 96.9, - "protein_g": 2.8, - "carbs_g": 13.0, - "fat_g": 5.1, - "fiber_g": 1.7, + "kcal": 151.8, + "protein_g": 3.7, + "carbs_g": 25.0, + "fat_g": 5.3, + "fiber_g": 2.0, "sodium_mg": 293.2, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -81939,13 +82347,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 328.1, - "protein_g": 23.0, - "carbs_g": 39.3, - "fat_g": 8.7, - "fiber_g": 2.9, - "sodium_mg": 1581.4, - "coverage": "partial", + "kcal": 355.0, + "protein_g": 23.3, + "carbs_g": 46.3, + "fat_g": 8.8, + "fiber_g": 3.5, + "sodium_mg": 1584.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -82469,12 +82877,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 405.0, + "kcal": 407.7, "protein_g": 33.8, - "carbs_g": 35.7, + "carbs_g": 36.2, "fat_g": 13.9, - "fiber_g": 2.0, - "sodium_mg": 906.8, + "fiber_g": 2.1, + "sodium_mg": 1052.6, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -82842,12 +83250,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 475.0, - "protein_g": 9.4, - "carbs_g": 52.2, - "fat_g": 28.0, - "fiber_g": 7.2, - "sodium_mg": 864.4, + "kcal": 489.3, + "protein_g": 9.6, + "carbs_g": 55.9, + "fat_g": 28.1, + "fiber_g": 7.5, + "sodium_mg": 866.1, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -83027,12 +83435,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 408.3, - "protein_g": 25.8, - "carbs_g": 42.9, - "fat_g": 17.1, - "fiber_g": 3.0, - "sodium_mg": 810.2, + "kcal": 420.0, + "protein_g": 26.0, + "carbs_g": 45.3, + "fat_g": 17.2, + "fiber_g": 3.2, + "sodium_mg": 896.3, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -83894,13 +84302,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 372.9, - "protein_g": 33.9, - "carbs_g": 46.7, - "fat_g": 4.7, - "fiber_g": 3.2, - "sodium_mg": 1139.0, - "coverage": "partial", + "kcal": 384.6, + "protein_g": 34.0, + "carbs_g": 49.1, + "fat_g": 4.9, + "fiber_g": 3.3, + "sodium_mg": 1225.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -84036,13 +84444,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 192.7, - "protein_g": 3.4, - "carbs_g": 15.7, - "fat_g": 15.1, + "kcal": 206.2, + "protein_g": 3.9, + "carbs_g": 18.0, + "fat_g": 15.2, "fiber_g": 3.5, - "sodium_mg": 12.7, - "coverage": "partial", + "sodium_mg": 694.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -84220,13 +84628,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 498.8, - "protein_g": 38.3, - "carbs_g": 7.5, + "kcal": 501.2, + "protein_g": 38.4, + "carbs_g": 8.0, "fat_g": 36.6, - "fiber_g": 3.0, - "sodium_mg": 940.5, - "coverage": "partial", + "fiber_g": 3.2, + "sodium_mg": 940.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -84395,12 +84803,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 28.2, + "kcal": 98.4, "protein_g": 1.4, - "carbs_g": 6.2, + "carbs_g": 23.4, "fat_g": 0.1, - "fiber_g": 2.0, - "sodium_mg": 252.5, + "fiber_g": 2.1, + "sodium_mg": 254.5, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -86023,13 +86431,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 193.5, - "protein_g": 17.2, - "carbs_g": 8.9, - "fat_g": 10.9, - "fiber_g": 2.7, - "sodium_mg": 1416.7, - "coverage": "partial", + "kcal": 440.6, + "protein_g": 21.3, + "carbs_g": 63.0, + "fat_g": 11.9, + "fiber_g": 4.6, + "sodium_mg": 1417.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -86581,13 +86989,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 493.7, - "protein_g": 25.4, - "carbs_g": 45.7, + "kcal": 497.6, + "protein_g": 25.5, + "carbs_g": 46.5, "fat_g": 23.8, - "fiber_g": 3.9, - "sodium_mg": 1346.9, - "coverage": "partial", + "fiber_g": 4.2, + "sodium_mg": 1347.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -87166,13 +87574,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 188.8, - "protein_g": 10.5, - "carbs_g": 1.5, - "fat_g": 15.4, - "fiber_g": 0.3, - "sodium_mg": 607.0, - "coverage": "partial", + "kcal": 460.8, + "protein_g": 21.2, + "carbs_g": 53.4, + "fat_g": 17.8, + "fiber_g": 2.5, + "sodium_mg": 1209.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -87683,13 +88091,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 811.1, - "protein_g": 42.9, - "carbs_g": 77.1, - "fat_g": 36.8, - "fiber_g": 2.7, - "sodium_mg": 587.0, - "coverage": "partial", + "kcal": 822.6, + "protein_g": 43.4, + "carbs_g": 79.6, + "fat_g": 37.2, + "fiber_g": 3.7, + "sodium_mg": 588.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -87833,13 +88241,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 309.4, - "protein_g": 14.2, - "carbs_g": 40.7, + "kcal": 310.7, + "protein_g": 14.3, + "carbs_g": 41.1, "fat_g": 11.2, - "fiber_g": 7.9, + "fiber_g": 8.0, "sodium_mg": 16.7, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -88157,13 +88565,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 308.6, - "protein_g": 36.7, - "carbs_g": 8.7, - "fat_g": 13.4, - "fiber_g": 0.4, - "sodium_mg": 150.6, - "coverage": "partial", + "kcal": 314.7, + "protein_g": 36.9, + "carbs_g": 10.1, + "fat_g": 13.6, + "fiber_g": 1.0, + "sodium_mg": 151.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -88482,13 +88890,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 142.7, + "kcal": 143.7, "protein_g": 6.0, - "carbs_g": 19.6, + "carbs_g": 19.9, "fat_g": 6.4, - "fiber_g": 1.8, + "fiber_g": 1.9, "sodium_mg": 34.5, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -88653,13 +89061,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 231.7, + "kcal": 233.8, "protein_g": 6.1, - "carbs_g": 34.7, + "carbs_g": 35.3, "fat_g": 9.2, - "fiber_g": 6.4, - "sodium_mg": 19.9, - "coverage": "partial", + "fiber_g": 6.5, + "sodium_mg": 20.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -88801,13 +89209,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 139.8, - "protein_g": 3.1, - "carbs_g": 10.9, + "kcal": 141.3, + "protein_g": 3.2, + "carbs_g": 11.4, "fat_g": 10.5, "fiber_g": 4.8, - "sodium_mg": 5.3, - "coverage": "partial", + "sodium_mg": 5.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -88928,13 +89336,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 708.8, + "kcal": 710.5, "protein_g": 64.2, - "carbs_g": 2.0, + "carbs_g": 2.5, "fat_g": 47.5, "fiber_g": 0.6, - "sodium_mg": 904.7, - "coverage": "partial", + "sodium_mg": 904.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -89268,13 +89676,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 334.3, - "protein_g": 17.0, - "carbs_g": 20.8, - "fat_g": 21.6, - "fiber_g": 5.1, - "sodium_mg": 373.2, - "coverage": "partial", + "kcal": 339.0, + "protein_g": 17.2, + "carbs_g": 21.7, + "fat_g": 21.8, + "fiber_g": 5.6, + "sodium_mg": 374.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -89455,12 +89863,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 146.9, + "kcal": 148.8, "protein_g": 2.3, - "carbs_g": 10.9, + "carbs_g": 11.5, "fat_g": 11.2, "fiber_g": 2.2, - "sodium_mg": 61.6, + "sodium_mg": 61.7, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -89573,9 +89981,9 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 82.5, + "kcal": 83.4, "protein_g": 0.0, - "carbs_g": 0.0, + "carbs_g": 0.3, "fat_g": 9.3, "fiber_g": 0.0, "sodium_mg": 0.2, @@ -89897,13 +90305,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 257.3, + "kcal": 258.8, "protein_g": 5.6, - "carbs_g": 38.5, + "carbs_g": 39.0, "fat_g": 10.0, "fiber_g": 6.0, - "sodium_mg": 8.7, - "coverage": "partial", + "sodium_mg": 8.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -90193,13 +90601,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 443.8, + "kcal": 444.4, "protein_g": 15.8, - "carbs_g": 60.5, + "carbs_g": 60.7, "fat_g": 15.0, "fiber_g": 2.5, "sodium_mg": 404.5, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -91209,13 +91617,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 191.1, + "kcal": 192.0, "protein_g": 10.9, - "carbs_g": 34.5, + "carbs_g": 34.7, "fat_g": 2.6, - "fiber_g": 5.5, + "fiber_g": 5.6, "sodium_mg": 64.1, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -91356,13 +91764,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 203.4, + "kcal": 204.0, "protein_g": 8.3, - "carbs_g": 20.6, - "fat_g": 10.2, + "carbs_g": 20.8, + "fat_g": 10.3, "fiber_g": 3.2, "sodium_mg": 340.7, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -91522,13 +91930,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 431.4, - "protein_g": 21.0, - "carbs_g": 19.6, - "fat_g": 29.7, - "fiber_g": 1.2, - "sodium_mg": 646.7, - "coverage": "partial", + "kcal": 439.0, + "protein_g": 21.3, + "carbs_g": 21.3, + "fat_g": 30.0, + "fiber_g": 2.0, + "sodium_mg": 648.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -91696,13 +92104,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 580.0, - "protein_g": 27.4, - "carbs_g": 103.7, - "fat_g": 7.8, - "fiber_g": 17.1, - "sodium_mg": 320.2, - "coverage": "partial", + "kcal": 585.7, + "protein_g": 27.7, + "carbs_g": 104.8, + "fat_g": 8.0, + "fiber_g": 17.8, + "sodium_mg": 321.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -92001,12 +92409,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 79.9, - "protein_g": 5.3, - "carbs_g": 9.0, - "fat_g": 3.2, - "fiber_g": 2.5, - "sodium_mg": 49.6, + "kcal": 84.1, + "protein_g": 5.5, + "carbs_g": 9.8, + "fat_g": 3.4, + "fiber_g": 3.0, + "sodium_mg": 50.7, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -92172,13 +92580,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 131.6, - "protein_g": 2.5, - "carbs_g": 12.5, - "fat_g": 9.1, - "fiber_g": 5.1, - "sodium_mg": 11.4, - "coverage": "partial", + "kcal": 134.9, + "protein_g": 2.7, + "carbs_g": 13.2, + "fat_g": 9.3, + "fiber_g": 5.5, + "sodium_mg": 12.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -92329,13 +92737,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 334.5, - "protein_g": 13.2, - "carbs_g": 48.5, + "kcal": 335.7, + "protein_g": 13.3, + "carbs_g": 48.9, "fat_g": 12.2, "fiber_g": 9.3, - "sodium_mg": 297.9, - "coverage": "partial", + "sodium_mg": 298.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -92473,13 +92881,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 168.9, - "protein_g": 6.4, - "carbs_g": 14.9, - "fat_g": 11.4, - "fiber_g": 5.8, - "sodium_mg": 22.0, - "coverage": "partial", + "kcal": 172.4, + "protein_g": 6.5, + "carbs_g": 15.6, + "fat_g": 11.5, + "fiber_g": 6.2, + "sodium_mg": 22.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -93022,10 +93430,10 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 36.4, + "kcal": 108.8, "protein_g": 2.0, "carbs_g": 7.6, - "fat_g": 0.5, + "fat_g": 8.7, "fiber_g": 2.6, "sodium_mg": 25.9, "coverage": "partial", @@ -93179,13 +93587,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 221.5, - "protein_g": 4.4, - "carbs_g": 43.9, - "fat_g": 5.7, - "fiber_g": 3.0, - "sodium_mg": 27.9, - "coverage": "partial", + "kcal": 223.9, + "protein_g": 4.5, + "carbs_g": 44.3, + "fat_g": 5.8, + "fiber_g": 3.2, + "sodium_mg": 28.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -93348,13 +93756,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 344.3, - "protein_g": 6.2, - "carbs_g": 45.2, - "fat_g": 16.7, - "fiber_g": 4.9, - "sodium_mg": 577.4, - "coverage": "partial", + "kcal": 355.3, + "protein_g": 6.7, + "carbs_g": 47.3, + "fat_g": 17.2, + "fiber_g": 6.1, + "sodium_mg": 579.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -93507,13 +93915,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 240.1, - "protein_g": 4.9, - "carbs_g": 52.4, - "fat_g": 0.5, - "fiber_g": 1.4, - "sodium_mg": 4.2, - "coverage": "partial", + "kcal": 306.5, + "protein_g": 7.8, + "carbs_g": 60.1, + "fat_g": 3.3, + "fiber_g": 3.8, + "sodium_mg": 92.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -93816,13 +94224,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 198.4, + "kcal": 258.1, "protein_g": 3.6, "carbs_g": 46.1, - "fat_g": 0.6, + "fat_g": 7.4, "fiber_g": 7.8, "sodium_mg": 35.6, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -93968,13 +94376,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 278.6, + "kcal": 280.6, "protein_g": 6.9, - "carbs_g": 39.4, - "fat_g": 9.9, + "carbs_g": 39.6, + "fat_g": 10.0, "fiber_g": 1.6, "sodium_mg": 71.6, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -94118,13 +94526,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 357.6, + "kcal": 359.3, "protein_g": 5.1, - "carbs_g": 51.5, + "carbs_g": 52.0, "fat_g": 15.7, - "fiber_g": 5.3, - "sodium_mg": 625.0, - "coverage": "partial", + "fiber_g": 5.4, + "sodium_mg": 625.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -94313,12 +94721,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 351.5, - "protein_g": 32.7, - "carbs_g": 7.6, - "fat_g": 21.7, - "fiber_g": 1.6, - "sodium_mg": 898.7, + "kcal": 356.8, + "protein_g": 32.8, + "carbs_g": 9.0, + "fat_g": 21.9, + "fiber_g": 2.0, + "sodium_mg": 900.3, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -94662,12 +95070,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 101.6, - "protein_g": 1.4, + "kcal": 282.9, + "protein_g": 40.7, "carbs_g": 9.1, - "fat_g": 7.4, + "fat_g": 8.9, "fiber_g": 2.9, - "sodium_mg": 6.8, + "sodium_mg": 4398.6, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -94839,13 +95247,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 87.5, - "protein_g": 2.7, + "kcal": 240.1, + "protein_g": 31.5, "carbs_g": 19.0, - "fat_g": 1.0, + "fat_g": 4.2, "fiber_g": 5.3, - "sodium_mg": 9.6, - "coverage": "partial", + "sodium_mg": 124.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -95111,12 +95519,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 164.9, - "protein_g": 2.5, - "carbs_g": 9.0, - "fat_g": 14.6, + "kcal": 176.9, + "protein_g": 3.0, + "carbs_g": 11.0, + "fat_g": 14.8, "fiber_g": 3.0, - "sodium_mg": 13.0, + "sodium_mg": 619.0, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -95291,13 +95699,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 638.2, - "protein_g": 27.2, - "carbs_g": 118.1, + "kcal": 656.1, + "protein_g": 27.5, + "carbs_g": 122.8, "fat_g": 7.2, - "fiber_g": 15.3, - "sodium_mg": 29.0, - "coverage": "partial", + "fiber_g": 15.7, + "sodium_mg": 31.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -95452,13 +95860,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 355.5, + "kcal": 361.5, "protein_g": 21.2, - "carbs_g": 24.6, - "fat_g": 18.9, - "fiber_g": 2.7, - "sodium_mg": 658.8, - "coverage": "partial", + "carbs_g": 25.5, + "fat_g": 19.0, + "fiber_g": 2.9, + "sodium_mg": 660.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -95629,13 +96037,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 352.3, - "protein_g": 5.9, - "carbs_g": 49.9, - "fat_g": 16.0, + "kcal": 370.5, + "protein_g": 8.6, + "carbs_g": 51.6, + "fat_g": 16.1, "fiber_g": 6.8, - "sodium_mg": 534.3, - "coverage": "partial", + "sodium_mg": 811.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -95762,12 +96170,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 280.3, - "protein_g": 2.1, - "carbs_g": 48.8, - "fat_g": 11.0, + "kcal": 284.8, + "protein_g": 2.8, + "carbs_g": 49.0, + "fat_g": 11.2, "fiber_g": 2.6, - "sodium_mg": 6.7, + "sodium_mg": 285.7, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -96390,13 +96798,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 336.4, - "protein_g": 25.6, - "carbs_g": 20.2, - "fat_g": 17.2, - "fiber_g": 5.9, - "sodium_mg": 196.1, - "coverage": "partial", + "kcal": 344.8, + "protein_g": 26.0, + "carbs_g": 21.7, + "fat_g": 17.6, + "fiber_g": 6.9, + "sodium_mg": 282.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -96701,13 +97109,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 218.0, - "protein_g": 26.8, - "carbs_g": 4.3, + "kcal": 221.6, + "protein_g": 26.9, + "carbs_g": 5.1, "fat_g": 9.9, "fiber_g": 1.0, - "sodium_mg": 105.2, - "coverage": "partial", + "sodium_mg": 105.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -97001,13 +97409,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 420.5, - "protein_g": 26.2, - "carbs_g": 33.5, - "fat_g": 20.0, - "fiber_g": 6.8, - "sodium_mg": 171.3, - "coverage": "partial", + "kcal": 427.5, + "protein_g": 26.5, + "carbs_g": 34.7, + "fat_g": 20.4, + "fiber_g": 7.7, + "sodium_mg": 242.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -97505,13 +97913,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 220.9, - "protein_g": 5.3, - "carbs_g": 41.1, - "fat_g": 4.9, - "fiber_g": 4.9, - "sodium_mg": 919.5, - "coverage": "partial", + "kcal": 390.3, + "protein_g": 7.1, + "carbs_g": 58.6, + "fat_g": 15.5, + "fiber_g": 6.2, + "sodium_mg": 1140.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -98622,13 +99030,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 204.7, + "kcal": 205.1, "protein_g": 4.9, "carbs_g": 38.0, "fat_g": 4.7, "fiber_g": 6.4, "sodium_mg": 412.5, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -98967,13 +99375,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 181.0, - "protein_g": 15.5, - "carbs_g": 19.8, - "fat_g": 5.0, + "kcal": 341.0, + "protein_g": 21.5, + "carbs_g": 21.0, + "fat_g": 19.4, "fiber_g": 5.0, - "sodium_mg": 513.4, - "coverage": "partial", + "sodium_mg": 968.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -99284,13 +99692,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 592.9, - "protein_g": 14.2, - "carbs_g": 88.2, - "fat_g": 23.0, + "kcal": 605.9, + "protein_g": 16.2, + "carbs_g": 89.4, + "fat_g": 23.1, "fiber_g": 9.6, - "sodium_mg": 1176.7, - "coverage": "partial", + "sodium_mg": 1374.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -99570,13 +99978,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 49.9, - "protein_g": 2.0, - "carbs_g": 11.3, - "fat_g": 0.5, + "kcal": 81.1, + "protein_g": 6.7, + "carbs_g": 14.2, + "fat_g": 0.7, "fiber_g": 3.7, - "sodium_mg": 38.4, - "coverage": "partial", + "sodium_mg": 513.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -99894,13 +100302,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 755.5, - "protein_g": 43.7, - "carbs_g": 57.3, - "fat_g": 41.1, - "fiber_g": 7.0, - "sodium_mg": 1245.2, - "coverage": "partial", + "kcal": 769.6, + "protein_g": 44.4, + "carbs_g": 60.0, + "fat_g": 41.8, + "fiber_g": 8.8, + "sodium_mg": 1248.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -100065,13 +100473,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 262.6, - "protein_g": 5.8, - "carbs_g": 51.5, - "fat_g": 4.9, - "fiber_g": 6.8, - "sodium_mg": 457.7, - "coverage": "partial", + "kcal": 294.6, + "protein_g": 9.5, + "carbs_g": 55.6, + "fat_g": 5.6, + "fiber_g": 8.2, + "sodium_mg": 777.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -100211,13 +100619,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 57.5, - "protein_g": 2.3, - "carbs_g": 13.0, - "fat_g": 0.5, - "fiber_g": 3.7, - "sodium_mg": 10.5, - "coverage": "partial", + "kcal": 322.0, + "protein_g": 12.3, + "carbs_g": 16.6, + "fat_g": 23.9, + "fiber_g": 4.8, + "sodium_mg": 741.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -100965,13 +101373,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 161.9, - "protein_g": 7.1, - "carbs_g": 25.3, - "fat_g": 3.3, + "kcal": 377.7, + "protein_g": 39.3, + "carbs_g": 25.7, + "fat_g": 11.8, "fiber_g": 1.0, - "sodium_mg": 125.9, - "coverage": "partial", + "sodium_mg": 204.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -101105,13 +101513,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 71.4, - "protein_g": 6.7, - "carbs_g": 12.8, - "fat_g": 0.6, - "fiber_g": 4.5, - "sodium_mg": 835.1, - "coverage": "partial", + "kcal": 214.7, + "protein_g": 10.8, + "carbs_g": 41.0, + "fat_g": 2.2, + "fiber_g": 5.8, + "sodium_mg": 836.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -101229,13 +101637,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 12.0, - "protein_g": 0.3, - "carbs_g": 2.8, - "fat_g": 0.0, - "fiber_g": 0.5, - "sodium_mg": 1.3, - "coverage": "partial", + "kcal": 136.5, + "protein_g": 5.7, + "carbs_g": 17.2, + "fat_g": 5.3, + "fiber_g": 5.0, + "sodium_mg": 166.3, + "coverage": "computed", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -101383,13 +101791,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 321.8, + "kcal": 324.4, "protein_g": 7.6, - "carbs_g": 38.5, - "fat_g": 17.0, - "fiber_g": 6.9, - "sodium_mg": 566.7, - "coverage": "partial", + "carbs_g": 38.8, + "fat_g": 17.2, + "fiber_g": 7.0, + "sodium_mg": 566.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -101992,13 +102400,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 400.0, - "protein_g": 13.5, - "carbs_g": 71.7, - "fat_g": 5.4, + "kcal": 486.4, + "protein_g": 19.6, + "carbs_g": 80.2, + "fat_g": 8.3, "fiber_g": 1.4, - "sodium_mg": 1686.3, - "coverage": "partial", + "sodium_mg": 2029.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -102153,13 +102561,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 181.9, - "protein_g": 8.1, - "carbs_g": 6.9, - "fat_g": 14.3, - "fiber_g": 1.0, - "sodium_mg": 1552.6, - "coverage": "partial", + "kcal": 338.9, + "protein_g": 13.9, + "carbs_g": 37.5, + "fat_g": 15.2, + "fiber_g": 2.8, + "sodium_mg": 1784.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -103258,13 +103666,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 238.2, - "protein_g": 12.5, - "carbs_g": 38.1, - "fat_g": 4.9, + "kcal": 252.6, + "protein_g": 13.1, + "carbs_g": 40.5, + "fat_g": 5.1, "fiber_g": 7.2, - "sodium_mg": 609.8, - "coverage": "partial", + "sodium_mg": 1337.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -103636,13 +104044,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 599.0, - "protein_g": 12.6, - "carbs_g": 103.9, + "kcal": 601.3, + "protein_g": 12.7, + "carbs_g": 104.4, "fat_g": 15.3, - "fiber_g": 7.8, - "sodium_mg": 606.3, - "coverage": "partial", + "fiber_g": 7.9, + "sodium_mg": 606.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -103996,13 +104404,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 817.0, - "protein_g": 41.8, - "carbs_g": 98.2, - "fat_g": 28.0, + "kcal": 845.8, + "protein_g": 43.8, + "carbs_g": 101.0, + "fat_g": 29.0, "fiber_g": 2.8, - "sodium_mg": 1344.2, - "coverage": "partial", + "sodium_mg": 1458.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -105341,13 +105749,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 588.0, + "kcal": 589.9, "protein_g": 20.7, - "carbs_g": 98.3, - "fat_g": 13.3, - "fiber_g": 9.0, - "sodium_mg": 496.0, - "coverage": "partial", + "carbs_g": 98.7, + "fat_g": 13.4, + "fiber_g": 9.1, + "sodium_mg": 496.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { diff --git a/apps/ios/Resources/usda_ingredient_catalog.sqlite b/apps/ios/Resources/usda_ingredient_catalog.sqlite index 4f1cab9c1..17f7ffc1a 100644 Binary files a/apps/ios/Resources/usda_ingredient_catalog.sqlite and b/apps/ios/Resources/usda_ingredient_catalog.sqlite differ diff --git a/apps/ios/Tests/TasteStore/TasteEventStoreTests.swift b/apps/ios/Tests/TasteStore/TasteEventStoreTests.swift index d8b790531..488967ae9 100644 --- a/apps/ios/Tests/TasteStore/TasteEventStoreTests.swift +++ b/apps/ios/Tests/TasteStore/TasteEventStoreTests.swift @@ -46,7 +46,7 @@ final class TasteEventStoreTests: XCTestCase { at: Date = Date(timeIntervalSince1970: 1_000_000), recipeId: String = "1", rating: Int? = 2 - ) -> TasteEvent { + ) -> TasteEventRecord { TasteEventRecord( id: id, at: at, diff --git a/data/ingredients/unresolved-candidates.json b/data/ingredients/unresolved-candidates.json new file mode 100644 index 000000000..e763afa51 --- /dev/null +++ b/data/ingredients/unresolved-candidates.json @@ -0,0 +1,243 @@ +{ + "note": "Vocabulary keys with no per-100g row. Each stays unresolved unless a cited FDC row is the same product; candidates list the FDC rows considered and rejected during the 2026-10 nutrition-completion pass (see UNRESOLVED_CANDIDATES in data/recipes/tools/build_vocab.py).", + "keys": { + "ackee": { + "candidates": [], + "note": "no FDC row under any searched name (ackee, blighia); Jamaican specialty" + }, + "artichoke_hearts": { + "candidates": [ + 169205, + 168387, + 2709766 + ], + "note": "raw/frozen globe artichoke rows are the edible portion without the brine the drained jarred hearts imply; a raw row would understate sodium" + }, + "beef_meatballs": { + "candidates": [ + 2706467, + 171638, + 2706580 + ], + "note": "the FNDDS row carries sauce and the SR row is seasoned Italian-style frozen; neither is plain beef meatballs" + }, + "beef_vegetable_stock": { + "candidates": [ + 172883, + 171180 + ], + "note": "surface is 'beef or vegetable stock'; both single-species rows are different products" + }, + "black_bean_paste": { + "candidates": [], + "note": "fermented black-soybean paste; no FDC row (searched tausi, douchi, black bean paste)" + }, + "black_vinegar": { + "candidates": [ + 172241 + ], + "note": "balsamic is grape must, a different product; no Chinese black (Chinkiang) vinegar row" + }, + "callaloo_greens": { + "candidates": [], + "note": "callaloo greens are species-ambiguous (taro/amaranth/dasheen); no single-product FDC row" + }, + "chicharrones": { + "candidates": [], + "note": "no pork-rind row in FNDDS 2024 or SR Legacy" + }, + "chilli_sauce": { + "candidates": [ + 2709735, + 171186 + ], + "note": "surface is 'sweet chili sauce'; the tomato chili sauce and hot chile sauce rows are different products" + }, + "dashi": { + "candidates": [], + "note": "kombu + bonito infusion; no FDC row" + }, + "doenjang": { + "candidates": [], + "note": "Korean fermented soybean paste; no FDC row (miso is a different product)" + }, + "doubanjiang": { + "candidates": [], + "note": "fermented chili-bean paste; no FDC row" + }, + "egusi_seeds": { + "candidates": [], + "note": "melon/cucurbit seed kernels; no FDC row (searched melon seed, egusi)" + }, + "farro": { + "candidates": [ + 2710828 + ], + "note": "Foundation Foods 'Farro, pearled, dry, raw' carries no energy measurement in kcal in the bulk CSVs; pinning it would emit kcal 0.0" + }, + "five_spice_powder": { + "candidates": [], + "note": "Chinese spice blend; no FDC row" + }, + "flattened_rice": { + "candidates": [], + "note": "poha; no FDC row" + }, + "galangal": { + "candidates": [], + "note": "no FDC row (ginger is a different plant)" + }, + "garam_masala": { + "candidates": [], + "note": "North Indian spice blend; no FDC row" + }, + "gochugaru": { + "candidates": [ + 170932, + 168570 + ], + "note": "Korean coarse chili flakes; the ground cayenne spice and whole sun-dried chile rows are different products" + }, + "gochujang": { + "candidates": [], + "note": "Korean chili-soybean paste; no FDC row" + }, + "green_curry_paste": { + "candidates": [ + 2710178 + ], + "note": "FNDDS 'Curry sauce' is a different (British-style) product" + }, + "green_papaya": { + "candidates": [ + 2709246, + 2709247 + ], + "note": "the raw/canned papaya rows are the ripe fruit; unripe green papaya differs materially in sugar" + }, + "halloumi": { + "candidates": [], + "note": "no halloumi row; feta and mozzarella are different products" + }, + "harissa": { + "candidates": [], + "note": "no harissa row in FNDDS 2024 or SR Legacy" + }, + "jerk_seasoning": { + "candidates": [], + "note": "Jamaican spice blend; no FDC row" + }, + "kaffir_lime": { + "candidates": [], + "note": "makrut lime leaves; no FDC row" + }, + "labneh": { + "candidates": [ + 2705415 + ], + "note": "Greek yogurt rows are less-strained and materially lower in energy; not the same product" + }, + "massaman_curry_paste": { + "candidates": [ + 2710178 + ], + "note": "FNDDS 'Curry sauce' is a different product" + }, + "mirin": { + "candidates": [ + 167723 + ], + "note": "the sake row is unsweetened; mirin's sugar content differs materially" + }, + "nduja": { + "candidates": [], + "note": "spreadable spicy cured pork; no FDC row" + }, + "pomegranate_molasses": { + "candidates": [ + 168820 + ], + "note": "cane molasses is a different product; no pomegranate-reduction row" + }, + "potato_starch": { + "candidates": [], + "note": "no standalone potato-starch row (hits are composite breads)" + }, + "preserved_lemon": { + "candidates": [], + "note": "salt-pickled lemons; no FDC row" + }, + "ras_el_hanout": { + "candidates": [], + "note": "North African spice blend; no FDC row" + }, + "rice_powder": { + "candidates": [ + 169714, + 168898 + ], + "note": "surface is 'toasted rice powder' (khao khua); the untoasted rice flour rows are a different product" + }, + "rice_vinegar": { + "candidates": [ + 2709351 + ], + "note": "the FNDDS generic 'Vinegar' row is not the rice-vinegar product; no rice vinegar row" + }, + "scotch_bonnet": { + "candidates": [ + 170106 + ], + "note": "generic hot red chili row; the named variety is not represented" + }, + "sichuan_peppercorns": { + "candidates": [], + "note": "no FDC row (searched sichuan, szechuan pepper)" + }, + "spring_roll_wrappers": { + "candidates": [ + 172802 + ], + "note": "wonton wrappers contain egg; wheat-only spring roll wrappers are a different product" + }, + "star_anise": { + "candidates": [ + 171316 + ], + "note": "anise seed is a different plant (shared aroma compound only)" + }, + "stock": { + "candidates": [ + 172883, + 172884, + 172885 + ], + "note": "all FDC stock rows are species-specific (beef/chicken/fish); the surface names no species" + }, + "sumac": { + "candidates": [], + "note": "no FDC row" + }, + "sweet_potato_noodles": { + "candidates": [ + 174258, + 2708355 + ], + "note": "the cellophane rows are mung-bean starch, not sweet-potato starch (dangmyeon)" + }, + "thai_chilies": { + "candidates": [ + 170106 + ], + "note": "generic hot red chili row; the named variety is not represented" + }, + "umeboshi": { + "candidates": [], + "note": "pickled ume; no FDC row" + }, + "zaatar": { + "candidates": [], + "note": "Middle Eastern herb blend; no FDC row" + } + } +} diff --git a/data/ingredients/vocabulary.json b/data/ingredients/vocabulary.json index e386b9d52..f9c1abf38 100644 --- a/data/ingredients/vocabulary.json +++ b/data/ingredients/vocabulary.json @@ -78,15 +78,23 @@ { "key": "allspice", "display_name": "Allspice", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 171315, + "fdc_ref": "Spices, allspice, ground (SR Legacy) - ground is the standard spice-aisle form", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 263.0, + "protein_g": 6.09, + "carbs_g": 72.12, + "fat_g": 8.69, + "fiber_g": 21.6, + "sugar_g": 0.0, + "sodium_mg": 77.0 + }, "aliases": [ "allspice" ], @@ -233,15 +241,23 @@ { "key": "apple_cider_vinegar", "display_name": "Apple cider vinegar", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 173469, + "fdc_ref": "Vinegar, cider (SR Legacy) - cider vinegar is apple cider vinegar", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 21.0, + "protein_g": 0.0, + "carbs_g": 0.93, + "fat_g": 0.0, + "fiber_g": 0.0, + "sugar_g": 0.4, + "sodium_mg": 5.0 + }, "aliases": [ "apple cider vinegar", "cider vinegar" @@ -456,15 +472,23 @@ { "key": "baguette", "display_name": "Baguette", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 2707610, + "fdc_ref": "Bread, French or Vienna (FNDDS) - a baguette is the French bread loaf", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 272.0, + "protein_g": 10.75, + "carbs_g": 51.88, + "fat_g": 2.42, + "fiber_g": 2.2, + "sugar_g": 4.62, + "sodium_mg": 602.0 + }, "aliases": [ "baguette" ], @@ -479,15 +503,23 @@ { "key": "baking_powder", "display_name": "Baking powder", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 172803, + "fdc_ref": "Leavening agents, baking powder, double-acting, sodium aluminum sulfate (SR Legacy) - the generic household double-acting baking powder", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 53.0, + "protein_g": 0.0, + "carbs_g": 27.7, + "fat_g": 0.0, + "fiber_g": 0.2, + "sugar_g": 0.0, + "sodium_mg": 10600.0 + }, "aliases": [ "baking powder" ], @@ -638,15 +670,23 @@ { "key": "beansprouts", "display_name": "Beansprouts", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 2709768, + "fdc_ref": "Bean sprouts, raw (FNDDS) - beansprouts are raw mung-bean sprouts", "category": "vegetable", "classes": [ "plant" ], "class_note": "mung bean sprouts", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 30.0, + "protein_g": 3.04, + "carbs_g": 5.94, + "fat_g": 0.18, + "fiber_g": 1.8, + "sugar_g": 4.13, + "sodium_mg": 6.0 + }, "aliases": [ "beansprouts" ], @@ -704,16 +744,24 @@ { "key": "beef_stock", "display_name": "Beef stock", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 172883, + "fdc_ref": "Soup, stock, beef, home-prepared (SR Legacy) - the only same-product beef stock row", "category": "condiment", "classes": [ "meat", "unknown" ], "class_note": "may contain meat or milk", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 13.0, + "protein_g": 1.97, + "carbs_g": 1.2, + "fat_g": 0.09, + "fiber_g": 0.0, + "sugar_g": 0.54, + "sodium_mg": 198.0 + }, "aliases": [ "beef broth", "beef stock" @@ -834,15 +882,23 @@ { "key": "besan", "display_name": "Besan", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 174288, + "fdc_ref": "Chickpea flour (besan) (SR Legacy) - exact name", "category": "vegetable", "classes": [ "plant" ], "class_note": "chickpea flour", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 387.0, + "protein_g": 22.39, + "carbs_g": 57.82, + "fat_g": 6.69, + "fiber_g": 10.8, + "sugar_g": 10.85, + "sodium_mg": 64.0 + }, "aliases": [ "besan (chickpea flour)" ], @@ -920,15 +976,23 @@ { "key": "black_eyed_peas", "display_name": "Black eyed peas", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 2707412, + "fdc_ref": "Blackeyed peas, NFS (FNDDS) - the generic prepared row; the only SR mature-seed row is canned with pork", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 166.0, + "protein_g": 7.18, + "carbs_g": 19.29, + "fat_g": 7.0, + "fiber_g": 6.0, + "sugar_g": 3.07, + "sodium_mg": 220.0 + }, "aliases": [ "black-eyed peas" ], @@ -1047,15 +1111,23 @@ { "key": "borlotti_beans", "display_name": "Borlotti beans", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 173736, + "fdc_ref": "Beans, cranberry (roman), mature seeds, cooked, boiled, drained, without salt (SR Legacy) - borlotti are cranberry/roman beans; drained-cooked matches the surface", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 136.0, + "protein_g": 9.34, + "carbs_g": 24.46, + "fat_g": 0.46, + "fiber_g": 8.6, + "sugar_g": 0.0, + "sodium_mg": 1.0 + }, "aliases": [ "borlotti beans, drained" ], @@ -1124,16 +1196,24 @@ { "key": "breadcrumbs", "display_name": "Breadcrumbs", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 174928, + "fdc_ref": "Bread, crumbs, dry, grated, plain (SR Legacy) - exact plain breadcrumbs", "category": "vegetable", "classes": [ "gluten", "plant" ], "class_note": "wheat breadcrumbs", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 395.0, + "protein_g": 13.35, + "carbs_g": 71.98, + "fat_g": 5.3, + "fiber_g": 4.5, + "sugar_g": 6.2, + "sodium_mg": 732.0 + }, "aliases": [ "bread crumbs", "breadcrumbs", @@ -1187,15 +1267,23 @@ { "key": "broth", "display_name": "Broth", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 2707132, + "fdc_ref": "Soup, broth (FNDDS) - the species-unspecified broth row matches the generic surface", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 6.0, + "protein_g": 0.89, + "carbs_g": 0.24, + "fat_g": 0.22, + "fiber_g": 0.0, + "sugar_g": 0.22, + "sodium_mg": 372.0 + }, "aliases": [ "broth" ], @@ -1351,8 +1439,8 @@ { "key": "burger_buns", "display_name": "Burger buns", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 2707657, + "fdc_ref": "Roll, white, hamburger bun (FNDDS) - exact same product", "category": "grain", "classes": [ "gluten", @@ -1360,8 +1448,16 @@ "dairy" ], "class_note": "buns may contain milk", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 267.0, + "protein_g": 9.43, + "carbs_g": 49.2, + "fat_g": 3.59, + "fiber_g": 2.3, + "sugar_g": 5.34, + "sodium_mg": 450.0 + }, "aliases": [ "burger buns" ], @@ -1813,15 +1909,23 @@ { "key": "cayenne", "display_name": "Cayenne", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 170932, + "fdc_ref": "Spices, pepper, red or cayenne (SR Legacy) - the exact cayenne row", "category": "spice", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 318.0, + "protein_g": 12.01, + "carbs_g": 56.63, + "fat_g": 17.27, + "fiber_g": 27.2, + "sugar_g": 10.34, + "sodium_mg": 30.0 + }, "aliases": [ "cayenne" ], @@ -2035,15 +2139,23 @@ { "key": "chicken_stock", "display_name": "Chicken stock", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 172884, + "fdc_ref": "Soup, stock, chicken, home-prepared (SR Legacy) - the only same-product chicken stock row", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 36.0, + "protein_g": 2.52, + "carbs_g": 3.53, + "fat_g": 1.2, + "fiber_g": 0.0, + "sugar_g": 1.58, + "sodium_mg": 143.0 + }, "aliases": [ "chicken bone broth", "chicken broth", @@ -2189,15 +2301,23 @@ { "key": "chiles", "display_name": "Chiles", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 168570, + "fdc_ref": "Peppers, hot chile, sun-dried (SR Legacy) - the surface is dried chiles; the row is sun-dried hot chile peppers", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 324.0, + "protein_g": 10.58, + "carbs_g": 69.86, + "fat_g": 5.81, + "fiber_g": 28.7, + "sugar_g": 41.06, + "sodium_mg": 91.0 + }, "aliases": [ "dried chiles" ], @@ -2212,15 +2332,23 @@ { "key": "chili_powder", "display_name": "Chili powder", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 171319, + "fdc_ref": "Spices, chili powder (SR Legacy) - the exact chili powder blend row", "category": "spice", "classes": [ "plant" ], "class_note": "spice blend", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 282.0, + "protein_g": 13.46, + "carbs_g": 49.7, + "fat_g": 14.28, + "fiber_g": 34.8, + "sugar_g": 7.19, + "sodium_mg": 2867.0 + }, "aliases": [ "chili powder" ], @@ -2633,15 +2761,23 @@ { "key": "cola", "display_name": "Cola", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 174852, + "fdc_ref": "Beverages, carbonated, cola, regular (SR Legacy) - the exact generic cola row", "category": "condiment", "classes": [ "plant" ], "class_note": "cola beverage", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 42.0, + "protein_g": 0.0, + "carbs_g": 10.36, + "fat_g": 0.25, + "fiber_g": 0.0, + "sugar_g": 9.94, + "sodium_mg": 3.0 + }, "aliases": [ "cola" ], @@ -3035,15 +3171,23 @@ { "key": "cranberry_sauce", "display_name": "Cranberry sauce", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 2709280, + "fdc_ref": "Cranberry sauce (FNDDS) - exact same product", "category": "condiment", "classes": [ "plant" ], "class_note": "fruit sauce", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 159.0, + "protein_g": 0.9, + "carbs_g": 40.4, + "fat_g": 0.15, + "fiber_g": 1.1, + "sugar_g": 31.75, + "sodium_mg": 5.0 + }, "aliases": [ "cranberry sauce" ], @@ -3255,15 +3399,23 @@ { "key": "daikon", "display_name": "Daikon", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 168451, + "fdc_ref": "Radishes, oriental, raw (SR Legacy) - daikon is the oriental radish", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 18.0, + "protein_g": 0.6, + "carbs_g": 4.1, + "fat_g": 0.1, + "fiber_g": 1.6, + "sugar_g": 2.5, + "sodium_mg": 21.0 + }, "aliases": [ "daikon" ], @@ -3869,15 +4021,23 @@ { "key": "french_fries", "display_name": "French fries", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 2709456, + "fdc_ref": "Potato, french fries, NFS (FNDDS) - the form-not-specified generic row", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 225.0, + "protein_g": 2.5, + "carbs_g": 23.23, + "fat_g": 14.07, + "fiber_g": 1.8, + "sugar_g": 0.34, + "sodium_mg": 295.0 + }, "aliases": [ "french fries" ], @@ -4101,15 +4261,23 @@ { "key": "glass_noodles", "display_name": "Glass noodles", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 174258, + "fdc_ref": "Noodles, chinese, cellophane or long rice (mung beans), dehydrated (SR Legacy) - glass noodles are cellophane noodles; dehydrated matches the 80 g corpus line", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 351.0, + "protein_g": 0.16, + "carbs_g": 86.09, + "fat_g": 0.06, + "fiber_g": 0.5, + "sugar_g": 0.0, + "sodium_mg": 10.0 + }, "aliases": [ "glass noodles" ], @@ -4183,15 +4351,23 @@ { "key": "goat_meat", "display_name": "Goat meat", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 175303, + "fdc_ref": "Game meat, goat, raw (SR Legacy) - raw matches the raw ingredient identity", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 109.0, + "protein_g": 20.6, + "carbs_g": 0.0, + "fat_g": 2.31, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 82.0 + }, "aliases": [ "goat meat" ], @@ -4416,15 +4592,23 @@ { "key": "green_chili", "display_name": "Green chili", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 170497, + "fdc_ref": "Peppers, hot chili, green, raw (SR Legacy) - the exact green hot chili row", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 40.0, + "protein_g": 2.0, + "carbs_g": 9.46, + "fat_g": 0.2, + "fiber_g": 1.5, + "sugar_g": 5.1, + "sodium_mg": 7.0 + }, "aliases": [ "green chili", "mild green chiles" @@ -4640,15 +4824,23 @@ { "key": "ground_coriander", "display_name": "Ground coriander", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 170922, + "fdc_ref": "Spices, coriander seed (SR Legacy) - ground coriander is ground coriander seed", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 298.0, + "protein_g": 12.37, + "carbs_g": 54.99, + "fat_g": 17.77, + "fiber_g": 41.9, + "sugar_g": 0.0, + "sodium_mg": 35.0 + }, "aliases": [ "ground coriander" ], @@ -4657,15 +4849,23 @@ { "key": "ground_ginger", "display_name": "Ground ginger", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 170926, + "fdc_ref": "Spices, ginger, ground (SR Legacy) - exact", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 335.0, + "protein_g": 8.98, + "carbs_g": 71.62, + "fat_g": 4.24, + "fiber_g": 14.1, + "sugar_g": 3.39, + "sodium_mg": 27.0 + }, "aliases": [ "ground ginger" ], @@ -4712,15 +4912,23 @@ { "key": "ground_turmeric", "display_name": "Ground turmeric", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 172231, + "fdc_ref": "Spices, turmeric, ground (SR Legacy) - exact", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 312.0, + "protein_g": 9.68, + "carbs_g": 67.14, + "fat_g": 3.25, + "fiber_g": 22.7, + "sugar_g": 3.21, + "sodium_mg": 27.0 + }, "aliases": [ "ground turmeric" ], @@ -4796,15 +5004,23 @@ { "key": "hao_you", "display_name": "Hao you", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 2707150, + "fdc_ref": "Oyster sauce (FNDDS) - hao you is Cantonese for oyster sauce; same product", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 51.0, + "protein_g": 1.35, + "carbs_g": 10.92, + "fat_g": 0.25, + "fiber_g": 0.3, + "sugar_g": 0.0, + "sodium_mg": 2733.0 + }, "aliases": [ "hao you" ], @@ -4875,15 +5091,23 @@ { "key": "hoisin", "display_name": "Hoisin", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 2707441, + "fdc_ref": "Hoisin sauce (FNDDS) - exact same product", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 220.0, + "protein_g": 3.31, + "carbs_g": 44.08, + "fat_g": 3.39, + "fiber_g": 2.8, + "sugar_g": 27.26, + "sodium_mg": 1615.0 + }, "aliases": [ "hoisin sauce" ], @@ -5434,15 +5658,23 @@ { "key": "lemon_juice", "display_name": "Lemon juice", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 2709180, + "fdc_ref": "Lemon juice, 100%, NS as to form (FNDDS) - the form-not-specified generic row", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 22.0, + "protein_g": 0.35, + "carbs_g": 6.9, + "fat_g": 0.24, + "fiber_g": 0.3, + "sugar_g": 2.52, + "sodium_mg": 1.0 + }, "aliases": [ "lemon juice" ], @@ -5790,15 +6022,23 @@ { "key": "mild_curry_powder", "display_name": "Mild curry powder", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 170924, + "fdc_ref": "Spices, curry powder (SR Legacy) - mild heat variant of the standard curry powder blend", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 325.0, + "protein_g": 14.29, + "carbs_g": 55.83, + "fat_g": 14.01, + "fiber_g": 53.2, + "sugar_g": 2.76, + "sodium_mg": 52.0 + }, "aliases": [ "mild curry powder" ], @@ -5887,15 +6127,23 @@ { "key": "millet_flour", "display_name": "Millet flour", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 172023, + "fdc_ref": "Millet flour (SR Legacy) - exact", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 382.0, + "protein_g": 10.75, + "carbs_g": 75.12, + "fat_g": 4.25, + "fiber_g": 3.5, + "sugar_g": 1.66, + "sodium_mg": 4.0 + }, "aliases": [ "millet flour" ], @@ -6255,15 +6503,23 @@ { "key": "nutmeg", "display_name": "Nutmeg", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 171326, + "fdc_ref": "Spices, nutmeg, ground (SR Legacy) - ground is the standard spice-aisle form", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 525.0, + "protein_g": 5.84, + "carbs_g": 49.29, + "fat_g": 36.31, + "fiber_g": 20.8, + "sugar_g": 2.99, + "sodium_mg": 16.0 + }, "aliases": [ "nutmeg" ], @@ -6472,15 +6728,23 @@ { "key": "orange_juice", "display_name": "Orange juice", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 2709186, + "fdc_ref": "Orange juice, 100%, NFS (FNDDS) - the form-not-specified generic row", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 47.0, + "protein_g": 0.77, + "carbs_g": 10.17, + "fat_g": 0.34, + "fiber_g": 0.3, + "sugar_g": 8.18, + "sodium_mg": 2.0 + }, "aliases": [ "orange juice" ], @@ -6564,16 +6828,24 @@ { "key": "orzo", "display_name": "Orzo", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 2708357, + "fdc_ref": "Pasta, cooked (FNDDS) - orzo shares the pasta identity; the corpus line is 1 cup = 200 g (cooked), same row as pasta_dried", "category": "vegetable", "classes": [ "gluten", "plant" ], "class_note": "wheat pasta", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 157.0, + "protein_g": 5.76, + "carbs_g": 30.68, + "fat_g": 0.92, + "fiber_g": 1.8, + "sugar_g": 0.56, + "sodium_mg": 232.0 + }, "aliases": [ "orzo", "risoni" @@ -6626,15 +6898,23 @@ { "key": "paprika", "display_name": "Paprika", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 171329, + "fdc_ref": "Spices, paprika (SR Legacy) - exact (same row as the smoked_paprika pin)", "category": "spice", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 282.0, + "protein_g": 14.14, + "carbs_g": 53.99, + "fat_g": 12.89, + "fiber_g": 34.9, + "sugar_g": 10.34, + "sodium_mg": 68.0 + }, "aliases": [ "paprika" ], @@ -7113,15 +7393,23 @@ { "key": "pomegranate_seeds", "display_name": "Pomegranate seeds", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 169134, + "fdc_ref": "Pomegranates, raw (SR Legacy) - the row's edible portion is the arils with seeds", "category": "fruit", "classes": [ "plant" ], "class_note": "fresh arils", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 83.0, + "protein_g": 1.67, + "carbs_g": 18.7, + "fat_g": 1.17, + "fiber_g": 4.0, + "sugar_g": 13.67, + "sodium_mg": 3.0 + }, "aliases": [ "pomegranate seeds" ], @@ -7199,15 +7487,23 @@ { "key": "pork_cutlets", "display_name": "Pork cutlets", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 168230, + "fdc_ref": "Pork, fresh, loin, whole, separable lean only, raw (SR Legacy) - cutlets are boneless lean loin cuts", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 143.0, + "protein_g": 21.43, + "carbs_g": 0.0, + "fat_g": 5.66, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 52.0 + }, "aliases": [ "pork cutlets" ], @@ -7645,15 +7941,23 @@ { "key": "red_palm_oil", "display_name": "Red palm oil", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 171015, + "fdc_ref": "Oil, palm (SR Legacy) - red palm oil is unrefined palm oil; identical in the shipped macro fields", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 884.0, + "protein_g": 0.0, + "carbs_g": 0.0, + "fat_g": 100.0, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 0.0 + }, "aliases": [ "red palm oil" ], @@ -7867,15 +8171,23 @@ { "key": "rice_flour", "display_name": "Rice flour", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 169714, + "fdc_ref": "Rice flour, white, unenriched (SR Legacy) - exact; white is the default rice flour", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 366.0, + "protein_g": 5.95, + "carbs_g": 80.13, + "fat_g": 1.42, + "fiber_g": 2.4, + "sugar_g": 0.12, + "sodium_mg": 0.0 + }, "aliases": [ "rice flour" ], @@ -8225,15 +8537,23 @@ { "key": "salt_cod", "display_name": "Salt cod", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 174190, + "fdc_ref": "Fish, cod, Atlantic, dried and salted (SR Legacy) - exact same product", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 290.0, + "protein_g": 62.82, + "carbs_g": 0.0, + "fat_g": 2.37, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 7027.0 + }, "aliases": [ "salt cod" ], @@ -8723,15 +9043,23 @@ { "key": "smoked_sausage", "display_name": "Smoked sausage", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 174585, + "fdc_ref": "Sausage, smoked link sausage, pork and beef (SR Legacy) - the generic mixed smoked link sausage", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 320.0, + "protein_g": 12.0, + "carbs_g": 2.42, + "fat_g": 28.73, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 911.0 + }, "aliases": [ "smoked sausage" ], @@ -8930,15 +9258,23 @@ { "key": "squid", "display_name": "Squid", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 174223, + "fdc_ref": "Mollusks, squid, mixed species, raw (SR Legacy) - exact", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 92.0, + "protein_g": 15.58, + "carbs_g": 3.08, + "fat_g": 1.38, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 44.0 + }, "aliases": [ "squid" ], @@ -8953,15 +9289,23 @@ { "key": "sriracha", "display_name": "Sriracha", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 171186, + "fdc_ref": "Sauce, hot chile, sriracha (SR Legacy) - exact same product", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 93.0, + "protein_g": 1.93, + "carbs_g": 19.16, + "fat_g": 0.93, + "fiber_g": 2.2, + "sugar_g": 15.11, + "sodium_mg": 2124.0 + }, "aliases": [ "sriracha" ], @@ -9109,15 +9453,23 @@ { "key": "swede", "display_name": "Swede", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 168454, + "fdc_ref": "Rutabagas, raw (SR Legacy) - swede is the British name for rutabaga", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 37.0, + "protein_g": 1.08, + "carbs_g": 8.62, + "fat_g": 0.16, + "fiber_g": 2.3, + "sugar_g": 4.46, + "sodium_mg": 12.0 + }, "aliases": [ "swede, peeled and cubed" ], @@ -9255,15 +9607,23 @@ { "key": "tamari", "display_name": "Tamari", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 174278, + "fdc_ref": "Soy sauce made from soy (tamari) (SR Legacy) - the exact tamari row (same row as soy_sauce)", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 60.0, + "protein_g": 10.51, + "carbs_g": 5.57, + "fat_g": 0.1, + "fiber_g": 0.8, + "sugar_g": 1.7, + "sodium_mg": 5586.0 + }, "aliases": [ "japanese tamari", "tamari", @@ -9280,15 +9640,23 @@ { "key": "tamarind_paste", "display_name": "Tamarind paste", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 167763, + "fdc_ref": "Tamarinds, raw (SR Legacy) - block paste is pressed tamarind pulp; the raw row is the edible pulp", "category": "condiment", "classes": [ "plant" ], "class_note": "tamarind paste", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 239.0, + "protein_g": 2.8, + "carbs_g": 62.5, + "fat_g": 0.6, + "fiber_g": 5.1, + "sugar_g": 38.8, + "sodium_mg": 28.0 + }, "aliases": [ "tamarind paste", "tamarind paste or rice vinegar" @@ -9627,15 +9995,23 @@ { "key": "turmeric", "display_name": "Turmeric", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 172231, + "fdc_ref": "Spices, turmeric, ground (SR Legacy) - ground is the standard spice-aisle form (same row as ground_turmeric)", "category": "spice", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 312.0, + "protein_g": 9.68, + "carbs_g": 67.14, + "fat_g": 3.25, + "fiber_g": 22.7, + "sugar_g": 3.21, + "sodium_mg": 27.0 + }, "aliases": [ "turmeric" ], @@ -9655,15 +10031,23 @@ { "key": "udon_noodles", "display_name": "Udon noodles", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 2708352, + "fdc_ref": "Noodles, cooked (FNDDS) - udon is a wheat noodle; the cooked generic row matches the fresh-udon 320 g corpus line", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 137.0, + "protein_g": 4.51, + "carbs_g": 25.01, + "fat_g": 2.06, + "fiber_g": 1.2, + "sugar_g": 0.4, + "sodium_mg": 236.0 + }, "aliases": [ "udon noodles" ], @@ -9768,16 +10152,24 @@ { "key": "vegetable_stock", "display_name": "Vegetable stock", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 171180, + "fdc_ref": "Soup, SWANSON, vegetable broth (SR Legacy) - the only same-product row; branded ready-to-serve vegetable broth", "category": "condiment", "classes": [ "plant", "unknown" ], "class_note": "may contain milk or wheat", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 6.0, + "protein_g": 0.23, + "carbs_g": 1.02, + "fat_g": 0.07, + "fiber_g": 0.0, + "sugar_g": 0.57, + "sodium_mg": 303.0 + }, "aliases": [ "veg stock", "vegetable broth", @@ -10124,15 +10516,23 @@ { "key": "white_vinegar", "display_name": "White vinegar", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 172237, + "fdc_ref": "Vinegar, distilled (SR Legacy) - distilled white vinegar", "category": "other", "classes": [ "unknown" ], "class_note": "no curated class — defaults to unknown (claim-blocking)", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 18.0, + "protein_g": 0.0, + "carbs_g": 0.04, + "fat_g": 0.0, + "fiber_g": 0.0, + "sugar_g": 0.04, + "sodium_mg": 2.0 + }, "aliases": [ "white vinegar" ], @@ -10147,16 +10547,24 @@ { "key": "whole_wheat_flour", "display_name": "Whole wheat flour", - "fdc_id": null, - "fdc_ref": "no confident USDA row — never guessed", + "fdc_id": 168893, + "fdc_ref": "Wheat flour, whole-grain (SR Legacy) - whole wheat flour is whole-grain wheat flour", "category": "grain", "classes": [ "gluten", "plant" ], "class_note": "whole wheat flour", - "nutrition_source": "none", - "per_100g": null, + "nutrition_source": "hand-verified pin (build_vocab.py FDC_PINS)", + "per_100g": { + "kcal": 340.0, + "protein_g": 13.21, + "carbs_g": 71.97, + "fat_g": 2.5, + "fiber_g": 10.7, + "sugar_g": 0.41, + "sodium_mg": 2.0 + }, "aliases": [ "whole wheat flour" ], diff --git a/data/recipe-bundle/manifest.json b/data/recipe-bundle/manifest.json index 517450803..dc95e8764 100644 --- a/data/recipe-bundle/manifest.json +++ b/data/recipe-bundle/manifest.json @@ -4,9 +4,9 @@ "path": "apps/ios/Resources/RecipeCatalog/recipes-v2.json", "build_copy": "data/recipes/build/recipes-v2.json", "bundle_version": 2, - "generated_at": "2026-10-15T12:45:00Z", - "sha256": "87f4f2c1bbd43b1c9fcd5f235e169f5d386a73035a9f1b5b718b0d13e599eb7f", - "bytes": 2603827, + "generated_at": "2026-10-15T16:46:35Z", + "sha256": "d442a11fae65a03e84066a03f195604aeecb1bfadbdce9ad02e48671e3edcbc2", + "bytes": 2611873, "schema_url": "https://fridgeluck.app/schemas/recipe-bundle-v2.schema.json" }, "contents": { @@ -15,7 +15,7 @@ "catalog_id_band": ["rcp-000167", "rcp-000934"], "cuisines": { "asian": 191, "american": 161, "mediterranean": 132, "italian": 105, "mexican": 98, "indian": 76 }, "rights_status": { "original": 461, "quarantined": 302 }, - "nutrition_coverage": { "estimated": 345, "partial": 255, "computed": 163 }, + "nutrition_coverage": { "estimated": 500, "partial": 99, "computed": 164 }, "steps_with_timers": 258, "recipes_without_lines": 0, "recipes_without_steps": 0, @@ -24,7 +24,7 @@ "rcp-000001..rcp-000166 stay reserved for migrated legacy rows; the corpus band starts at rcp-000167.", "No recipe ships without at least one structured line and one structured step.", "Every recipe carries a rights status with pinned evidence; nothing is guessed.", - "97 vocabulary keys (mostly world-cuisine specialties) have no FNDDS per-100g row; their recipes carry partial nutrition coverage rather than synthesized values." + "51 vocabulary keys resolved to same-product FDC rows in the 2026-10 nutrition-completion pass; the 46 keys with no honest FDC row (mostly world-cuisine specialties) stay unresolved with their rejected candidates recorded in data/ingredients/unresolved-candidates.json." ] }, "provenance": { @@ -39,19 +39,20 @@ ], "id_mapping": "data/recipes/evidence/ingest-2026-10-map.json (packet id -> corpus id, produced by data/recipe-bundle/ingest_packets_2026_10.py)" }, - "compiler": { "pull_request": 158, "branch": "obv/burst5-fridgeluck-rcp-pipeline", "commit": "3644321", "tool": "data/recipes/tools/compile_bundle.py", "changes_on_this_branch": "GENERATED_AT bumped to 2026-10-15T12:45:00Z per the tool's recompile instruction" }, - "vocabulary": { "tool": "data/recipes/tools/build_vocab.py", "keys": 329, "surfaces": 555, "fdc_new_rows": 97, "inputs": "extended corpus + /tmp/canon identities + /tmp/fdc FNDDS/SR CSVs (CC0)" }, + "compiler": { "pull_request": 158, "branch": "obv/burst5-fridgeluck-rcp-pipeline", "commit": "3644321", "tool": "data/recipes/tools/compile_bundle.py", "changes_on_this_branch": "GENERATED_AT bumped to 2026-10-15T16:46:35Z per the tool's recompile instruction" }, + "vocabulary": { "tool": "data/recipes/tools/build_vocab.py", "keys": 329, "surfaces": 555, "fdc_new_rows": 97, "inputs": "extended corpus + /tmp/canon identities + /tmp/fdc FNDDS/SR CSVs (CC0)", "nutrition_completion_2026_10": "51 keys pinned to same-product FDC rows in build_vocab.py FDC_PINS; 46 keys stay unresolved with rejected candidates in data/ingredients/unresolved-candidates.json (build_vocab.py fails if that audit drifts); legacy identity map now 32 resolved / 18 proposed / 0 unresolved, with 'tortilla' resolved via the plural key 'tortillas' (fdc 2707822)" }, "validator": "data/recipes/tools/validate_bundle.py", "loader": { "pull_request": 151, "branch": "obv/burst5-fridgeluck-rcp-loader" }, "contracts": { "spec_pull_requests": [148, 146], "schema": "docs/spec/recipes/contracts/recipe-bundle-v2.schema.json" } }, "verification": { - "pipeline_unit_tests": { "command": "python3 -m pytest data/recipes/tools/tests/test_pipeline.py -q", "result": "14 passed (corpus-size pin updated 401 -> 763)" }, + "pipeline_unit_tests": { "command": "python3 -m pytest data/recipes/tools/tests/ -q", "result": "18 passed (14 pipeline + 4 kcal-drift; corpus-size pin 763)" }, "bundle_validation": { "command": "python3 data/recipes/tools/validate_bundle.py", "result": "PASS" }, + "kcal_drift_check": { "command": "python3 data/recipes/tools/validate_bundle.py data/recipes/build/recipes-v2.json --previous --changes data/recipe-bundle/nutrition-changes-2026-10.json", "result": "PASS, 0 unrecorded/exempted problems; 33 of 763 recipes moved >40% in kcal and each carries an exemption naming the resolved keys in its lines" }, "determinism": { - "command": "python3 data/recipes/tools/compile_bundle.py (run twice, sha256 compared)", - "result": "byte-identical: 87f4f2c1bbd43b1c9fcd5f235e169f5d386a73035a9f1b5b718b0d13e599eb7f" + "command": "python3 data/recipes/tools/compile_bundle.py (run three times, MD5 compared)", + "result": "byte-identical across the three runs (MD5 de834f81e2ef611d02ff6779915e453f); committed bundle sha256 d442a11fae65a03e84066a03f195604aeecb1bfadbdce9ad02e48671e3edcbc2" }, - "nutrition_stability": "per_100g and fdc_id unchanged for all 220 pre-existing vocabulary keys after the vocabulary rebuild; only unit weights and aliases were recomputed" + "nutrition_changes": "51 keys gained per-100g; 193 recipes changed kcal (median +11.5 kcal, max +426.2 on rcp-000229, the previously under-reported ones); 33 moves >40% are exempted in data/recipe-bundle/nutrition-changes-2026-10.json and enforced by validate_bundle.py --previous --changes" } } diff --git a/data/recipe-bundle/nutrition-changes-2026-10.json b/data/recipe-bundle/nutrition-changes-2026-10.json new file mode 100644 index 000000000..76e1a93aa --- /dev/null +++ b/data/recipe-bundle/nutrition-changes-2026-10.json @@ -0,0 +1,206 @@ +{ + "note": "Recipes whose per-serving kcal moved more than 40 percent against the previously published bundle, with the vocabulary resolution that caused each move. Recorded by data/recipes/tools/record_nutrition_changes.py; enforced by validate_bundle.py --previous --changes.", + "policy": "A >40% kcal move between published bundles must be exempted here with the vocabulary change that caused it; exemption entries must reproduce both kcal values.", + "previous_bundle": "data/recipes/build/recipes-v2.json as shipped before the 2026-10 nutrition-completion vocabulary revision (commit ac5a535)", + "threshold": 0.4, + "entries": [ + { + "catalog_id": "rcp-000182", + "old_kcal": 306.9, + "new_kcal": 436.5, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: chicken_stock (fdc 172884)" + }, + { + "catalog_id": "rcp-000229", + "old_kcal": 236.5, + "new_kcal": 662.7, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: ground_turmeric (fdc 172231), whole_wheat_flour (fdc 168893)" + }, + { + "catalog_id": "rcp-000262", + "old_kcal": 177.9, + "new_kcal": 350.7, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: chicken_stock (fdc 172884)" + }, + { + "catalog_id": "rcp-000305", + "old_kcal": 410.5, + "new_kcal": 626.5, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: chicken_stock (fdc 172884)" + }, + { + "catalog_id": "rcp-000319", + "old_kcal": 162.5, + "new_kcal": 436.1, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: borlotti_beans (fdc 173736), vegetable_stock (fdc 171180)" + }, + { + "catalog_id": "rcp-000401", + "old_kcal": 162.4, + "new_kcal": 319.4, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: orzo (fdc 2708357)" + }, + { + "catalog_id": "rcp-000414", + "old_kcal": 214.2, + "new_kcal": 387.0, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: chicken_stock (fdc 172884)" + }, + { + "catalog_id": "rcp-000420", + "old_kcal": 58.0, + "new_kcal": 229.4, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: orzo (fdc 2708357), vegetable_stock (fdc 171180)" + }, + { + "catalog_id": "rcp-000428", + "old_kcal": 49.7, + "new_kcal": 222.5, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: chicken_stock (fdc 172884)" + }, + { + "catalog_id": "rcp-000449", + "old_kcal": 220.1, + "new_kcal": 392.9, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: chicken_stock (fdc 172884)" + }, + { + "catalog_id": "rcp-000474", + "old_kcal": 88.7, + "new_kcal": 218.3, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: chicken_stock (fdc 172884)" + }, + { + "catalog_id": "rcp-000478", + "old_kcal": 170.2, + "new_kcal": 343.0, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: chicken_stock (fdc 172884)" + }, + { + "catalog_id": "rcp-000503", + "old_kcal": 233.0, + "new_kcal": 362.6, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: chicken_stock (fdc 172884)" + }, + { + "catalog_id": "rcp-000517", + "old_kcal": 304.4, + "new_kcal": 480.6, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: chicken_stock (fdc 172884), ground_ginger (fdc 170926)" + }, + { + "catalog_id": "rcp-000541", + "old_kcal": 228.5, + "new_kcal": 401.3, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: chicken_stock (fdc 172884)" + }, + { + "catalog_id": "rcp-000545", + "old_kcal": 301.8, + "new_kcal": 474.6, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: breadcrumbs (fdc 174928), chicken_stock (fdc 172884)" + }, + { + "catalog_id": "rcp-000547", + "old_kcal": 72.5, + "new_kcal": 203.7, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: chicken_stock (fdc 172884), ground_ginger (fdc 170926)" + }, + { + "catalog_id": "rcp-000596", + "old_kcal": 81.7, + "new_kcal": 227.8, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: udon_noodles (fdc 2708352)" + }, + { + "catalog_id": "rcp-000626", + "old_kcal": 96.9, + "new_kcal": 151.8, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: rice_flour (fdc 169714)" + }, + { + "catalog_id": "rcp-000642", + "old_kcal": 28.2, + "new_kcal": 98.4, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: glass_noodles (fdc 174258)" + }, + { + "catalog_id": "rcp-000651", + "old_kcal": 193.5, + "new_kcal": 440.6, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: rice_flour (fdc 169714), turmeric (fdc 172231)" + }, + { + "catalog_id": "rcp-000658", + "old_kcal": 188.8, + "new_kcal": 460.8, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: baguette (fdc 2707610)" + }, + { + "catalog_id": "rcp-000694", + "old_kcal": 36.4, + "new_kcal": 108.8, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: red_palm_oil (fdc 171015)" + }, + { + "catalog_id": "rcp-000704", + "old_kcal": 101.6, + "new_kcal": 282.9, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: salt_cod (fdc 174190)" + }, + { + "catalog_id": "rcp-000705", + "old_kcal": 87.5, + "new_kcal": 240.1, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: goat_meat (fdc 175303)" + }, + { + "catalog_id": "rcp-000723", + "old_kcal": 220.9, + "new_kcal": 390.3, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: french_fries (fdc 2709456), white_vinegar (fdc 172237)" + }, + { + "catalog_id": "rcp-000732", + "old_kcal": 181.0, + "new_kcal": 341.0, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: smoked_sausage (fdc 174585)" + }, + { + "catalog_id": "rcp-000736", + "old_kcal": 49.9, + "new_kcal": 81.1, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: beef_stock (fdc 172883)" + }, + { + "catalog_id": "rcp-000740", + "old_kcal": 57.5, + "new_kcal": 322.0, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: paprika (fdc 171329), smoked_sausage (fdc 174585)" + }, + { + "catalog_id": "rcp-000745", + "old_kcal": 161.9, + "new_kcal": 377.7, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: lemon_juice (fdc 2709180), pork_cutlets (fdc 168230)" + }, + { + "catalog_id": "rcp-000746", + "old_kcal": 71.4, + "new_kcal": 214.7, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: millet_flour (fdc 172023)" + }, + { + "catalog_id": "rcp-000747", + "old_kcal": 12.0, + "new_kcal": 136.5, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: black_eyed_peas (fdc 2707412)" + }, + { + "catalog_id": "rcp-000753", + "old_kcal": 181.9, + "new_kcal": 338.9, + "vocabulary_change": "keys in this recipe resolved to per-100g rows in this revision: orzo (fdc 2708357)" + } + ] +} diff --git a/data/recipe-bundle/validation-report.md b/data/recipe-bundle/validation-report.md index 4cfc3ff54..26cc8b345 100644 --- a/data/recipe-bundle/validation-report.md +++ b/data/recipe-bundle/validation-report.md @@ -119,3 +119,32 @@ carry no collection tags. If the enum should grow, that is a schema change (PR # corpus-level linting of the ingested records ran through the packets' own checkers and the compiled-output validator instead. - Bundle size impact on the app binary (2.6 MB resource) is unmeasured beyond file size. + +--- + +# Addendum — 2026-10-15 nutrition-completion revision (branch `obv/burst6-fridgeluck-recipe-nutrition`) + +The bundle was recompiled after a vocabulary revision that resolves 51 specialty keys +(mostly world-cuisine) to same-product FDC rows in the FNDDS 2024-10-31 / SR Legacy +2018-04 bulk CSVs — e.g. hoisin → Hoisin sauce 2707441, oyster sauce ("hao you") 2707150, +salt cod 174190, borlotti beans → cranberry (roman) beans 173736, daikon → oriental +radish 168451. Every pin cites the row's own description and is the same product as the +key; keys whose only candidate rows are a different product (gochujang, mirin, labneh, +dashi, halloumi, species-unspecified stock, …) stay unresolved with their rejected +candidates recorded in `data/ingredients/unresolved-candidates.json`, and +`build_vocab.py` now fails if that audit drifts from the vocabulary. The legacy identity +map is fully resolved (32 resolved / 18 proposed / 0 unresolved; `tortilla` resolves via +the plural key `tortillas`). + +Effect on the shipped bundle (sha256 `d442a11f…3edcbc2`, 2,611,873 bytes, `GENERATED_AT` +`2026-10-15T16:46:35Z`): nutrition coverage moved from 163 computed / 345 estimated / +255 partial to **164 computed / 500 estimated / 99 partial**. 193 recipes changed kcal +(median +11.5); the 33 recipes that moved more than 40 percent are the previously +under-reported ones, and each carries a recorded cause in +`data/recipe-bundle/nutrition-changes-2026-10.json` naming the resolved keys in its +lines. The validator gained a `--previous`/`--changes` kcal-drift check that fails on +any unrecorded >40% move between published bundles, with planted-violation tests in +`data/recipes/tools/tests/test_kcal_drift.py`. + +Nothing recipe-level was authored or edited; all changes flow from the audited +vocabulary revision through the pipeline's own rebuild. diff --git a/data/recipes/build/recipes-v2.json b/data/recipes/build/recipes-v2.json index c7c89ad6f..d65eed44e 100644 --- a/data/recipes/build/recipes-v2.json +++ b/data/recipes/build/recipes-v2.json @@ -1,7 +1,7 @@ { "schema": "https://fridgeluck.app/schemas/recipe-bundle-v2.schema.json", "bundle_version": 2, - "generated_at": "2026-10-15T12:45:00Z", + "generated_at": "2026-10-15T16:46:35Z", "cuisines": [ "american", "asian", @@ -47,11 +47,19 @@ }, { "key": "allspice", - "fdc_id": null, + "fdc_id": 171315, "legacy_id": null, "display_name": "Allspice", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 263.0, + "protein_g": 6.09, + "carbs_g": 72.12, + "fat_g": 8.69, + "fiber_g": 21.6, + "sugar_g": 0.0, + "sodium_mg": 77.0 + }, "aliases": [ "allspice" ] @@ -143,11 +151,19 @@ }, { "key": "apple_cider_vinegar", - "fdc_id": null, + "fdc_id": 173469, "legacy_id": null, "display_name": "Apple cider vinegar", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 21.0, + "protein_g": 0.0, + "carbs_g": 0.93, + "fat_g": 0.0, + "fiber_g": 0.0, + "sugar_g": 0.4, + "sodium_mg": 5.0 + }, "aliases": [ "apple cider vinegar", "cider vinegar" @@ -284,22 +300,38 @@ }, { "key": "baguette", - "fdc_id": null, + "fdc_id": 2707610, "legacy_id": null, "display_name": "Baguette", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 272.0, + "protein_g": 10.75, + "carbs_g": 51.88, + "fat_g": 2.42, + "fiber_g": 2.2, + "sugar_g": 4.62, + "sodium_mg": 602.0 + }, "aliases": [ "baguette" ] }, { "key": "baking_powder", - "fdc_id": null, + "fdc_id": 172803, "legacy_id": null, "display_name": "Baking powder", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 53.0, + "protein_g": 0.0, + "carbs_g": 27.7, + "fat_g": 0.0, + "fiber_g": 0.2, + "sugar_g": 0.0, + "sodium_mg": 10600.0 + }, "aliases": [ "baking powder" ] @@ -384,11 +416,19 @@ }, { "key": "beansprouts", - "fdc_id": null, + "fdc_id": 2709768, "legacy_id": null, "display_name": "Beansprouts", "category": "vegetable", - "per_100g": null, + "per_100g": { + "kcal": 30.0, + "protein_g": 3.04, + "carbs_g": 5.94, + "fat_g": 0.18, + "fiber_g": 1.8, + "sugar_g": 4.13, + "sodium_mg": 6.0 + }, "aliases": [ "beansprouts" ] @@ -426,11 +466,19 @@ }, { "key": "beef_stock", - "fdc_id": null, + "fdc_id": 172883, "legacy_id": null, "display_name": "Beef stock", "category": "condiment", - "per_100g": null, + "per_100g": { + "kcal": 13.0, + "protein_g": 1.97, + "carbs_g": 1.2, + "fat_g": 0.09, + "fiber_g": 0.0, + "sugar_g": 0.54, + "sodium_mg": 198.0 + }, "aliases": [ "beef broth", "beef stock" @@ -492,11 +540,19 @@ }, { "key": "besan", - "fdc_id": null, + "fdc_id": 174288, "legacy_id": null, "display_name": "Besan", "category": "vegetable", - "per_100g": null, + "per_100g": { + "kcal": 387.0, + "protein_g": 22.39, + "carbs_g": 57.82, + "fat_g": 6.69, + "fiber_g": 10.8, + "sugar_g": 10.85, + "sodium_mg": 64.0 + }, "aliases": [ "besan (chickpea flour)" ] @@ -538,11 +594,19 @@ }, { "key": "black_eyed_peas", - "fdc_id": null, + "fdc_id": 2707412, "legacy_id": null, "display_name": "Black eyed peas", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 166.0, + "protein_g": 7.18, + "carbs_g": 19.29, + "fat_g": 7.0, + "fiber_g": 6.0, + "sugar_g": 3.07, + "sodium_mg": 220.0 + }, "aliases": [ "black-eyed peas" ] @@ -617,11 +681,19 @@ }, { "key": "borlotti_beans", - "fdc_id": null, + "fdc_id": 173736, "legacy_id": null, "display_name": "Borlotti beans", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 136.0, + "protein_g": 9.34, + "carbs_g": 24.46, + "fat_g": 0.46, + "fiber_g": 8.6, + "sugar_g": 0.0, + "sodium_mg": 1.0 + }, "aliases": [ "borlotti beans, drained" ] @@ -658,11 +730,19 @@ }, { "key": "breadcrumbs", - "fdc_id": null, + "fdc_id": 174928, "legacy_id": null, "display_name": "Breadcrumbs", "category": "vegetable", - "per_100g": null, + "per_100g": { + "kcal": 395.0, + "protein_g": 13.35, + "carbs_g": 71.98, + "fat_g": 5.3, + "fiber_g": 4.5, + "sugar_g": 6.2, + "sodium_mg": 732.0 + }, "aliases": [ "bread crumbs", "breadcrumbs", @@ -692,11 +772,19 @@ }, { "key": "broth", - "fdc_id": null, + "fdc_id": 2707132, "legacy_id": null, "display_name": "Broth", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 6.0, + "protein_g": 0.89, + "carbs_g": 0.24, + "fat_g": 0.22, + "fiber_g": 0.0, + "sugar_g": 0.22, + "sodium_mg": 372.0 + }, "aliases": [ "broth" ] @@ -781,11 +869,19 @@ }, { "key": "burger_buns", - "fdc_id": null, + "fdc_id": 2707657, "legacy_id": null, "display_name": "Burger buns", "category": "grain", - "per_100g": null, + "per_100g": { + "kcal": 267.0, + "protein_g": 9.43, + "carbs_g": 49.2, + "fat_g": 3.59, + "fiber_g": 2.3, + "sugar_g": 5.34, + "sodium_mg": 450.0 + }, "aliases": [ "burger buns" ] @@ -1052,11 +1148,19 @@ }, { "key": "cayenne", - "fdc_id": null, + "fdc_id": 170932, "legacy_id": null, "display_name": "Cayenne", "category": "spice", - "per_100g": null, + "per_100g": { + "kcal": 318.0, + "protein_g": 12.01, + "carbs_g": 56.63, + "fat_g": 17.27, + "fiber_g": 27.2, + "sugar_g": 10.34, + "sodium_mg": 30.0 + }, "aliases": [ "cayenne" ] @@ -1181,11 +1285,19 @@ }, { "key": "chicken_stock", - "fdc_id": null, + "fdc_id": 172884, "legacy_id": null, "display_name": "Chicken stock", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 36.0, + "protein_g": 2.52, + "carbs_g": 3.53, + "fat_g": 1.2, + "fiber_g": 0.0, + "sugar_g": 1.58, + "sodium_mg": 143.0 + }, "aliases": [ "chicken bone broth", "chicken broth", @@ -1262,22 +1374,38 @@ }, { "key": "chiles", - "fdc_id": null, + "fdc_id": 168570, "legacy_id": null, "display_name": "Chiles", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 324.0, + "protein_g": 10.58, + "carbs_g": 69.86, + "fat_g": 5.81, + "fiber_g": 28.7, + "sugar_g": 41.06, + "sodium_mg": 91.0 + }, "aliases": [ "dried chiles" ] }, { "key": "chili_powder", - "fdc_id": null, + "fdc_id": 171319, "legacy_id": null, "display_name": "Chili powder", "category": "spice", - "per_100g": null, + "per_100g": { + "kcal": 282.0, + "protein_g": 13.46, + "carbs_g": 49.7, + "fat_g": 14.28, + "fiber_g": 34.8, + "sugar_g": 7.19, + "sodium_mg": 2867.0 + }, "aliases": [ "chili powder" ] @@ -1517,11 +1645,19 @@ }, { "key": "cola", - "fdc_id": null, + "fdc_id": 174852, "legacy_id": null, "display_name": "Cola", "category": "condiment", - "per_100g": null, + "per_100g": { + "kcal": 42.0, + "protein_g": 0.0, + "carbs_g": 10.36, + "fat_g": 0.25, + "fiber_g": 0.0, + "sugar_g": 9.94, + "sodium_mg": 3.0 + }, "aliases": [ "cola" ] @@ -1746,11 +1882,19 @@ }, { "key": "cranberry_sauce", - "fdc_id": null, + "fdc_id": 2709280, "legacy_id": null, "display_name": "Cranberry sauce", "category": "condiment", - "per_100g": null, + "per_100g": { + "kcal": 159.0, + "protein_g": 0.9, + "carbs_g": 40.4, + "fat_g": 0.15, + "fiber_g": 1.1, + "sugar_g": 31.75, + "sodium_mg": 5.0 + }, "aliases": [ "cranberry sauce" ] @@ -1860,11 +2004,19 @@ }, { "key": "daikon", - "fdc_id": null, + "fdc_id": 168451, "legacy_id": null, "display_name": "Daikon", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 18.0, + "protein_g": 0.6, + "carbs_g": 4.1, + "fat_g": 0.1, + "fiber_g": 1.6, + "sugar_g": 2.5, + "sodium_mg": 21.0 + }, "aliases": [ "daikon" ] @@ -2216,11 +2368,19 @@ }, { "key": "french_fries", - "fdc_id": null, + "fdc_id": 2709456, "legacy_id": null, "display_name": "French fries", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 225.0, + "protein_g": 2.5, + "carbs_g": 23.23, + "fat_g": 14.07, + "fiber_g": 1.8, + "sugar_g": 0.34, + "sodium_mg": 295.0 + }, "aliases": [ "french fries" ] @@ -2338,11 +2498,19 @@ }, { "key": "glass_noodles", - "fdc_id": null, + "fdc_id": 174258, "legacy_id": null, "display_name": "Glass noodles", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 351.0, + "protein_g": 0.16, + "carbs_g": 86.09, + "fat_g": 0.06, + "fiber_g": 0.5, + "sugar_g": 0.0, + "sodium_mg": 10.0 + }, "aliases": [ "glass noodles" ] @@ -2388,11 +2556,19 @@ }, { "key": "goat_meat", - "fdc_id": null, + "fdc_id": 175303, "legacy_id": null, "display_name": "Goat meat", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 109.0, + "protein_g": 20.6, + "carbs_g": 0.0, + "fat_g": 2.31, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 82.0 + }, "aliases": [ "goat meat" ] @@ -2521,11 +2697,19 @@ }, { "key": "green_chili", - "fdc_id": null, + "fdc_id": 170497, "legacy_id": null, "display_name": "Green chili", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 40.0, + "protein_g": 2.0, + "carbs_g": 9.46, + "fat_g": 0.2, + "fiber_g": 1.5, + "sugar_g": 5.1, + "sodium_mg": 7.0 + }, "aliases": [ "green chili", "mild green chiles" @@ -2642,22 +2826,38 @@ }, { "key": "ground_coriander", - "fdc_id": null, + "fdc_id": 170922, "legacy_id": null, "display_name": "Ground coriander", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 298.0, + "protein_g": 12.37, + "carbs_g": 54.99, + "fat_g": 17.77, + "fiber_g": 41.9, + "sugar_g": 0.0, + "sodium_mg": 35.0 + }, "aliases": [ "ground coriander" ] }, { "key": "ground_ginger", - "fdc_id": null, + "fdc_id": 170926, "legacy_id": null, "display_name": "Ground ginger", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 335.0, + "protein_g": 8.98, + "carbs_g": 71.62, + "fat_g": 4.24, + "fiber_g": 14.1, + "sugar_g": 3.39, + "sodium_mg": 27.0 + }, "aliases": [ "ground ginger" ] @@ -2685,11 +2885,19 @@ }, { "key": "ground_turmeric", - "fdc_id": null, + "fdc_id": 172231, "legacy_id": null, "display_name": "Ground turmeric", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 312.0, + "protein_g": 9.68, + "carbs_g": 67.14, + "fat_g": 3.25, + "fiber_g": 22.7, + "sugar_g": 3.21, + "sodium_mg": 27.0 + }, "aliases": [ "ground turmeric" ] @@ -2728,11 +2936,19 @@ }, { "key": "hao_you", - "fdc_id": null, + "fdc_id": 2707150, "legacy_id": null, "display_name": "Hao you", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 51.0, + "protein_g": 1.35, + "carbs_g": 10.92, + "fat_g": 0.25, + "fiber_g": 0.3, + "sugar_g": 0.0, + "sodium_mg": 2733.0 + }, "aliases": [ "hao you" ] @@ -2771,11 +2987,19 @@ }, { "key": "hoisin", - "fdc_id": null, + "fdc_id": 2707441, "legacy_id": null, "display_name": "Hoisin", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 220.0, + "protein_g": 3.31, + "carbs_g": 44.08, + "fat_g": 3.39, + "fiber_g": 2.8, + "sugar_g": 27.26, + "sodium_mg": 1615.0 + }, "aliases": [ "hoisin sauce" ] @@ -3113,11 +3337,19 @@ }, { "key": "lemon_juice", - "fdc_id": null, + "fdc_id": 2709180, "legacy_id": null, "display_name": "Lemon juice", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 22.0, + "protein_g": 0.35, + "carbs_g": 6.9, + "fat_g": 0.24, + "fiber_g": 0.3, + "sugar_g": 2.52, + "sodium_mg": 1.0 + }, "aliases": [ "lemon juice" ] @@ -3316,11 +3548,19 @@ }, { "key": "mild_curry_powder", - "fdc_id": null, + "fdc_id": 170924, "legacy_id": null, "display_name": "Mild curry powder", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 325.0, + "protein_g": 14.29, + "carbs_g": 55.83, + "fat_g": 14.01, + "fiber_g": 53.2, + "sugar_g": 2.76, + "sodium_mg": 52.0 + }, "aliases": [ "mild curry powder" ] @@ -3368,11 +3608,19 @@ }, { "key": "millet_flour", - "fdc_id": null, + "fdc_id": 172023, "legacy_id": null, "display_name": "Millet flour", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 382.0, + "protein_g": 10.75, + "carbs_g": 75.12, + "fat_g": 4.25, + "fiber_g": 3.5, + "sugar_g": 1.66, + "sodium_mg": 4.0 + }, "aliases": [ "millet flour" ] @@ -3574,11 +3822,19 @@ }, { "key": "nutmeg", - "fdc_id": null, + "fdc_id": 171326, "legacy_id": null, "display_name": "Nutmeg", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 525.0, + "protein_g": 5.84, + "carbs_g": 49.29, + "fat_g": 36.31, + "fiber_g": 20.8, + "sugar_g": 2.99, + "sodium_mg": 16.0 + }, "aliases": [ "nutmeg" ] @@ -3694,11 +3950,19 @@ }, { "key": "orange_juice", - "fdc_id": null, + "fdc_id": 2709186, "legacy_id": null, "display_name": "Orange juice", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 47.0, + "protein_g": 0.77, + "carbs_g": 10.17, + "fat_g": 0.34, + "fiber_g": 0.3, + "sugar_g": 8.18, + "sodium_mg": 2.0 + }, "aliases": [ "orange juice" ] @@ -3745,11 +4009,19 @@ }, { "key": "orzo", - "fdc_id": null, + "fdc_id": 2708357, "legacy_id": null, "display_name": "Orzo", "category": "vegetable", - "per_100g": null, + "per_100g": { + "kcal": 157.0, + "protein_g": 5.76, + "carbs_g": 30.68, + "fat_g": 0.92, + "fiber_g": 1.8, + "sugar_g": 0.56, + "sodium_mg": 232.0 + }, "aliases": [ "orzo", "risoni" @@ -3777,11 +4049,19 @@ }, { "key": "paprika", - "fdc_id": null, + "fdc_id": 171329, "legacy_id": null, "display_name": "Paprika", "category": "spice", - "per_100g": null, + "per_100g": { + "kcal": 282.0, + "protein_g": 14.14, + "carbs_g": 53.99, + "fat_g": 12.89, + "fiber_g": 34.9, + "sugar_g": 10.34, + "sodium_mg": 68.0 + }, "aliases": [ "paprika" ] @@ -4068,11 +4348,19 @@ }, { "key": "pomegranate_seeds", - "fdc_id": null, + "fdc_id": 169134, "legacy_id": null, "display_name": "Pomegranate seeds", "category": "fruit", - "per_100g": null, + "per_100g": { + "kcal": 83.0, + "protein_g": 1.67, + "carbs_g": 18.7, + "fat_g": 1.17, + "fiber_g": 4.0, + "sugar_g": 13.67, + "sodium_mg": 3.0 + }, "aliases": [ "pomegranate seeds" ] @@ -4119,11 +4407,19 @@ }, { "key": "pork_cutlets", - "fdc_id": null, + "fdc_id": 168230, "legacy_id": null, "display_name": "Pork cutlets", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 143.0, + "protein_g": 21.43, + "carbs_g": 0.0, + "fat_g": 5.66, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 52.0 + }, "aliases": [ "pork cutlets" ] @@ -4384,11 +4680,19 @@ }, { "key": "red_palm_oil", - "fdc_id": null, + "fdc_id": 171015, "legacy_id": null, "display_name": "Red palm oil", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 884.0, + "protein_g": 0.0, + "carbs_g": 0.0, + "fat_g": 100.0, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 0.0 + }, "aliases": [ "red palm oil" ] @@ -4519,11 +4823,19 @@ }, { "key": "rice_flour", - "fdc_id": null, + "fdc_id": 169714, "legacy_id": null, "display_name": "Rice flour", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 366.0, + "protein_g": 5.95, + "carbs_g": 80.13, + "fat_g": 1.42, + "fiber_g": 2.4, + "sugar_g": 0.12, + "sodium_mg": 0.0 + }, "aliases": [ "rice flour" ] @@ -4717,11 +5029,19 @@ }, { "key": "salt_cod", - "fdc_id": null, + "fdc_id": 174190, "legacy_id": null, "display_name": "Salt cod", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 290.0, + "protein_g": 62.82, + "carbs_g": 0.0, + "fat_g": 2.37, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 7027.0 + }, "aliases": [ "salt cod" ] @@ -5008,11 +5328,19 @@ }, { "key": "smoked_sausage", - "fdc_id": null, + "fdc_id": 174585, "legacy_id": null, "display_name": "Smoked sausage", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 320.0, + "protein_g": 12.0, + "carbs_g": 2.42, + "fat_g": 28.73, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 911.0 + }, "aliases": [ "smoked sausage" ] @@ -5115,22 +5443,38 @@ }, { "key": "squid", - "fdc_id": null, + "fdc_id": 174223, "legacy_id": null, "display_name": "Squid", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 92.0, + "protein_g": 15.58, + "carbs_g": 3.08, + "fat_g": 1.38, + "fiber_g": 0.0, + "sugar_g": 0.0, + "sodium_mg": 44.0 + }, "aliases": [ "squid" ] }, { "key": "sriracha", - "fdc_id": null, + "fdc_id": 171186, "legacy_id": null, "display_name": "Sriracha", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 93.0, + "protein_g": 1.93, + "carbs_g": 19.16, + "fat_g": 0.93, + "fiber_g": 2.2, + "sugar_g": 15.11, + "sodium_mg": 2124.0 + }, "aliases": [ "sriracha" ] @@ -5211,11 +5555,19 @@ }, { "key": "swede", - "fdc_id": null, + "fdc_id": 168454, "legacy_id": null, "display_name": "Swede", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 37.0, + "protein_g": 1.08, + "carbs_g": 8.62, + "fat_g": 0.16, + "fiber_g": 2.3, + "sugar_g": 4.46, + "sodium_mg": 12.0 + }, "aliases": [ "swede, peeled and cubed" ] @@ -5297,11 +5649,19 @@ }, { "key": "tamari", - "fdc_id": null, + "fdc_id": 174278, "legacy_id": null, "display_name": "Tamari", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 60.0, + "protein_g": 10.51, + "carbs_g": 5.57, + "fat_g": 0.1, + "fiber_g": 0.8, + "sugar_g": 1.7, + "sodium_mg": 5586.0 + }, "aliases": [ "japanese tamari", "tamari", @@ -5310,11 +5670,19 @@ }, { "key": "tamarind_paste", - "fdc_id": null, + "fdc_id": 167763, "legacy_id": null, "display_name": "Tamarind paste", "category": "condiment", - "per_100g": null, + "per_100g": { + "kcal": 239.0, + "protein_g": 2.8, + "carbs_g": 62.5, + "fat_g": 0.6, + "fiber_g": 5.1, + "sugar_g": 38.8, + "sodium_mg": 28.0 + }, "aliases": [ "tamarind paste", "tamarind paste or rice vinegar" @@ -5507,22 +5875,38 @@ }, { "key": "turmeric", - "fdc_id": null, + "fdc_id": 172231, "legacy_id": null, "display_name": "Turmeric", "category": "spice", - "per_100g": null, + "per_100g": { + "kcal": 312.0, + "protein_g": 9.68, + "carbs_g": 67.14, + "fat_g": 3.25, + "fiber_g": 22.7, + "sugar_g": 3.21, + "sodium_mg": 27.0 + }, "aliases": [ "turmeric" ] }, { "key": "udon_noodles", - "fdc_id": null, + "fdc_id": 2708352, "legacy_id": null, "display_name": "Udon noodles", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 137.0, + "protein_g": 4.51, + "carbs_g": 25.01, + "fat_g": 2.06, + "fiber_g": 1.2, + "sugar_g": 0.4, + "sodium_mg": 236.0 + }, "aliases": [ "udon noodles" ] @@ -5578,11 +5962,19 @@ }, { "key": "vegetable_stock", - "fdc_id": null, + "fdc_id": 171180, "legacy_id": null, "display_name": "Vegetable stock", "category": "condiment", - "per_100g": null, + "per_100g": { + "kcal": 6.0, + "protein_g": 0.23, + "carbs_g": 1.02, + "fat_g": 0.07, + "fiber_g": 0.0, + "sugar_g": 0.57, + "sodium_mg": 303.0 + }, "aliases": [ "veg stock", "vegetable broth", @@ -5773,22 +6165,38 @@ }, { "key": "white_vinegar", - "fdc_id": null, + "fdc_id": 172237, "legacy_id": null, "display_name": "White vinegar", "category": "other", - "per_100g": null, + "per_100g": { + "kcal": 18.0, + "protein_g": 0.0, + "carbs_g": 0.04, + "fat_g": 0.0, + "fiber_g": 0.0, + "sugar_g": 0.04, + "sodium_mg": 2.0 + }, "aliases": [ "white vinegar" ] }, { "key": "whole_wheat_flour", - "fdc_id": null, + "fdc_id": 168893, "legacy_id": null, "display_name": "Whole wheat flour", "category": "grain", - "per_100g": null, + "per_100g": { + "kcal": 340.0, + "protein_g": 13.21, + "carbs_g": 71.97, + "fat_g": 2.5, + "fiber_g": 10.7, + "sugar_g": 0.41, + "sodium_mg": 2.0 + }, "aliases": [ "whole wheat flour" ] @@ -6324,13 +6732,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 412.0, + "kcal": 413.8, "protein_g": 13.2, - "carbs_g": 54.4, + "carbs_g": 55.4, "fat_g": 15.1, "fiber_g": 2.0, - "sodium_mg": 428.9, - "coverage": "partial", + "sodium_mg": 786.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -6849,13 +7257,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 173.9, + "kcal": 174.3, "protein_g": 9.3, - "carbs_g": 30.7, + "carbs_g": 30.9, "fat_g": 6.1, "fiber_g": 4.1, - "sodium_mg": 159.2, - "coverage": "partial", + "sodium_mg": 238.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -8315,13 +8723,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 272.6, - "protein_g": 11.6, - "carbs_g": 30.5, - "fat_g": 11.9, + "kcal": 283.4, + "protein_g": 12.0, + "carbs_g": 32.4, + "fat_g": 12.0, "fiber_g": 3.2, - "sodium_mg": 659.7, - "coverage": "partial", + "sodium_mg": 1205.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -8485,13 +8893,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 306.9, - "protein_g": 25.8, - "carbs_g": 12.3, - "fat_g": 17.3, + "kcal": 436.5, + "protein_g": 34.9, + "carbs_g": 25.0, + "fat_g": 21.6, "fiber_g": 1.3, - "sodium_mg": 443.1, - "coverage": "partial", + "sodium_mg": 957.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -8832,13 +9240,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 807.9, - "protein_g": 45.0, - "carbs_g": 104.6, - "fat_g": 23.2, + "kcal": 923.1, + "protein_g": 53.0, + "carbs_g": 115.9, + "fat_g": 27.0, "fiber_g": 5.9, - "sodium_mg": 472.3, - "coverage": "partial", + "sodium_mg": 929.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -9789,13 +10197,13 @@ "dairy_free": true }, "nutrition_per_serving": { - "kcal": 829.0, - "protein_g": 38.6, - "carbs_g": 152.9, + "kcal": 838.6, + "protein_g": 40.3, + "carbs_g": 153.8, "fat_g": 4.9, - "fiber_g": 3.9, - "sodium_mg": 116.8, - "coverage": "partial", + "fiber_g": 4.1, + "sodium_mg": 1010.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -10805,13 +11213,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 325.0, - "protein_g": 22.9, - "carbs_g": 29.7, - "fat_g": 12.8, + "kcal": 359.5, + "protein_g": 25.4, + "carbs_g": 33.1, + "fat_g": 13.9, "fiber_g": 3.6, - "sodium_mg": 201.4, - "coverage": "partial", + "sodium_mg": 338.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -12649,13 +13057,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 220.6, + "kcal": 221.4, "protein_g": 5.6, - "carbs_g": 29.2, + "carbs_g": 29.6, "fat_g": 9.1, "fiber_g": 2.2, - "sodium_mg": 68.1, - "coverage": "partial", + "sodium_mg": 227.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -13454,13 +13862,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 428.2, - "protein_g": 17.2, - "carbs_g": 73.5, - "fat_g": 10.4, + "kcal": 442.6, + "protein_g": 17.7, + "carbs_g": 75.9, + "fat_g": 10.5, "fiber_g": 18.9, - "sodium_mg": 40.3, - "coverage": "partial", + "sodium_mg": 767.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -13864,13 +14272,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 276.7, - "protein_g": 26.6, - "carbs_g": 27.9, - "fat_g": 6.1, + "kcal": 363.1, + "protein_g": 32.7, + "carbs_g": 36.3, + "fat_g": 9.0, "fiber_g": 2.9, - "sodium_mg": 299.3, - "coverage": "partial", + "sodium_mg": 642.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -14075,12 +14483,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 417.2, - "protein_g": 31.8, - "carbs_g": 29.5, - "fat_g": 18.9, - "fiber_g": 2.0, - "sodium_mg": 183.8, + "kcal": 419.6, + "protein_g": 31.9, + "carbs_g": 30.0, + "fat_g": 19.0, + "fiber_g": 2.2, + "sodium_mg": 184.0, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -14470,13 +14878,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 790.1, - "protein_g": 54.2, - "carbs_g": 45.9, - "fat_g": 44.5, + "kcal": 811.7, + "protein_g": 55.7, + "carbs_g": 48.1, + "fat_g": 45.2, "fiber_g": 13.0, - "sodium_mg": 501.0, - "coverage": "partial", + "sodium_mg": 586.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -14897,13 +15305,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1255.2, - "protein_g": 17.3, - "carbs_g": 165.8, + "kcal": 1262.4, + "protein_g": 18.5, + "carbs_g": 166.5, "fat_g": 60.2, - "fiber_g": 12.3, - "sodium_mg": 1481.4, - "coverage": "partial", + "fiber_g": 12.4, + "sodium_mg": 2151.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -15311,12 +15719,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 406.6, - "protein_g": 28.6, - "carbs_g": 27.9, + "kcal": 408.9, + "protein_g": 28.7, + "carbs_g": 28.4, "fat_g": 20.0, - "fiber_g": 2.5, - "sodium_mg": 211.9, + "fiber_g": 2.7, + "sodium_mg": 212.1, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -15572,13 +15980,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 398.3, - "protein_g": 27.9, - "carbs_g": 46.4, - "fat_g": 11.6, + "kcal": 441.5, + "protein_g": 31.0, + "carbs_g": 50.6, + "fat_g": 13.0, "fiber_g": 4.2, - "sodium_mg": 310.0, - "coverage": "partial", + "sodium_mg": 481.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -16538,13 +16946,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1844.7, - "protein_g": 75.8, - "carbs_g": 326.0, - "fat_g": 27.3, + "kcal": 1866.3, + "protein_g": 76.6, + "carbs_g": 329.7, + "fat_g": 27.6, "fiber_g": 22.2, - "sodium_mg": 2269.3, - "coverage": "partial", + "sodium_mg": 3360.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -16704,13 +17112,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 280.9, + "kcal": 282.1, "protein_g": 16.8, - "carbs_g": 9.2, + "carbs_g": 9.5, "fat_g": 19.3, - "fiber_g": 0.5, - "sodium_mg": 233.2, - "coverage": "partial", + "fiber_g": 0.6, + "sodium_mg": 233.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -16880,13 +17288,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 236.0, - "protein_g": 6.0, - "carbs_g": 23.6, + "kcal": 237.2, + "protein_g": 6.1, + "carbs_g": 23.8, "fat_g": 14.7, - "fiber_g": 4.1, - "sodium_mg": 38.2, - "coverage": "partial", + "fiber_g": 4.2, + "sodium_mg": 38.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -17049,13 +17457,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 236.5, - "protein_g": 8.6, - "carbs_g": 36.4, - "fat_g": 6.8, - "fiber_g": 5.7, - "sodium_mg": 59.9, - "coverage": "partial", + "kcal": 662.7, + "protein_g": 25.2, + "carbs_g": 126.6, + "fat_g": 9.9, + "fiber_g": 19.2, + "sodium_mg": 62.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -17388,13 +17796,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 309.4, - "protein_g": 14.4, - "carbs_g": 45.7, + "kcal": 311.7, + "protein_g": 14.5, + "carbs_g": 46.2, "fat_g": 8.4, - "fiber_g": 7.8, - "sodium_mg": 111.5, - "coverage": "partial", + "fiber_g": 7.9, + "sodium_mg": 111.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -17776,13 +18184,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 412.6, + "kcal": 413.9, "protein_g": 18.0, - "carbs_g": 43.6, + "carbs_g": 43.9, "fat_g": 19.8, "fiber_g": 16.0, - "sodium_mg": 479.1, - "coverage": "partial", + "sodium_mg": 479.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -18178,13 +18586,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 368.7, - "protein_g": 26.1, - "carbs_g": 11.2, + "kcal": 371.0, + "protein_g": 26.2, + "carbs_g": 11.7, "fat_g": 25.1, - "fiber_g": 2.7, - "sodium_mg": 99.5, - "coverage": "partial", + "fiber_g": 2.8, + "sodium_mg": 99.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -18393,12 +18801,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1153.1, - "protein_g": 53.9, - "carbs_g": 170.8, + "kcal": 1155.5, + "protein_g": 54.0, + "carbs_g": 171.3, "fat_g": 32.2, - "fiber_g": 34.1, - "sodium_mg": 192.8, + "fiber_g": 34.2, + "sodium_mg": 193.0, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -19633,13 +20041,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 213.8, - "protein_g": 24.4, - "carbs_g": 4.0, - "fat_g": 10.5, + "kcal": 235.4, + "protein_g": 25.9, + "carbs_g": 6.1, + "fat_g": 11.3, "fiber_g": 0.9, - "sodium_mg": 89.9, - "coverage": "partial", + "sodium_mg": 175.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -19987,13 +20395,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 241.0, - "protein_g": 25.2, - "carbs_g": 11.5, - "fat_g": 10.8, + "kcal": 284.2, + "protein_g": 28.3, + "carbs_g": 15.8, + "fat_g": 12.2, "fiber_g": 2.7, - "sodium_mg": 92.2, - "coverage": "partial", + "sodium_mg": 263.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -21216,13 +21624,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1148.7, - "protein_g": 52.3, - "carbs_g": 163.4, - "fat_g": 36.1, + "kcal": 1155.9, + "protein_g": 52.6, + "carbs_g": 164.7, + "fat_g": 36.2, "fiber_g": 32.9, - "sodium_mg": 110.5, - "coverage": "partial", + "sodium_mg": 474.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -22458,13 +22866,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 505.0, - "protein_g": 34.1, - "carbs_g": 41.8, - "fat_g": 22.9, + "kcal": 548.2, + "protein_g": 37.1, + "carbs_g": 46.1, + "fat_g": 24.4, "fiber_g": 4.9, - "sodium_mg": 917.6, - "coverage": "partial", + "sodium_mg": 1089.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -22770,13 +23178,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 177.9, - "protein_g": 20.2, - "carbs_g": 11.9, - "fat_g": 5.0, + "kcal": 350.7, + "protein_g": 32.3, + "carbs_g": 28.8, + "fat_g": 10.8, "fiber_g": 0.9, - "sodium_mg": 619.5, - "coverage": "partial", + "sodium_mg": 1305.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -23470,13 +23878,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 462.7, - "protein_g": 22.5, - "carbs_g": 38.9, + "kcal": 472.3, + "protein_g": 24.1, + "carbs_g": 39.8, "fat_g": 23.5, - "fiber_g": 2.1, - "sodium_mg": 851.7, - "coverage": "partial", + "fiber_g": 2.2, + "sodium_mg": 1745.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -23682,12 +24090,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 431.0, - "protein_g": 31.1, - "carbs_g": 33.3, - "fat_g": 22.7, + "kcal": 441.8, + "protein_g": 31.5, + "carbs_g": 35.1, + "fat_g": 22.8, "fiber_g": 3.3, - "sodium_mg": 890.1, + "sodium_mg": 1435.5, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -24299,13 +24707,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 282.2, - "protein_g": 4.7, - "carbs_g": 36.2, - "fat_g": 14.7, + "kcal": 296.6, + "protein_g": 5.3, + "carbs_g": 38.6, + "fat_g": 14.8, "fiber_g": 8.3, - "sodium_mg": 1090.5, - "coverage": "partial", + "sodium_mg": 1817.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -25316,13 +25724,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 517.3, + "kcal": 519.7, "protein_g": 28.2, - "carbs_g": 40.6, + "carbs_g": 41.1, "fat_g": 27.9, - "fiber_g": 6.3, - "sodium_mg": 1131.9, - "coverage": "partial", + "fiber_g": 6.5, + "sodium_mg": 1132.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -25560,13 +25968,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 910.3, - "protein_g": 27.6, - "carbs_g": 89.5, - "fat_g": 52.7, - "fiber_g": 20.4, - "sodium_mg": 1635.7, - "coverage": "partial", + "kcal": 912.7, + "protein_g": 27.7, + "carbs_g": 90.0, + "fat_g": 52.8, + "fiber_g": 20.5, + "sodium_mg": 1635.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -26452,12 +26860,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 622.9, - "protein_g": 28.2, - "carbs_g": 53.1, + "kcal": 625.3, + "protein_g": 28.3, + "carbs_g": 53.6, "fat_g": 33.9, - "fiber_g": 9.6, - "sodium_mg": 1148.9, + "fiber_g": 9.8, + "sodium_mg": 1149.2, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -26819,13 +27227,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 375.6, - "protein_g": 7.6, - "carbs_g": 27.1, - "fat_g": 28.6, + "kcal": 397.2, + "protein_g": 8.4, + "carbs_g": 30.8, + "fat_g": 28.8, "fiber_g": 5.7, - "sodium_mg": 1181.6, - "coverage": "partial", + "sodium_mg": 2272.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -27690,12 +28098,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 394.3, - "protein_g": 38.8, - "carbs_g": 14.5, + "kcal": 396.6, + "protein_g": 38.9, + "carbs_g": 15.0, "fat_g": 20.1, - "fiber_g": 3.4, - "sodium_mg": 1014.1, + "fiber_g": 3.6, + "sodium_mg": 1014.3, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -28319,13 +28727,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 365.7, - "protein_g": 30.1, - "carbs_g": 12.9, - "fat_g": 22.2, + "kcal": 387.3, + "protein_g": 31.6, + "carbs_g": 15.0, + "fat_g": 22.9, "fiber_g": 3.1, - "sodium_mg": 1007.0, - "coverage": "partial", + "sodium_mg": 1092.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -29198,13 +29606,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 347.6, - "protein_g": 29.1, - "carbs_g": 32.1, - "fat_g": 11.2, + "kcal": 412.4, + "protein_g": 33.6, + "carbs_g": 38.4, + "fat_g": 13.4, "fiber_g": 4.9, - "sodium_mg": 1554.7, - "coverage": "partial", + "sodium_mg": 1812.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -29438,13 +29846,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 759.4, - "protein_g": 26.0, - "carbs_g": 55.7, - "fat_g": 53.2, - "fiber_g": 14.8, - "sodium_mg": 1298.6, - "coverage": "partial", + "kcal": 761.7, + "protein_g": 26.1, + "carbs_g": 56.2, + "fat_g": 53.3, + "fiber_g": 14.9, + "sodium_mg": 1298.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -30218,13 +30626,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 453.6, - "protein_g": 12.5, - "carbs_g": 39.1, - "fat_g": 29.3, + "kcal": 482.4, + "protein_g": 13.6, + "carbs_g": 44.0, + "fat_g": 29.6, "fiber_g": 5.3, - "sodium_mg": 1300.9, - "coverage": "partial", + "sodium_mg": 2755.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -30630,13 +31038,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1437.2, + "kcal": 1439.6, "protein_g": 64.8, - "carbs_g": 155.1, - "fat_g": 66.3, - "fiber_g": 30.0, - "sodium_mg": 1289.2, - "coverage": "partial", + "carbs_g": 155.6, + "fat_g": 66.4, + "fiber_g": 30.1, + "sodium_mg": 1289.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -31296,13 +31704,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 248.6, - "protein_g": 6.8, - "carbs_g": 37.8, - "fat_g": 8.3, + "kcal": 313.4, + "protein_g": 11.3, + "carbs_g": 44.1, + "fat_g": 10.4, "fiber_g": 4.2, - "sodium_mg": 1365.9, - "coverage": "partial", + "sodium_mg": 1623.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -31513,13 +31921,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 326.7, - "protein_g": 20.0, - "carbs_g": 37.2, - "fat_g": 10.8, + "kcal": 413.1, + "protein_g": 26.1, + "carbs_g": 45.6, + "fat_g": 13.7, "fiber_g": 7.0, - "sodium_mg": 1308.2, - "coverage": "partial", + "sodium_mg": 1651.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -31742,13 +32150,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 410.5, - "protein_g": 9.5, - "carbs_g": 44.3, - "fat_g": 21.9, + "kcal": 626.5, + "protein_g": 24.6, + "carbs_g": 65.5, + "fat_g": 29.1, "fiber_g": 5.5, - "sodium_mg": 1405.7, - "coverage": "partial", + "sodium_mg": 2263.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -33750,13 +34158,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 747.1, - "protein_g": 52.0, - "carbs_g": 64.1, - "fat_g": 32.0, - "fiber_g": 5.8, - "sodium_mg": 2012.4, - "coverage": "partial", + "kcal": 765.0, + "protein_g": 52.3, + "carbs_g": 68.8, + "fat_g": 32.1, + "fiber_g": 6.1, + "sodium_mg": 2014.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -34608,12 +35016,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 997.3, - "protein_g": 52.2, - "carbs_g": 123.9, + "kcal": 999.7, + "protein_g": 52.3, + "carbs_g": 124.4, "fat_g": 35.2, - "fiber_g": 25.0, - "sodium_mg": 1092.9, + "fiber_g": 25.1, + "sodium_mg": 1093.1, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -34803,13 +35211,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 162.5, - "protein_g": 1.1, - "carbs_g": 9.0, - "fat_g": 14.1, - "fiber_g": 1.8, - "sodium_mg": 895.7, - "coverage": "partial", + "kcal": 436.1, + "protein_g": 19.0, + "carbs_g": 57.9, + "fat_g": 15.3, + "fiber_g": 17.3, + "sodium_mg": 2351.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -35023,13 +35431,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 609.9, - "protein_g": 24.2, - "carbs_g": 67.9, - "fat_g": 28.8, + "kcal": 631.5, + "protein_g": 25.0, + "carbs_g": 71.6, + "fat_g": 29.1, "fiber_g": 16.2, - "sodium_mg": 1428.5, - "coverage": "partial", + "sodium_mg": 2519.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -35648,12 +36056,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 713.9, - "protein_g": 24.1, - "carbs_g": 84.8, + "kcal": 716.3, + "protein_g": 24.2, + "carbs_g": 85.3, "fat_g": 32.3, - "fiber_g": 20.8, - "sodium_mg": 1637.1, + "fiber_g": 21.0, + "sodium_mg": 1637.3, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -35851,13 +36259,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 466.0, - "protein_g": 22.2, - "carbs_g": 17.3, + "kcal": 467.3, + "protein_g": 22.3, + "carbs_g": 17.6, "fat_g": 36.1, - "fiber_g": 8.2, - "sodium_mg": 815.9, - "coverage": "partial", + "fiber_g": 8.3, + "sodium_mg": 816.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -36062,13 +36470,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 590.4, - "protein_g": 22.9, - "carbs_g": 71.7, - "fat_g": 27.4, + "kcal": 604.8, + "protein_g": 23.5, + "carbs_g": 74.2, + "fat_g": 27.5, "fiber_g": 27.4, - "sodium_mg": 955.1, - "coverage": "partial", + "sodium_mg": 1682.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -36282,13 +36690,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 831.3, - "protein_g": 66.5, - "carbs_g": 94.2, - "fat_g": 21.4, + "kcal": 960.9, + "protein_g": 75.5, + "carbs_g": 106.9, + "fat_g": 25.7, "fiber_g": 23.2, - "sodium_mg": 1075.6, - "coverage": "partial", + "sodium_mg": 1590.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -37072,13 +37480,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1105.9, - "protein_g": 75.2, - "carbs_g": 82.1, - "fat_g": 55.1, + "kcal": 1192.3, + "protein_g": 81.3, + "carbs_g": 90.6, + "fat_g": 58.0, "fiber_g": 16.3, - "sodium_mg": 1463.4, - "coverage": "partial", + "sodium_mg": 1806.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -37286,13 +37694,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1081.8, - "protein_g": 51.4, - "carbs_g": 162.0, - "fat_g": 29.4, + "kcal": 1103.4, + "protein_g": 52.2, + "carbs_g": 165.7, + "fat_g": 29.6, "fiber_g": 32.4, - "sodium_mg": 944.0, - "coverage": "partial", + "sodium_mg": 2034.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -37507,12 +37915,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1104.4, - "protein_g": 54.2, - "carbs_g": 163.6, - "fat_g": 30.8, + "kcal": 1126.0, + "protein_g": 55.0, + "carbs_g": 167.2, + "fat_g": 31.1, "fiber_g": 36.4, - "sodium_mg": 1006.3, + "sodium_mg": 2097.1, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -37868,13 +38276,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 627.1, - "protein_g": 49.8, - "carbs_g": 29.3, + "kcal": 639.1, + "protein_g": 51.9, + "carbs_g": 30.4, "fat_g": 37.4, - "fiber_g": 5.0, - "sodium_mg": 236.9, - "coverage": "partial", + "fiber_g": 5.2, + "sodium_mg": 1354.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -38298,13 +38706,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 798.2, - "protein_g": 56.9, - "carbs_g": 39.9, - "fat_g": 46.8, + "kcal": 906.2, + "protein_g": 64.5, + "carbs_g": 50.5, + "fat_g": 50.4, "fiber_g": 4.6, - "sodium_mg": 1763.3, - "coverage": "partial", + "sodium_mg": 2192.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -38504,13 +38912,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 768.8, - "protein_g": 54.2, - "carbs_g": 52.1, - "fat_g": 38.4, + "kcal": 833.6, + "protein_g": 58.7, + "carbs_g": 58.5, + "fat_g": 40.5, "fiber_g": 8.7, - "sodium_mg": 1307.2, - "coverage": "partial", + "sodium_mg": 1564.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -38712,13 +39120,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 1202.1, - "protein_g": 50.8, - "carbs_g": 176.1, - "fat_g": 35.9, + "kcal": 1223.7, + "protein_g": 51.6, + "carbs_g": 179.8, + "fat_g": 36.1, "fiber_g": 29.5, - "sodium_mg": 1265.4, - "coverage": "partial", + "sodium_mg": 2356.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -39300,13 +39708,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 358.1, - "protein_g": 12.7, - "carbs_g": 37.9, + "kcal": 362.9, + "protein_g": 13.5, + "carbs_g": 38.3, "fat_g": 22.0, - "fiber_g": 8.7, - "sodium_mg": 107.2, - "coverage": "partial", + "fiber_g": 8.8, + "sodium_mg": 554.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -39716,13 +40124,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 650.5, - "protein_g": 48.1, - "carbs_g": 29.5, - "fat_g": 38.7, + "kcal": 715.3, + "protein_g": 52.7, + "carbs_g": 35.9, + "fat_g": 40.8, "fiber_g": 5.6, - "sodium_mg": 729.9, - "coverage": "partial", + "sodium_mg": 987.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -40191,13 +40599,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 861.0, - "protein_g": 61.8, - "carbs_g": 72.9, - "fat_g": 38.6, + "kcal": 925.8, + "protein_g": 66.4, + "carbs_g": 79.2, + "fat_g": 40.8, "fiber_g": 26.1, - "sodium_mg": 1581.9, - "coverage": "partial", + "sodium_mg": 1839.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -40838,12 +41246,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 522.1, - "protein_g": 35.5, - "carbs_g": 25.9, + "kcal": 526.9, + "protein_g": 36.4, + "carbs_g": 26.3, "fat_g": 32.3, "fiber_g": 5.4, - "sodium_mg": 157.3, + "sodium_mg": 604.2, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -41451,13 +41859,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 585.2, - "protein_g": 25.6, - "carbs_g": 75.7, - "fat_g": 22.4, + "kcal": 714.8, + "protein_g": 34.6, + "carbs_g": 88.4, + "fat_g": 26.7, "fiber_g": 19.9, - "sodium_mg": 1481.2, - "coverage": "partial", + "sodium_mg": 1996.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -41643,13 +42051,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 348.9, - "protein_g": 26.2, - "carbs_g": 21.6, + "kcal": 353.7, + "protein_g": 27.0, + "carbs_g": 22.1, "fat_g": 16.9, - "fiber_g": 1.5, - "sodium_mg": 882.6, - "coverage": "partial", + "fiber_g": 1.6, + "sodium_mg": 1329.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -41856,13 +42264,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 446.6, - "protein_g": 49.8, - "carbs_g": 31.0, + "kcal": 453.8, + "protein_g": 51.1, + "carbs_g": 31.6, "fat_g": 15.6, - "fiber_g": 7.0, - "sodium_mg": 188.4, - "coverage": "partial", + "fiber_g": 7.1, + "sodium_mg": 858.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -42071,12 +42479,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 780.1, - "protein_g": 23.5, - "carbs_g": 114.5, + "kcal": 787.3, + "protein_g": 24.8, + "carbs_g": 115.2, "fat_g": 26.8, - "fiber_g": 6.9, - "sodium_mg": 618.7, + "fiber_g": 7.0, + "sodium_mg": 1289.1, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -42285,13 +42693,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 484.0, - "protein_g": 31.7, - "carbs_g": 49.7, - "fat_g": 18.6, + "kcal": 570.4, + "protein_g": 37.7, + "carbs_g": 58.2, + "fat_g": 21.4, "fiber_g": 8.9, - "sodium_mg": 996.9, - "coverage": "partial", + "sodium_mg": 1340.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -42682,13 +43090,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 963.1, - "protein_g": 42.7, - "carbs_g": 134.9, + "kcal": 972.7, + "protein_g": 44.4, + "carbs_g": 135.8, "fat_g": 32.8, - "fiber_g": 27.7, - "sodium_mg": 735.4, - "coverage": "partial", + "fiber_g": 27.8, + "sodium_mg": 1629.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -42884,13 +43292,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 402.4, - "protein_g": 12.8, - "carbs_g": 44.3, - "fat_g": 22.8, + "kcal": 416.8, + "protein_g": 13.4, + "carbs_g": 46.7, + "fat_g": 23.0, "fiber_g": 7.5, - "sodium_mg": 1007.4, - "coverage": "partial", + "sodium_mg": 1734.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -44939,13 +45347,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 882.2, - "protein_g": 55.9, - "carbs_g": 60.3, - "fat_g": 47.8, + "kcal": 947.0, + "protein_g": 60.5, + "carbs_g": 66.6, + "fat_g": 49.9, "fiber_g": 9.6, - "sodium_mg": 1099.4, - "coverage": "partial", + "sodium_mg": 1356.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -47590,13 +47998,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 564.6, - "protein_g": 43.0, - "carbs_g": 14.5, - "fat_g": 37.6, + "kcal": 607.8, + "protein_g": 46.0, + "carbs_g": 18.7, + "fat_g": 39.1, "fiber_g": 3.8, - "sodium_mg": 740.4, - "coverage": "partial", + "sodium_mg": 912.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -48361,13 +48769,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 170.0, - "protein_g": 5.9, - "carbs_g": 34.7, - "fat_g": 0.9, + "kcal": 213.2, + "protein_g": 9.0, + "carbs_g": 38.9, + "fat_g": 2.4, "fiber_g": 3.6, - "sodium_mg": 219.7, - "coverage": "partial", + "sodium_mg": 391.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -49222,13 +49630,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 553.6, - "protein_g": 34.5, - "carbs_g": 61.6, - "fat_g": 17.8, + "kcal": 685.0, + "protein_g": 43.6, + "carbs_g": 75.3, + "fat_g": 22.1, "fiber_g": 5.4, - "sodium_mg": 228.8, - "coverage": "partial", + "sodium_mg": 1104.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -49370,13 +49778,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 626.6, - "protein_g": 27.3, - "carbs_g": 96.7, - "fat_g": 16.7, + "kcal": 648.2, + "protein_g": 28.1, + "carbs_g": 100.4, + "fat_g": 17.0, "fiber_g": 16.0, - "sodium_mg": 21.7, - "coverage": "partial", + "sodium_mg": 1112.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -49846,13 +50254,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 667.5, - "protein_g": 23.0, - "carbs_g": 62.3, - "fat_g": 37.8, + "kcal": 681.9, + "protein_g": 23.5, + "carbs_g": 64.8, + "fat_g": 38.0, "fiber_g": 15.7, - "sodium_mg": 536.4, - "coverage": "partial", + "sodium_mg": 1263.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -50133,13 +50541,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 162.4, - "protein_g": 9.5, - "carbs_g": 15.0, - "fat_g": 7.8, - "fiber_g": 3.4, - "sodium_mg": 397.3, - "coverage": "partial", + "kcal": 319.4, + "protein_g": 15.3, + "carbs_g": 45.7, + "fat_g": 8.7, + "fiber_g": 5.2, + "sodium_mg": 629.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -50296,13 +50704,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 284.2, - "protein_g": 25.7, - "carbs_g": 8.4, - "fat_g": 17.2, - "fiber_g": 1.9, - "sodium_mg": 425.8, - "coverage": "partial", + "kcal": 289.8, + "protein_g": 25.9, + "carbs_g": 9.6, + "fat_g": 17.3, + "fiber_g": 2.2, + "sodium_mg": 426.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -51169,12 +51577,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 54.6, - "protein_g": 6.5, - "carbs_g": 4.5, + "kcal": 57.9, + "protein_g": 6.6, + "carbs_g": 5.2, "fat_g": 1.4, - "fiber_g": 0.4, - "sodium_mg": 21.9, + "fiber_g": 0.5, + "sodium_mg": 22.2, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -51336,12 +51744,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 316.0, + "kcal": 317.7, "protein_g": 29.1, - "carbs_g": 25.7, + "carbs_g": 26.1, "fat_g": 10.0, "fiber_g": 1.9, - "sodium_mg": 344.0, + "sodium_mg": 344.1, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -51482,12 +51890,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 230.5, - "protein_g": 6.9, - "carbs_g": 16.2, + "kcal": 232.2, + "protein_g": 7.0, + "carbs_g": 16.6, "fat_g": 17.3, - "fiber_g": 0.0, - "sodium_mg": 85.2, + "fiber_g": 0.1, + "sodium_mg": 85.4, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -51637,12 +52045,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 357.8, - "protein_g": 6.5, - "carbs_g": 37.6, + "kcal": 360.1, + "protein_g": 6.6, + "carbs_g": 38.1, "fat_g": 21.8, - "fiber_g": 6.7, - "sodium_mg": 56.9, + "fiber_g": 6.8, + "sodium_mg": 57.1, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -51789,13 +52197,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 432.0, - "protein_g": 4.7, - "carbs_g": 15.2, - "fat_g": 43.1, - "fiber_g": 5.1, - "sodium_mg": 28.6, - "coverage": "partial", + "kcal": 442.1, + "protein_g": 5.0, + "carbs_g": 17.3, + "fat_g": 43.2, + "fiber_g": 5.5, + "sodium_mg": 29.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -51943,13 +52351,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 214.2, - "protein_g": 20.6, - "carbs_g": 24.9, - "fat_g": 2.9, + "kcal": 387.0, + "protein_g": 32.7, + "carbs_g": 41.9, + "fat_g": 8.6, "fiber_g": 1.4, - "sodium_mg": 933.7, - "coverage": "partial", + "sodium_mg": 1620.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -52816,13 +53224,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 58.0, - "protein_g": 4.3, - "carbs_g": 7.8, - "fat_g": 1.7, - "fiber_g": 1.6, - "sodium_mg": 75.6, - "coverage": "partial", + "kcal": 229.4, + "protein_g": 10.6, + "carbs_g": 41.0, + "fat_g": 2.8, + "fiber_g": 3.4, + "sodium_mg": 1034.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -53528,13 +53936,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 375.3, - "protein_g": 25.1, - "carbs_g": 66.1, - "fat_g": 3.3, - "fiber_g": 13.9, - "sodium_mg": 43.4, - "coverage": "partial", + "kcal": 377.6, + "protein_g": 25.2, + "carbs_g": 66.6, + "fat_g": 3.4, + "fiber_g": 14.0, + "sodium_mg": 43.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -53930,13 +54338,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 49.7, - "protein_g": 1.1, - "carbs_g": 10.9, - "fat_g": 0.1, + "kcal": 222.5, + "protein_g": 13.2, + "carbs_g": 27.8, + "fat_g": 5.9, "fiber_g": 0.8, - "sodium_mg": 106.8, - "coverage": "partial", + "sodium_mg": 793.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -54457,13 +54865,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 388.4, - "protein_g": 35.5, - "carbs_g": 35.0, - "fat_g": 12.1, + "kcal": 431.6, + "protein_g": 38.5, + "carbs_g": 39.2, + "fat_g": 13.5, "fiber_g": 9.2, - "sodium_mg": 354.5, - "coverage": "partial", + "sodium_mg": 526.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -55434,12 +55842,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 441.5, - "protein_g": 23.9, - "carbs_g": 42.3, + "kcal": 444.9, + "protein_g": 24.0, + "carbs_g": 43.0, "fat_g": 19.3, - "fiber_g": 5.6, - "sodium_mg": 230.4, + "fiber_g": 5.7, + "sodium_mg": 230.7, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -55575,13 +55983,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 308.8, - "protein_g": 15.1, - "carbs_g": 9.3, + "kcal": 311.1, + "protein_g": 15.2, + "carbs_g": 9.8, "fat_g": 24.4, - "fiber_g": 2.9, - "sodium_mg": 157.5, - "coverage": "partial", + "fiber_g": 3.0, + "sodium_mg": 157.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -56907,13 +57315,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 220.1, - "protein_g": 21.2, - "carbs_g": 27.3, - "fat_g": 4.1, + "kcal": 392.9, + "protein_g": 33.3, + "carbs_g": 44.2, + "fat_g": 9.8, "fiber_g": 4.9, - "sodium_mg": 87.1, - "coverage": "partial", + "sodium_mg": 773.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -58069,13 +58477,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 361.1, - "protein_g": 17.5, - "carbs_g": 54.6, - "fat_g": 9.5, + "kcal": 382.7, + "protein_g": 18.3, + "carbs_g": 58.2, + "fat_g": 9.8, "fiber_g": 12.1, - "sodium_mg": 411.8, - "coverage": "partial", + "sodium_mg": 1502.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -58636,12 +59044,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 274.8, - "protein_g": 27.2, - "carbs_g": 3.7, + "kcal": 278.2, + "protein_g": 27.3, + "carbs_g": 4.4, "fat_g": 17.4, - "fiber_g": 0.8, - "sodium_mg": 429.6, + "fiber_g": 1.0, + "sodium_mg": 429.8, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -58777,12 +59185,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 953.2, - "protein_g": 50.7, - "carbs_g": 161.1, - "fat_g": 14.9, - "fiber_g": 31.7, - "sodium_mg": 64.6, + "kcal": 956.5, + "protein_g": 50.8, + "carbs_g": 161.8, + "fat_g": 15.0, + "fiber_g": 31.8, + "sodium_mg": 64.9, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -59051,13 +59459,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 309.3, - "protein_g": 16.0, - "carbs_g": 59.8, - "fat_g": 1.3, - "fiber_g": 9.4, - "sodium_mg": 115.2, - "coverage": "partial", + "kcal": 311.6, + "protein_g": 16.1, + "carbs_g": 60.3, + "fat_g": 1.4, + "fiber_g": 9.6, + "sodium_mg": 115.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -59590,13 +59998,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 364.8, - "protein_g": 23.5, - "carbs_g": 66.1, - "fat_g": 2.4, + "kcal": 393.6, + "protein_g": 24.6, + "carbs_g": 71.0, + "fat_g": 2.8, "fiber_g": 12.0, - "sodium_mg": 29.6, - "coverage": "partial", + "sodium_mg": 1484.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -60369,13 +60777,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 88.7, - "protein_g": 6.4, - "carbs_g": 4.5, - "fat_g": 4.8, + "kcal": 218.3, + "protein_g": 15.5, + "carbs_g": 17.2, + "fat_g": 9.1, "fiber_g": 0.2, - "sodium_mg": 72.3, - "coverage": "partial", + "sodium_mg": 587.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -60632,13 +61040,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 397.0, - "protein_g": 31.9, - "carbs_g": 18.4, - "fat_g": 21.2, + "kcal": 440.2, + "protein_g": 34.9, + "carbs_g": 22.7, + "fat_g": 22.6, "fiber_g": 2.6, - "sodium_mg": 742.7, - "coverage": "partial", + "sodium_mg": 914.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -60902,13 +61310,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 170.2, - "protein_g": 19.7, - "carbs_g": 15.4, - "fat_g": 2.8, + "kcal": 343.0, + "protein_g": 31.8, + "carbs_g": 32.4, + "fat_g": 8.6, "fiber_g": 2.1, - "sodium_mg": 211.8, - "coverage": "partial", + "sodium_mg": 898.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -62023,13 +62431,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 210.0, - "protein_g": 23.6, - "carbs_g": 22.2, - "fat_g": 3.1, - "fiber_g": 3.2, - "sodium_mg": 923.5, - "coverage": "partial", + "kcal": 213.4, + "protein_g": 23.7, + "carbs_g": 22.9, + "fat_g": 3.2, + "fiber_g": 3.3, + "sodium_mg": 923.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -62308,13 +62716,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 379.2, - "protein_g": 30.2, - "carbs_g": 26.3, + "kcal": 382.6, + "protein_g": 30.3, + "carbs_g": 27.0, "fat_g": 20.4, - "fiber_g": 2.7, - "sodium_mg": 835.4, - "coverage": "partial", + "fiber_g": 2.8, + "sodium_mg": 835.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -62452,12 +62860,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 227.1, - "protein_g": 20.0, - "carbs_g": 5.7, - "fat_g": 13.8, - "fiber_g": 1.4, - "sodium_mg": 78.3, + "kcal": 230.5, + "protein_g": 20.1, + "carbs_g": 6.4, + "fat_g": 13.9, + "fiber_g": 1.6, + "sodium_mg": 78.6, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -62577,13 +62985,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 416.0, + "kcal": 418.3, "protein_g": 24.3, - "carbs_g": 62.7, - "fat_g": 9.3, - "fiber_g": 11.6, - "sodium_mg": 34.8, - "coverage": "partial", + "carbs_g": 63.2, + "fat_g": 9.4, + "fiber_g": 11.8, + "sodium_mg": 35.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -63273,13 +63681,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 389.9, - "protein_g": 29.1, - "carbs_g": 29.8, - "fat_g": 17.2, + "kcal": 476.3, + "protein_g": 35.1, + "carbs_g": 38.2, + "fat_g": 20.1, "fiber_g": 3.9, - "sodium_mg": 635.3, - "coverage": "partial", + "sodium_mg": 978.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -64395,13 +64803,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 233.0, - "protein_g": 22.0, - "carbs_g": 28.4, - "fat_g": 4.3, + "kcal": 362.6, + "protein_g": 31.0, + "carbs_g": 41.1, + "fat_g": 8.7, "fiber_g": 5.2, - "sodium_mg": 91.2, - "coverage": "partial", + "sodium_mg": 606.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -66241,13 +66649,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 304.4, - "protein_g": 21.6, - "carbs_g": 45.4, - "fat_g": 3.0, - "fiber_g": 1.9, - "sodium_mg": 540.5, - "coverage": "partial", + "kcal": 480.6, + "protein_g": 33.7, + "carbs_g": 63.0, + "fat_g": 8.8, + "fiber_g": 2.0, + "sodium_mg": 1227.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -66536,12 +66944,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 578.8, - "protein_g": 43.7, - "carbs_g": 80.4, - "fat_g": 10.2, - "fiber_g": 16.1, - "sodium_mg": 99.0, + "kcal": 582.1, + "protein_g": 43.8, + "carbs_g": 81.1, + "fat_g": 10.3, + "fiber_g": 16.2, + "sodium_mg": 99.3, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -67759,13 +68167,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 423.7, - "protein_g": 29.3, - "carbs_g": 40.9, - "fat_g": 17.2, + "kcal": 553.3, + "protein_g": 38.4, + "carbs_g": 53.6, + "fat_g": 21.6, "fiber_g": 7.0, - "sodium_mg": 479.8, - "coverage": "partial", + "sodium_mg": 994.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -68010,13 +68418,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 25.3, - "protein_g": 1.2, - "carbs_g": 5.1, + "kcal": 27.7, + "protein_g": 1.3, + "carbs_g": 5.6, "fat_g": 0.5, - "fiber_g": 1.5, - "sodium_mg": 7.7, - "coverage": "partial", + "fiber_g": 1.7, + "sodium_mg": 7.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -69410,13 +69818,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 228.5, - "protein_g": 21.4, - "carbs_g": 30.4, - "fat_g": 4.1, + "kcal": 401.3, + "protein_g": 33.5, + "carbs_g": 47.3, + "fat_g": 9.9, "fiber_g": 5.6, - "sodium_mg": 87.7, - "coverage": "partial", + "sodium_mg": 774.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -69954,13 +70362,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 301.8, - "protein_g": 24.1, - "carbs_g": 19.0, - "fat_g": 13.9, + "kcal": 474.6, + "protein_g": 36.2, + "carbs_g": 35.9, + "fat_g": 19.6, "fiber_g": 2.0, - "sodium_mg": 258.6, - "coverage": "partial", + "sodium_mg": 945.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -70233,13 +70641,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 72.5, - "protein_g": 6.3, - "carbs_g": 0.6, - "fat_g": 4.8, + "kcal": 203.7, + "protein_g": 15.5, + "carbs_g": 13.6, + "fat_g": 9.1, "fiber_g": 0.1, - "sodium_mg": 71.5, - "coverage": "partial", + "sodium_mg": 586.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -70755,13 +71163,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 59.4, - "protein_g": 3.5, - "carbs_g": 11.8, + "kcal": 61.7, + "protein_g": 3.6, + "carbs_g": 12.3, "fat_g": 0.5, - "fiber_g": 4.8, - "sodium_mg": 22.4, - "coverage": "partial", + "fiber_g": 5.0, + "sodium_mg": 22.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -72021,13 +72429,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 93.2, - "protein_g": 12.4, - "carbs_g": 5.3, + "kcal": 97.9, + "protein_g": 12.5, + "carbs_g": 6.3, "fat_g": 2.6, - "fiber_g": 0.1, - "sodium_mg": 43.3, - "coverage": "partial", + "fiber_g": 0.4, + "sodium_mg": 43.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -72835,13 +73243,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 203.2, + "kcal": 206.5, "protein_g": 23.0, - "carbs_g": 21.0, + "carbs_g": 21.7, "fat_g": 3.1, - "fiber_g": 3.1, - "sodium_mg": 699.6, - "coverage": "partial", + "fiber_g": 3.2, + "sodium_mg": 699.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -73103,12 +73511,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 305.8, + "kcal": 309.1, "protein_g": 21.0, - "carbs_g": 17.9, + "carbs_g": 18.6, "fat_g": 17.1, - "fiber_g": 2.0, - "sodium_mg": 232.0, + "fiber_g": 2.2, + "sodium_mg": 232.3, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -74765,13 +75173,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 298.3, - "protein_g": 16.6, - "carbs_g": 44.2, - "fat_g": 6.0, + "kcal": 329.0, + "protein_g": 21.8, + "carbs_g": 45.3, + "fat_g": 6.4, "fiber_g": 3.2, - "sodium_mg": 984.8, - "coverage": "partial", + "sodium_mg": 999.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -77013,13 +77421,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 952.2, - "protein_g": 39.7, - "carbs_g": 112.7, + "kcal": 954.9, + "protein_g": 39.8, + "carbs_g": 113.3, "fat_g": 41.4, "fiber_g": 14.4, - "sodium_mg": 2101.9, - "coverage": "partial", + "sodium_mg": 2247.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -77283,12 +77691,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 81.7, - "protein_g": 7.6, - "carbs_g": 3.4, - "fat_g": 5.0, - "fiber_g": 0.6, - "sodium_mg": 599.5, + "kcal": 227.8, + "protein_g": 12.4, + "carbs_g": 30.1, + "fat_g": 7.2, + "fiber_g": 1.9, + "sodium_mg": 851.2, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -77986,13 +78394,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 317.4, - "protein_g": 22.4, - "carbs_g": 14.6, - "fat_g": 21.3, - "fiber_g": 1.4, - "sodium_mg": 601.1, - "coverage": "partial", + "kcal": 326.4, + "protein_g": 22.7, + "carbs_g": 16.7, + "fat_g": 21.4, + "fiber_g": 2.2, + "sodium_mg": 611.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -78984,12 +79392,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 297.2, - "protein_g": 32.8, - "carbs_g": 10.8, - "fat_g": 13.9, - "fiber_g": 1.9, - "sodium_mg": 587.0, + "kcal": 303.6, + "protein_g": 33.1, + "carbs_g": 12.2, + "fat_g": 14.0, + "fiber_g": 2.5, + "sodium_mg": 588.8, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -79502,13 +79910,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 367.9, + "kcal": 370.0, "protein_g": 40.5, - "carbs_g": 12.9, + "carbs_g": 13.3, "fat_g": 18.0, "fiber_g": 2.7, - "sodium_mg": 1163.9, - "coverage": "partial", + "sodium_mg": 1273.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -79959,12 +80367,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 267.6, - "protein_g": 32.1, - "carbs_g": 7.5, - "fat_g": 11.4, - "fiber_g": 0.1, - "sodium_mg": 479.7, + "kcal": 288.8, + "protein_g": 32.4, + "carbs_g": 11.8, + "fat_g": 11.8, + "fiber_g": 0.4, + "sodium_mg": 634.8, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -80885,12 +81293,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 406.6, - "protein_g": 35.3, - "carbs_g": 14.7, - "fat_g": 23.0, - "fiber_g": 0.7, - "sodium_mg": 1248.0, + "kcal": 411.5, + "protein_g": 35.4, + "carbs_g": 15.8, + "fat_g": 23.1, + "fiber_g": 1.1, + "sodium_mg": 1249.4, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -81034,13 +81442,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 460.3, - "protein_g": 47.0, - "carbs_g": 3.1, - "fat_g": 27.7, - "fiber_g": 0.6, - "sodium_mg": 949.2, - "coverage": "partial", + "kcal": 465.7, + "protein_g": 47.2, + "carbs_g": 4.2, + "fat_g": 27.8, + "fiber_g": 1.1, + "sodium_mg": 950.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -81582,13 +81990,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 96.9, - "protein_g": 2.8, - "carbs_g": 13.0, - "fat_g": 5.1, - "fiber_g": 1.7, + "kcal": 151.8, + "protein_g": 3.7, + "carbs_g": 25.0, + "fat_g": 5.3, + "fiber_g": 2.0, "sodium_mg": 293.2, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -81939,13 +82347,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 328.1, - "protein_g": 23.0, - "carbs_g": 39.3, - "fat_g": 8.7, - "fiber_g": 2.9, - "sodium_mg": 1581.4, - "coverage": "partial", + "kcal": 355.0, + "protein_g": 23.3, + "carbs_g": 46.3, + "fat_g": 8.8, + "fiber_g": 3.5, + "sodium_mg": 1584.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -82469,12 +82877,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 405.0, + "kcal": 407.7, "protein_g": 33.8, - "carbs_g": 35.7, + "carbs_g": 36.2, "fat_g": 13.9, - "fiber_g": 2.0, - "sodium_mg": 906.8, + "fiber_g": 2.1, + "sodium_mg": 1052.6, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -82842,12 +83250,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 475.0, - "protein_g": 9.4, - "carbs_g": 52.2, - "fat_g": 28.0, - "fiber_g": 7.2, - "sodium_mg": 864.4, + "kcal": 489.3, + "protein_g": 9.6, + "carbs_g": 55.9, + "fat_g": 28.1, + "fiber_g": 7.5, + "sodium_mg": 866.1, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -83027,12 +83435,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 408.3, - "protein_g": 25.8, - "carbs_g": 42.9, - "fat_g": 17.1, - "fiber_g": 3.0, - "sodium_mg": 810.2, + "kcal": 420.0, + "protein_g": 26.0, + "carbs_g": 45.3, + "fat_g": 17.2, + "fiber_g": 3.2, + "sodium_mg": 896.3, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -83894,13 +84302,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 372.9, - "protein_g": 33.9, - "carbs_g": 46.7, - "fat_g": 4.7, - "fiber_g": 3.2, - "sodium_mg": 1139.0, - "coverage": "partial", + "kcal": 384.6, + "protein_g": 34.0, + "carbs_g": 49.1, + "fat_g": 4.9, + "fiber_g": 3.3, + "sodium_mg": 1225.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -84036,13 +84444,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 192.7, - "protein_g": 3.4, - "carbs_g": 15.7, - "fat_g": 15.1, + "kcal": 206.2, + "protein_g": 3.9, + "carbs_g": 18.0, + "fat_g": 15.2, "fiber_g": 3.5, - "sodium_mg": 12.7, - "coverage": "partial", + "sodium_mg": 694.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -84220,13 +84628,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 498.8, - "protein_g": 38.3, - "carbs_g": 7.5, + "kcal": 501.2, + "protein_g": 38.4, + "carbs_g": 8.0, "fat_g": 36.6, - "fiber_g": 3.0, - "sodium_mg": 940.5, - "coverage": "partial", + "fiber_g": 3.2, + "sodium_mg": 940.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -84395,12 +84803,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 28.2, + "kcal": 98.4, "protein_g": 1.4, - "carbs_g": 6.2, + "carbs_g": 23.4, "fat_g": 0.1, - "fiber_g": 2.0, - "sodium_mg": 252.5, + "fiber_g": 2.1, + "sodium_mg": 254.5, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -86023,13 +86431,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 193.5, - "protein_g": 17.2, - "carbs_g": 8.9, - "fat_g": 10.9, - "fiber_g": 2.7, - "sodium_mg": 1416.7, - "coverage": "partial", + "kcal": 440.6, + "protein_g": 21.3, + "carbs_g": 63.0, + "fat_g": 11.9, + "fiber_g": 4.6, + "sodium_mg": 1417.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -86581,13 +86989,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 493.7, - "protein_g": 25.4, - "carbs_g": 45.7, + "kcal": 497.6, + "protein_g": 25.5, + "carbs_g": 46.5, "fat_g": 23.8, - "fiber_g": 3.9, - "sodium_mg": 1346.9, - "coverage": "partial", + "fiber_g": 4.2, + "sodium_mg": 1347.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -87166,13 +87574,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 188.8, - "protein_g": 10.5, - "carbs_g": 1.5, - "fat_g": 15.4, - "fiber_g": 0.3, - "sodium_mg": 607.0, - "coverage": "partial", + "kcal": 460.8, + "protein_g": 21.2, + "carbs_g": 53.4, + "fat_g": 17.8, + "fiber_g": 2.5, + "sodium_mg": 1209.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -87683,13 +88091,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 811.1, - "protein_g": 42.9, - "carbs_g": 77.1, - "fat_g": 36.8, - "fiber_g": 2.7, - "sodium_mg": 587.0, - "coverage": "partial", + "kcal": 822.6, + "protein_g": 43.4, + "carbs_g": 79.6, + "fat_g": 37.2, + "fiber_g": 3.7, + "sodium_mg": 588.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -87833,13 +88241,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 309.4, - "protein_g": 14.2, - "carbs_g": 40.7, + "kcal": 310.7, + "protein_g": 14.3, + "carbs_g": 41.1, "fat_g": 11.2, - "fiber_g": 7.9, + "fiber_g": 8.0, "sodium_mg": 16.7, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -88157,13 +88565,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 308.6, - "protein_g": 36.7, - "carbs_g": 8.7, - "fat_g": 13.4, - "fiber_g": 0.4, - "sodium_mg": 150.6, - "coverage": "partial", + "kcal": 314.7, + "protein_g": 36.9, + "carbs_g": 10.1, + "fat_g": 13.6, + "fiber_g": 1.0, + "sodium_mg": 151.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -88482,13 +88890,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 142.7, + "kcal": 143.7, "protein_g": 6.0, - "carbs_g": 19.6, + "carbs_g": 19.9, "fat_g": 6.4, - "fiber_g": 1.8, + "fiber_g": 1.9, "sodium_mg": 34.5, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -88653,13 +89061,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 231.7, + "kcal": 233.8, "protein_g": 6.1, - "carbs_g": 34.7, + "carbs_g": 35.3, "fat_g": 9.2, - "fiber_g": 6.4, - "sodium_mg": 19.9, - "coverage": "partial", + "fiber_g": 6.5, + "sodium_mg": 20.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -88801,13 +89209,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 139.8, - "protein_g": 3.1, - "carbs_g": 10.9, + "kcal": 141.3, + "protein_g": 3.2, + "carbs_g": 11.4, "fat_g": 10.5, "fiber_g": 4.8, - "sodium_mg": 5.3, - "coverage": "partial", + "sodium_mg": 5.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -88928,13 +89336,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 708.8, + "kcal": 710.5, "protein_g": 64.2, - "carbs_g": 2.0, + "carbs_g": 2.5, "fat_g": 47.5, "fiber_g": 0.6, - "sodium_mg": 904.7, - "coverage": "partial", + "sodium_mg": 904.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -89268,13 +89676,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 334.3, - "protein_g": 17.0, - "carbs_g": 20.8, - "fat_g": 21.6, - "fiber_g": 5.1, - "sodium_mg": 373.2, - "coverage": "partial", + "kcal": 339.0, + "protein_g": 17.2, + "carbs_g": 21.7, + "fat_g": 21.8, + "fiber_g": 5.6, + "sodium_mg": 374.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -89455,12 +89863,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 146.9, + "kcal": 148.8, "protein_g": 2.3, - "carbs_g": 10.9, + "carbs_g": 11.5, "fat_g": 11.2, "fiber_g": 2.2, - "sodium_mg": 61.6, + "sodium_mg": 61.7, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -89573,9 +89981,9 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 82.5, + "kcal": 83.4, "protein_g": 0.0, - "carbs_g": 0.0, + "carbs_g": 0.3, "fat_g": 9.3, "fiber_g": 0.0, "sodium_mg": 0.2, @@ -89897,13 +90305,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 257.3, + "kcal": 258.8, "protein_g": 5.6, - "carbs_g": 38.5, + "carbs_g": 39.0, "fat_g": 10.0, "fiber_g": 6.0, - "sodium_mg": 8.7, - "coverage": "partial", + "sodium_mg": 8.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -90193,13 +90601,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 443.8, + "kcal": 444.4, "protein_g": 15.8, - "carbs_g": 60.5, + "carbs_g": 60.7, "fat_g": 15.0, "fiber_g": 2.5, "sodium_mg": 404.5, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -91209,13 +91617,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 191.1, + "kcal": 192.0, "protein_g": 10.9, - "carbs_g": 34.5, + "carbs_g": 34.7, "fat_g": 2.6, - "fiber_g": 5.5, + "fiber_g": 5.6, "sodium_mg": 64.1, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -91356,13 +91764,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 203.4, + "kcal": 204.0, "protein_g": 8.3, - "carbs_g": 20.6, - "fat_g": 10.2, + "carbs_g": 20.8, + "fat_g": 10.3, "fiber_g": 3.2, "sodium_mg": 340.7, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -91522,13 +91930,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 431.4, - "protein_g": 21.0, - "carbs_g": 19.6, - "fat_g": 29.7, - "fiber_g": 1.2, - "sodium_mg": 646.7, - "coverage": "partial", + "kcal": 439.0, + "protein_g": 21.3, + "carbs_g": 21.3, + "fat_g": 30.0, + "fiber_g": 2.0, + "sodium_mg": 648.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -91696,13 +92104,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 580.0, - "protein_g": 27.4, - "carbs_g": 103.7, - "fat_g": 7.8, - "fiber_g": 17.1, - "sodium_mg": 320.2, - "coverage": "partial", + "kcal": 585.7, + "protein_g": 27.7, + "carbs_g": 104.8, + "fat_g": 8.0, + "fiber_g": 17.8, + "sodium_mg": 321.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -92001,12 +92409,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 79.9, - "protein_g": 5.3, - "carbs_g": 9.0, - "fat_g": 3.2, - "fiber_g": 2.5, - "sodium_mg": 49.6, + "kcal": 84.1, + "protein_g": 5.5, + "carbs_g": 9.8, + "fat_g": 3.4, + "fiber_g": 3.0, + "sodium_mg": 50.7, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -92172,13 +92580,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 131.6, - "protein_g": 2.5, - "carbs_g": 12.5, - "fat_g": 9.1, - "fiber_g": 5.1, - "sodium_mg": 11.4, - "coverage": "partial", + "kcal": 134.9, + "protein_g": 2.7, + "carbs_g": 13.2, + "fat_g": 9.3, + "fiber_g": 5.5, + "sodium_mg": 12.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -92329,13 +92737,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 334.5, - "protein_g": 13.2, - "carbs_g": 48.5, + "kcal": 335.7, + "protein_g": 13.3, + "carbs_g": 48.9, "fat_g": 12.2, "fiber_g": 9.3, - "sodium_mg": 297.9, - "coverage": "partial", + "sodium_mg": 298.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -92473,13 +92881,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 168.9, - "protein_g": 6.4, - "carbs_g": 14.9, - "fat_g": 11.4, - "fiber_g": 5.8, - "sodium_mg": 22.0, - "coverage": "partial", + "kcal": 172.4, + "protein_g": 6.5, + "carbs_g": 15.6, + "fat_g": 11.5, + "fiber_g": 6.2, + "sodium_mg": 22.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -93022,10 +93430,10 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 36.4, + "kcal": 108.8, "protein_g": 2.0, "carbs_g": 7.6, - "fat_g": 0.5, + "fat_g": 8.7, "fiber_g": 2.6, "sodium_mg": 25.9, "coverage": "partial", @@ -93179,13 +93587,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 221.5, - "protein_g": 4.4, - "carbs_g": 43.9, - "fat_g": 5.7, - "fiber_g": 3.0, - "sodium_mg": 27.9, - "coverage": "partial", + "kcal": 223.9, + "protein_g": 4.5, + "carbs_g": 44.3, + "fat_g": 5.8, + "fiber_g": 3.2, + "sodium_mg": 28.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -93348,13 +93756,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 344.3, - "protein_g": 6.2, - "carbs_g": 45.2, - "fat_g": 16.7, - "fiber_g": 4.9, - "sodium_mg": 577.4, - "coverage": "partial", + "kcal": 355.3, + "protein_g": 6.7, + "carbs_g": 47.3, + "fat_g": 17.2, + "fiber_g": 6.1, + "sodium_mg": 579.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -93507,13 +93915,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 240.1, - "protein_g": 4.9, - "carbs_g": 52.4, - "fat_g": 0.5, - "fiber_g": 1.4, - "sodium_mg": 4.2, - "coverage": "partial", + "kcal": 306.5, + "protein_g": 7.8, + "carbs_g": 60.1, + "fat_g": 3.3, + "fiber_g": 3.8, + "sodium_mg": 92.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -93816,13 +94224,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 198.4, + "kcal": 258.1, "protein_g": 3.6, "carbs_g": 46.1, - "fat_g": 0.6, + "fat_g": 7.4, "fiber_g": 7.8, "sodium_mg": 35.6, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -93968,13 +94376,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 278.6, + "kcal": 280.6, "protein_g": 6.9, - "carbs_g": 39.4, - "fat_g": 9.9, + "carbs_g": 39.6, + "fat_g": 10.0, "fiber_g": 1.6, "sodium_mg": 71.6, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -94118,13 +94526,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 357.6, + "kcal": 359.3, "protein_g": 5.1, - "carbs_g": 51.5, + "carbs_g": 52.0, "fat_g": 15.7, - "fiber_g": 5.3, - "sodium_mg": 625.0, - "coverage": "partial", + "fiber_g": 5.4, + "sodium_mg": 625.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -94313,12 +94721,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 351.5, - "protein_g": 32.7, - "carbs_g": 7.6, - "fat_g": 21.7, - "fiber_g": 1.6, - "sodium_mg": 898.7, + "kcal": 356.8, + "protein_g": 32.8, + "carbs_g": 9.0, + "fat_g": 21.9, + "fiber_g": 2.0, + "sodium_mg": 900.3, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -94662,12 +95070,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 101.6, - "protein_g": 1.4, + "kcal": 282.9, + "protein_g": 40.7, "carbs_g": 9.1, - "fat_g": 7.4, + "fat_g": 8.9, "fiber_g": 2.9, - "sodium_mg": 6.8, + "sodium_mg": 4398.6, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -94839,13 +95247,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 87.5, - "protein_g": 2.7, + "kcal": 240.1, + "protein_g": 31.5, "carbs_g": 19.0, - "fat_g": 1.0, + "fat_g": 4.2, "fiber_g": 5.3, - "sodium_mg": 9.6, - "coverage": "partial", + "sodium_mg": 124.4, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -95111,12 +95519,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 164.9, - "protein_g": 2.5, - "carbs_g": 9.0, - "fat_g": 14.6, + "kcal": 176.9, + "protein_g": 3.0, + "carbs_g": 11.0, + "fat_g": 14.8, "fiber_g": 3.0, - "sodium_mg": 13.0, + "sodium_mg": 619.0, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -95291,13 +95699,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 638.2, - "protein_g": 27.2, - "carbs_g": 118.1, + "kcal": 656.1, + "protein_g": 27.5, + "carbs_g": 122.8, "fat_g": 7.2, - "fiber_g": 15.3, - "sodium_mg": 29.0, - "coverage": "partial", + "fiber_g": 15.7, + "sodium_mg": 31.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -95452,13 +95860,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 355.5, + "kcal": 361.5, "protein_g": 21.2, - "carbs_g": 24.6, - "fat_g": 18.9, - "fiber_g": 2.7, - "sodium_mg": 658.8, - "coverage": "partial", + "carbs_g": 25.5, + "fat_g": 19.0, + "fiber_g": 2.9, + "sodium_mg": 660.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -95629,13 +96037,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 352.3, - "protein_g": 5.9, - "carbs_g": 49.9, - "fat_g": 16.0, + "kcal": 370.5, + "protein_g": 8.6, + "carbs_g": 51.6, + "fat_g": 16.1, "fiber_g": 6.8, - "sodium_mg": 534.3, - "coverage": "partial", + "sodium_mg": 811.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -95762,12 +96170,12 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 280.3, - "protein_g": 2.1, - "carbs_g": 48.8, - "fat_g": 11.0, + "kcal": 284.8, + "protein_g": 2.8, + "carbs_g": 49.0, + "fat_g": 11.2, "fiber_g": 2.6, - "sodium_mg": 6.7, + "sodium_mg": 285.7, "coverage": "partial", "basis": "catalog per-100g rows x line grams / servings" }, @@ -96390,13 +96798,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 336.4, - "protein_g": 25.6, - "carbs_g": 20.2, - "fat_g": 17.2, - "fiber_g": 5.9, - "sodium_mg": 196.1, - "coverage": "partial", + "kcal": 344.8, + "protein_g": 26.0, + "carbs_g": 21.7, + "fat_g": 17.6, + "fiber_g": 6.9, + "sodium_mg": 282.1, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -96701,13 +97109,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 218.0, - "protein_g": 26.8, - "carbs_g": 4.3, + "kcal": 221.6, + "protein_g": 26.9, + "carbs_g": 5.1, "fat_g": 9.9, "fiber_g": 1.0, - "sodium_mg": 105.2, - "coverage": "partial", + "sodium_mg": 105.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -97001,13 +97409,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 420.5, - "protein_g": 26.2, - "carbs_g": 33.5, - "fat_g": 20.0, - "fiber_g": 6.8, - "sodium_mg": 171.3, - "coverage": "partial", + "kcal": 427.5, + "protein_g": 26.5, + "carbs_g": 34.7, + "fat_g": 20.4, + "fiber_g": 7.7, + "sodium_mg": 242.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -97505,13 +97913,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 220.9, - "protein_g": 5.3, - "carbs_g": 41.1, - "fat_g": 4.9, - "fiber_g": 4.9, - "sodium_mg": 919.5, - "coverage": "partial", + "kcal": 390.3, + "protein_g": 7.1, + "carbs_g": 58.6, + "fat_g": 15.5, + "fiber_g": 6.2, + "sodium_mg": 1140.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -98622,13 +99030,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 204.7, + "kcal": 205.1, "protein_g": 4.9, "carbs_g": 38.0, "fat_g": 4.7, "fiber_g": 6.4, "sodium_mg": 412.5, - "coverage": "partial", + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -98967,13 +99375,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 181.0, - "protein_g": 15.5, - "carbs_g": 19.8, - "fat_g": 5.0, + "kcal": 341.0, + "protein_g": 21.5, + "carbs_g": 21.0, + "fat_g": 19.4, "fiber_g": 5.0, - "sodium_mg": 513.4, - "coverage": "partial", + "sodium_mg": 968.9, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -99284,13 +99692,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 592.9, - "protein_g": 14.2, - "carbs_g": 88.2, - "fat_g": 23.0, + "kcal": 605.9, + "protein_g": 16.2, + "carbs_g": 89.4, + "fat_g": 23.1, "fiber_g": 9.6, - "sodium_mg": 1176.7, - "coverage": "partial", + "sodium_mg": 1374.7, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -99570,13 +99978,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 49.9, - "protein_g": 2.0, - "carbs_g": 11.3, - "fat_g": 0.5, + "kcal": 81.1, + "protein_g": 6.7, + "carbs_g": 14.2, + "fat_g": 0.7, "fiber_g": 3.7, - "sodium_mg": 38.4, - "coverage": "partial", + "sodium_mg": 513.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -99894,13 +100302,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 755.5, - "protein_g": 43.7, - "carbs_g": 57.3, - "fat_g": 41.1, - "fiber_g": 7.0, - "sodium_mg": 1245.2, - "coverage": "partial", + "kcal": 769.6, + "protein_g": 44.4, + "carbs_g": 60.0, + "fat_g": 41.8, + "fiber_g": 8.8, + "sodium_mg": 1248.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -100065,13 +100473,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 262.6, - "protein_g": 5.8, - "carbs_g": 51.5, - "fat_g": 4.9, - "fiber_g": 6.8, - "sodium_mg": 457.7, - "coverage": "partial", + "kcal": 294.6, + "protein_g": 9.5, + "carbs_g": 55.6, + "fat_g": 5.6, + "fiber_g": 8.2, + "sodium_mg": 777.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -100211,13 +100619,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 57.5, - "protein_g": 2.3, - "carbs_g": 13.0, - "fat_g": 0.5, - "fiber_g": 3.7, - "sodium_mg": 10.5, - "coverage": "partial", + "kcal": 322.0, + "protein_g": 12.3, + "carbs_g": 16.6, + "fat_g": 23.9, + "fiber_g": 4.8, + "sodium_mg": 741.3, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -100965,13 +101373,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 161.9, - "protein_g": 7.1, - "carbs_g": 25.3, - "fat_g": 3.3, + "kcal": 377.7, + "protein_g": 39.3, + "carbs_g": 25.7, + "fat_g": 11.8, "fiber_g": 1.0, - "sodium_mg": 125.9, - "coverage": "partial", + "sodium_mg": 204.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -101105,13 +101513,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 71.4, - "protein_g": 6.7, - "carbs_g": 12.8, - "fat_g": 0.6, - "fiber_g": 4.5, - "sodium_mg": 835.1, - "coverage": "partial", + "kcal": 214.7, + "protein_g": 10.8, + "carbs_g": 41.0, + "fat_g": 2.2, + "fiber_g": 5.8, + "sodium_mg": 836.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -101229,13 +101637,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 12.0, - "protein_g": 0.3, - "carbs_g": 2.8, - "fat_g": 0.0, - "fiber_g": 0.5, - "sodium_mg": 1.3, - "coverage": "partial", + "kcal": 136.5, + "protein_g": 5.7, + "carbs_g": 17.2, + "fat_g": 5.3, + "fiber_g": 5.0, + "sodium_mg": 166.3, + "coverage": "computed", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -101383,13 +101791,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 321.8, + "kcal": 324.4, "protein_g": 7.6, - "carbs_g": 38.5, - "fat_g": 17.0, - "fiber_g": 6.9, - "sodium_mg": 566.7, - "coverage": "partial", + "carbs_g": 38.8, + "fat_g": 17.2, + "fiber_g": 7.0, + "sodium_mg": 566.8, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -101992,13 +102400,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 400.0, - "protein_g": 13.5, - "carbs_g": 71.7, - "fat_g": 5.4, + "kcal": 486.4, + "protein_g": 19.6, + "carbs_g": 80.2, + "fat_g": 8.3, "fiber_g": 1.4, - "sodium_mg": 1686.3, - "coverage": "partial", + "sodium_mg": 2029.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -102153,13 +102561,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 181.9, - "protein_g": 8.1, - "carbs_g": 6.9, - "fat_g": 14.3, - "fiber_g": 1.0, - "sodium_mg": 1552.6, - "coverage": "partial", + "kcal": 338.9, + "protein_g": 13.9, + "carbs_g": 37.5, + "fat_g": 15.2, + "fiber_g": 2.8, + "sodium_mg": 1784.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -103258,13 +103666,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 238.2, - "protein_g": 12.5, - "carbs_g": 38.1, - "fat_g": 4.9, + "kcal": 252.6, + "protein_g": 13.1, + "carbs_g": 40.5, + "fat_g": 5.1, "fiber_g": 7.2, - "sodium_mg": 609.8, - "coverage": "partial", + "sodium_mg": 1337.0, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -103636,13 +104044,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 599.0, - "protein_g": 12.6, - "carbs_g": 103.9, + "kcal": 601.3, + "protein_g": 12.7, + "carbs_g": 104.4, "fat_g": 15.3, - "fiber_g": 7.8, - "sodium_mg": 606.3, - "coverage": "partial", + "fiber_g": 7.9, + "sodium_mg": 606.5, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -103996,13 +104404,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 817.0, - "protein_g": 41.8, - "carbs_g": 98.2, - "fat_g": 28.0, + "kcal": 845.8, + "protein_g": 43.8, + "carbs_g": 101.0, + "fat_g": 29.0, "fiber_g": 2.8, - "sodium_mg": 1344.2, - "coverage": "partial", + "sodium_mg": 1458.6, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { @@ -105341,13 +105749,13 @@ "dairy_free": null }, "nutrition_per_serving": { - "kcal": 588.0, + "kcal": 589.9, "protein_g": 20.7, - "carbs_g": 98.3, - "fat_g": 13.3, - "fiber_g": 9.0, - "sodium_mg": 496.0, - "coverage": "partial", + "carbs_g": 98.7, + "fat_g": 13.4, + "fiber_g": 9.1, + "sodium_mg": 496.2, + "coverage": "estimated", "basis": "catalog per-100g rows x line grams / servings" }, "rights": { diff --git a/data/recipes/legacy-ingredient-map.json b/data/recipes/legacy-ingredient-map.json index eba9469b3..13f986118 100644 --- a/data/recipes/legacy-ingredient-map.json +++ b/data/recipes/legacy-ingredient-map.json @@ -19,7 +19,7 @@ "legacy_name": "rice", "key": "rice", "fdc_id": 168877, - "status": "unresolved", + "status": "resolved", "match_rule": "vocabulary resolution (hand-verified pin or bulk-CSV row)", "candidates": [ 168877, @@ -58,7 +58,7 @@ "legacy_name": "onion", "key": "onion", "fdc_id": 170000, - "status": "unresolved", + "status": "resolved", "match_rule": "vocabulary resolution (hand-verified pin or bulk-CSV row)", "candidates": [ 170000, @@ -83,7 +83,7 @@ "legacy_name": "tomato", "key": "tomato", "fdc_id": 170457, - "status": "unresolved", + "status": "resolved", "match_rule": "vocabulary resolution (hand-verified pin or bulk-CSV row)", "candidates": [ 168567, @@ -197,7 +197,7 @@ "legacy_name": "butter", "key": "butter", "fdc_id": 2710154, - "status": "unresolved", + "status": "resolved", "match_rule": "vocabulary resolution (hand-verified pin or bulk-CSV row)", "candidates": [ 169895, @@ -212,7 +212,7 @@ "legacy_name": "bread", "key": "bread", "fdc_id": 2707598, - "status": "unresolved", + "status": "resolved", "match_rule": "vocabulary resolution (hand-verified pin or bulk-CSV row)", "candidates": [ 170144, @@ -237,7 +237,7 @@ "legacy_name": "lemon", "key": "lemon", "fdc_id": 167746, - "status": "unresolved", + "status": "resolved", "match_rule": "vocabulary resolution (hand-verified pin or bulk-CSV row)", "candidates": [ 167746, @@ -252,7 +252,7 @@ "legacy_name": "mushroom", "key": "mushroom", "fdc_id": 169251, - "status": "unresolved", + "status": "resolved", "match_rule": "vocabulary resolution (hand-verified pin or bulk-CSV row)", "candidates": [ 168422, @@ -377,17 +377,19 @@ "legacy_id": 28, "legacy_name": "tortilla", "key": "tortilla", - "fdc_id": null, - "status": "unresolved", - "match_rule": "no acceptable candidate in the bundled catalog", - "candidates": [] + "fdc_id": 2707822, + "status": "resolved", + "match_rule": "vocabulary resolution via vocabulary key 'tortillas' (hand-verified pin or bulk-CSV row)", + "candidates": [ + 2707822 + ] }, { "legacy_id": 29, "legacy_name": "lime", "key": "lime", "fdc_id": 168155, - "status": "unresolved", + "status": "resolved", "match_rule": "vocabulary resolution (hand-verified pin or bulk-CSV row)", "candidates": [ 168155, @@ -411,7 +413,7 @@ "legacy_name": "oats", "key": "oats", "fdc_id": 168872, - "status": "unresolved", + "status": "resolved", "match_rule": "vocabulary resolution (hand-verified pin or bulk-CSV row)", "candidates": [ 168872, @@ -459,10 +461,11 @@ "legacy_id": 35, "legacy_name": "chickpea", "key": "chickpea", - "fdc_id": 2644282, + "fdc_id": 173756, "status": "proposed", - "match_rule": "unique display-name prefix match on generic qualifier", + "match_rule": "vocabulary resolution via vocabulary key 'chickpeas' (hand-verified pin or bulk-CSV row)", "candidates": [ + 173756, 2644282 ] }, @@ -526,7 +529,7 @@ "legacy_name": "apple", "key": "apple", "fdc_id": 168202, - "status": "unresolved", + "status": "resolved", "match_rule": "vocabulary resolution (hand-verified pin or bulk-CSV row)", "candidates": [ 167771, @@ -555,7 +558,7 @@ "legacy_name": "frozen_peas", "key": "frozen_peas", "fdc_id": 170419, - "status": "unresolved", + "status": "resolved", "match_rule": "vocabulary resolution (hand-verified pin or bulk-CSV row)", "candidates": [ 170419 @@ -566,7 +569,7 @@ "legacy_name": "canned_tuna", "key": "canned_tuna", "fdc_id": 171986, - "status": "unresolved", + "status": "resolved", "match_rule": "vocabulary resolution (hand-verified pin or bulk-CSV row)", "candidates": [ 171986 @@ -599,7 +602,7 @@ "legacy_name": "red_pepper_flakes", "key": "red_pepper_flakes", "fdc_id": 170932, - "status": "unresolved", + "status": "resolved", "match_rule": "vocabulary resolution (hand-verified pin or bulk-CSV row)", "candidates": [ 170932 @@ -621,7 +624,7 @@ "legacy_name": "cilantro", "key": "cilantro", "fdc_id": 169997, - "status": "unresolved", + "status": "resolved", "match_rule": "vocabulary resolution (hand-verified pin or bulk-CSV row)", "candidates": [ 169997 diff --git a/data/recipes/tools/build_vocab.py b/data/recipes/tools/build_vocab.py index 2d28c257e..33599baff 100644 --- a/data/recipes/tools/build_vocab.py +++ b/data/recipes/tools/build_vocab.py @@ -217,6 +217,113 @@ "heavy_cream": (170859, "Cream, fluid, heavy whipping (SR Legacy)"), "salt": (173468, "Salt, table (SR Legacy) - catalog prefix hit was Salt Pork"), "egg": (171287, "Egg, whole, raw, fresh (SR Legacy) - catalog row was Salted frozen egg"), + # ---- 2026-10 nutrition completion: keys that shipped without a per-100g + # row. Every pin cites the FDC row's own description and is the same + # product as the key; nothing was resolved by similarity alone. + "allspice": (171315, "Spices, allspice, ground (SR Legacy) - ground is the standard spice-aisle form"), + "apple_cider_vinegar": (173469, "Vinegar, cider (SR Legacy) - cider vinegar is apple cider vinegar"), + "baguette": (2707610, "Bread, French or Vienna (FNDDS) - a baguette is the French bread loaf"), + "baking_powder": (172803, "Leavening agents, baking powder, double-acting, sodium aluminum sulfate (SR Legacy) - the generic household double-acting baking powder"), + "beansprouts": (2709768, "Bean sprouts, raw (FNDDS) - beansprouts are raw mung-bean sprouts"), + "beef_stock": (172883, "Soup, stock, beef, home-prepared (SR Legacy) - the only same-product beef stock row"), + "besan": (174288, "Chickpea flour (besan) (SR Legacy) - exact name"), + "black_eyed_peas": (2707412, "Blackeyed peas, NFS (FNDDS) - the generic prepared row; the only SR mature-seed row is canned with pork"), + "borlotti_beans": (173736, "Beans, cranberry (roman), mature seeds, cooked, boiled, drained, without salt (SR Legacy) - borlotti are cranberry/roman beans; drained-cooked matches the surface"), + "breadcrumbs": (174928, "Bread, crumbs, dry, grated, plain (SR Legacy) - exact plain breadcrumbs"), + "broth": (2707132, "Soup, broth (FNDDS) - the species-unspecified broth row matches the generic surface"), + "burger_buns": (2707657, "Roll, white, hamburger bun (FNDDS) - exact same product"), + "cayenne": (170932, "Spices, pepper, red or cayenne (SR Legacy) - the exact cayenne row"), + "chicken_stock": (172884, "Soup, stock, chicken, home-prepared (SR Legacy) - the only same-product chicken stock row"), + "chiles": (168570, "Peppers, hot chile, sun-dried (SR Legacy) - the surface is dried chiles; the row is sun-dried hot chile peppers"), + "chili_powder": (171319, "Spices, chili powder (SR Legacy) - the exact chili powder blend row"), + "cola": (174852, "Beverages, carbonated, cola, regular (SR Legacy) - the exact generic cola row"), + "cranberry_sauce": (2709280, "Cranberry sauce (FNDDS) - exact same product"), + "daikon": (168451, "Radishes, oriental, raw (SR Legacy) - daikon is the oriental radish"), + "french_fries": (2709456, "Potato, french fries, NFS (FNDDS) - the form-not-specified generic row"), + "glass_noodles": (174258, "Noodles, chinese, cellophane or long rice (mung beans), dehydrated (SR Legacy) - glass noodles are cellophane noodles; dehydrated matches the 80 g corpus line"), + "goat_meat": (175303, "Game meat, goat, raw (SR Legacy) - raw matches the raw ingredient identity"), + "green_chili": (170497, "Peppers, hot chili, green, raw (SR Legacy) - the exact green hot chili row"), + "ground_coriander": (170922, "Spices, coriander seed (SR Legacy) - ground coriander is ground coriander seed"), + "ground_ginger": (170926, "Spices, ginger, ground (SR Legacy) - exact"), + "ground_turmeric": (172231, "Spices, turmeric, ground (SR Legacy) - exact"), + "hao_you": (2707150, "Oyster sauce (FNDDS) - hao you is Cantonese for oyster sauce; same product"), + "hoisin": (2707441, "Hoisin sauce (FNDDS) - exact same product"), + "lemon_juice": (2709180, "Lemon juice, 100%, NS as to form (FNDDS) - the form-not-specified generic row"), + "millet_flour": (172023, "Millet flour (SR Legacy) - exact"), + "mild_curry_powder": (170924, "Spices, curry powder (SR Legacy) - mild heat variant of the standard curry powder blend"), + "nutmeg": (171326, "Spices, nutmeg, ground (SR Legacy) - ground is the standard spice-aisle form"), + "orange_juice": (2709186, "Orange juice, 100%, NFS (FNDDS) - the form-not-specified generic row"), + "orzo": (2708357, "Pasta, cooked (FNDDS) - orzo shares the pasta identity; the corpus line is 1 cup = 200 g (cooked), same row as pasta_dried"), + "paprika": (171329, "Spices, paprika (SR Legacy) - exact (same row as the smoked_paprika pin)"), + "pomegranate_seeds": (169134, "Pomegranates, raw (SR Legacy) - the row's edible portion is the arils with seeds"), + "pork_cutlets": (168230, "Pork, fresh, loin, whole, separable lean only, raw (SR Legacy) - cutlets are boneless lean loin cuts"), + "red_palm_oil": (171015, "Oil, palm (SR Legacy) - red palm oil is unrefined palm oil; identical in the shipped macro fields"), + "rice_flour": (169714, "Rice flour, white, unenriched (SR Legacy) - exact; white is the default rice flour"), + "salt_cod": (174190, "Fish, cod, Atlantic, dried and salted (SR Legacy) - exact same product"), + "smoked_sausage": (174585, "Sausage, smoked link sausage, pork and beef (SR Legacy) - the generic mixed smoked link sausage"), + "squid": (174223, "Mollusks, squid, mixed species, raw (SR Legacy) - exact"), + "sriracha": (171186, "Sauce, hot chile, sriracha (SR Legacy) - exact same product"), + "swede": (168454, "Rutabagas, raw (SR Legacy) - swede is the British name for rutabaga"), + "tamari": (174278, "Soy sauce made from soy (tamari) (SR Legacy) - the exact tamari row (same row as soy_sauce)"), + "tamarind_paste": (167763, "Tamarinds, raw (SR Legacy) - block paste is pressed tamarind pulp; the raw row is the edible pulp"), + "turmeric": (172231, "Spices, turmeric, ground (SR Legacy) - ground is the standard spice-aisle form (same row as ground_turmeric)"), + "udon_noodles": (2708352, "Noodles, cooked (FNDDS) - udon is a wheat noodle; the cooked generic row matches the fresh-udon 320 g corpus line"), + "vegetable_stock": (171180, "Soup, SWANSON, vegetable broth (SR Legacy) - the only same-product row; branded ready-to-serve vegetable broth"), + "white_vinegar": (172237, "Vinegar, distilled (SR Legacy) - distilled white vinegar"), + "whole_wheat_flour": (168893, "Wheat flour, whole-grain (SR Legacy) - whole wheat flour is whole-grain wheat flour"), +} + +# Keys that stay unresolved after the 2026-10 nutrition-completion pass, with +# the FDC rows considered and the reason each was rejected. A specialty with +# no honest FDC equivalent keeps partial coverage instead of a guessed row. +# The audit is emitted to data/ingredients/unresolved-candidates.json. +UNRESOLVED_CANDIDATES: dict[str, dict] = { + "ackee": {"candidates": [], "note": "no FDC row under any searched name (ackee, blighia); Jamaican specialty"}, + "artichoke_hearts": {"candidates": [169205, 168387, 2709766], "note": "raw/frozen globe artichoke rows are the edible portion without the brine the drained jarred hearts imply; a raw row would understate sodium"}, + "beef_meatballs": {"candidates": [2706467, 171638, 2706580], "note": "the FNDDS row carries sauce and the SR row is seasoned Italian-style frozen; neither is plain beef meatballs"}, + "beef_vegetable_stock": {"candidates": [172883, 171180], "note": "surface is 'beef or vegetable stock'; both single-species rows are different products"}, + "black_bean_paste": {"candidates": [], "note": "fermented black-soybean paste; no FDC row (searched tausi, douchi, black bean paste)"}, + "black_vinegar": {"candidates": [172241], "note": "balsamic is grape must, a different product; no Chinese black (Chinkiang) vinegar row"}, + "callaloo_greens": {"candidates": [], "note": "callaloo greens are species-ambiguous (taro/amaranth/dasheen); no single-product FDC row"}, + "chicharrones": {"candidates": [], "note": "no pork-rind row in FNDDS 2024 or SR Legacy"}, + "chilli_sauce": {"candidates": [2709735, 171186], "note": "surface is 'sweet chili sauce'; the tomato chili sauce and hot chile sauce rows are different products"}, + "dashi": {"candidates": [], "note": "kombu + bonito infusion; no FDC row"}, + "doenjang": {"candidates": [], "note": "Korean fermented soybean paste; no FDC row (miso is a different product)"}, + "doubanjiang": {"candidates": [], "note": "fermented chili-bean paste; no FDC row"}, + "egusi_seeds": {"candidates": [], "note": "melon/cucurbit seed kernels; no FDC row (searched melon seed, egusi)"}, + "farro": {"candidates": [2710828], "note": "Foundation Foods 'Farro, pearled, dry, raw' carries no energy measurement in kcal in the bulk CSVs; pinning it would emit kcal 0.0"}, + "five_spice_powder": {"candidates": [], "note": "Chinese spice blend; no FDC row"}, + "flattened_rice": {"candidates": [], "note": "poha; no FDC row"}, + "galangal": {"candidates": [], "note": "no FDC row (ginger is a different plant)"}, + "garam_masala": {"candidates": [], "note": "North Indian spice blend; no FDC row"}, + "gochugaru": {"candidates": [170932, 168570], "note": "Korean coarse chili flakes; the ground cayenne spice and whole sun-dried chile rows are different products"}, + "gochujang": {"candidates": [], "note": "Korean chili-soybean paste; no FDC row"}, + "green_curry_paste": {"candidates": [2710178], "note": "FNDDS 'Curry sauce' is a different (British-style) product"}, + "green_papaya": {"candidates": [2709246, 2709247], "note": "the raw/canned papaya rows are the ripe fruit; unripe green papaya differs materially in sugar"}, + "halloumi": {"candidates": [], "note": "no halloumi row; feta and mozzarella are different products"}, + "harissa": {"candidates": [], "note": "no harissa row in FNDDS 2024 or SR Legacy"}, + "jerk_seasoning": {"candidates": [], "note": "Jamaican spice blend; no FDC row"}, + "kaffir_lime": {"candidates": [], "note": "makrut lime leaves; no FDC row"}, + "labneh": {"candidates": [2705415], "note": "Greek yogurt rows are less-strained and materially lower in energy; not the same product"}, + "massaman_curry_paste": {"candidates": [2710178], "note": "FNDDS 'Curry sauce' is a different product"}, + "mirin": {"candidates": [167723], "note": "the sake row is unsweetened; mirin's sugar content differs materially"}, + "nduja": {"candidates": [], "note": "spreadable spicy cured pork; no FDC row"}, + "potato_starch": {"candidates": [], "note": "no standalone potato-starch row (hits are composite breads)"}, + "preserved_lemon": {"candidates": [], "note": "salt-pickled lemons; no FDC row"}, + "pomegranate_molasses": {"candidates": [168820], "note": "cane molasses is a different product; no pomegranate-reduction row"}, + "ras_el_hanout": {"candidates": [], "note": "North African spice blend; no FDC row"}, + "rice_powder": {"candidates": [169714, 168898], "note": "surface is 'toasted rice powder' (khao khua); the untoasted rice flour rows are a different product"}, + "rice_vinegar": {"candidates": [2709351], "note": "the FNDDS generic 'Vinegar' row is not the rice-vinegar product; no rice vinegar row"}, + "scotch_bonnet": {"candidates": [170106], "note": "generic hot red chili row; the named variety is not represented"}, + "sichuan_peppercorns": {"candidates": [], "note": "no FDC row (searched sichuan, szechuan pepper)"}, + "spring_roll_wrappers": {"candidates": [172802], "note": "wonton wrappers contain egg; wheat-only spring roll wrappers are a different product"}, + "star_anise": {"candidates": [171316], "note": "anise seed is a different plant (shared aroma compound only)"}, + "stock": {"candidates": [172883, 172884, 172885], "note": "all FDC stock rows are species-specific (beef/chicken/fish); the surface names no species"}, + "sumac": {"candidates": [], "note": "no FDC row"}, + "sweet_potato_noodles": {"candidates": [174258, 2708355], "note": "the cellophane rows are mung-bean starch, not sweet-potato starch (dangmyeon)"}, + "thai_chilies": {"candidates": [170106], "note": "generic hot red chili row; the named variety is not represented"}, + "umeboshi": {"candidates": [], "note": "pickled ume; no FDC row"}, + "zaatar": {"candidates": [], "note": "Middle Eastern herb blend; no FDC row"}, } # Class overrides for keys with no canon fact (meat/fish/dairy/... used by @@ -843,14 +950,33 @@ def fdc_search(key: str) -> tuple[int, str, str] | None: status, rule, fdc = "unresolved", "no acceptable candidate in the bundled catalog", None # The vocabulary resolution is authoritative: hand-verified pins and # bulk-CSV rows beat a bundled-catalog prefix hit (e.g. egg resolved - # to the catalog's Salted frozen egg before the pin existed). - if by_key.get(key, {}).get("fdc_id") is not None: - vocab_fdc = by_key[key]["fdc_id"] + # to the catalog's Salted frozen egg before the pin existed). When the + # exact key itself carries no fdc_id, plural/singular vocabulary keys + # are tried (legacy "tortilla" -> vocabulary "tortillas"). A legacy + # entry that was unresolved and now carries a resolution flips status. + vocab_entry = None + variant = "" + variant_keys = [key] + if key.endswith("s"): + variant_keys.append(key[:-1]) + else: + variant_keys.append(key + "s") + for vk in variant_keys: + ent = by_key.get(vk) + if ent is not None and ent.get("fdc_id") is not None: + vocab_entry = ent + if vk != key: + variant = f" via vocabulary key '{vk}'" + break + if vocab_entry is not None: + vocab_fdc = vocab_entry["fdc_id"] if vocab_fdc != fdc: fdc = vocab_fdc - rule = "vocabulary resolution (hand-verified pin or bulk-CSV row)" + rule = f"vocabulary resolution{variant} (hand-verified pin or bulk-CSV row)" if vocab_fdc not in candidates: candidates = sorted(candidates + [vocab_fdc]) + if status == "unresolved": + status = "resolved" identity_entries.append({ "legacy_id": lid, "legacy_name": name, "key": key, "fdc_id": fdc, "status": status, "match_rule": rule, "candidates": candidates, @@ -864,6 +990,14 @@ def fdc_search(key: str) -> tuple[int, str, str] | None: # ---- 5. emit ------------------------------------------------------------ ING_DIR.mkdir(parents=True, exist_ok=True) + # keep the unresolved-candidates audit in lockstep with the vocabulary + no_per100 = {e["key"] for e in vocab if e["per_100g"] is None} + audit_missing = sorted(no_per100 - set(UNRESOLVED_CANDIDATES)) + audit_extra = sorted(set(UNRESOLVED_CANDIDATES) - no_per100) + if audit_missing or audit_extra: + raise SystemExit( + "unresolved-candidates audit out of sync with vocabulary: " + f"missing={audit_missing} extra={audit_extra}") vocab_doc = { "schema": "https://fridgeluck.app/schemas/ingredient-vocabulary-v1.json", "sources": { @@ -890,6 +1024,15 @@ def fdc_search(key: str) -> tuple[int, str, str] | None: (REPO / "data/recipes/legacy-ingredient-map.json").write_text( json.dumps(legacy_map, indent=2, ensure_ascii=False) + "\n" ) + (ING_DIR / "unresolved-candidates.json").write_text( + json.dumps({ + "note": "Vocabulary keys with no per-100g row. Each stays unresolved unless a cited " + "FDC row is the same product; candidates list the FDC rows considered and " + "rejected during the 2026-10 nutrition-completion pass (see " + "UNRESOLVED_CANDIDATES in data/recipes/tools/build_vocab.py).", + "keys": dict(sorted(UNRESOLVED_CANDIDATES.items())), + }, indent=2, ensure_ascii=False) + "\n" + ) # ---- 6. audit ------------------------------------------------------------ st = Counter(e["status"] for e in identity_entries) diff --git a/data/recipes/tools/compile_bundle.py b/data/recipes/tools/compile_bundle.py index ada539492..c5abca081 100644 --- a/data/recipes/tools/compile_bundle.py +++ b/data/recipes/tools/compile_bundle.py @@ -28,7 +28,7 @@ OUT = REPO / "data/recipes/build/recipes-v2.json" # Pinned so repeat runs are byte identical; bump deliberately when recompiling. -GENERATED_AT = "2026-10-15T12:45:00Z" +GENERATED_AT = "2026-10-15T16:46:35Z" # First corpus id maps to rcp-000167: rcp-000001..rcp-000166 are reserved for # migrated legacy rows per the bundle-v2 contract. diff --git a/data/recipes/tools/find_candidates.py b/data/recipes/tools/find_candidates.py new file mode 100644 index 000000000..073c5ca62 --- /dev/null +++ b/data/recipes/tools/find_candidates.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python3 +"""List FDC candidate rows for the keys that lack per-100g data. + +Exact-word search over FNDDS survey + SR Legacy (+ optional Foundation Foods) +descriptions: every key word must appear as an exact word form (singular or +plural); prints candidates with nutrient availability for hand review. +No scoring, no ranking, no fuzzy: this is an evidence dump for a human decision. +""" +from __future__ import annotations + +import csv +import json +import re +import sys +from pathlib import Path + +FDC_DIRS = { + "fndds": Path("/tmp/fdc/FoodData_Central_survey_food_csv_2024-10-31"), + "sr": Path("/tmp/fdc/FoodData_Central_sr_legacy_food_csv_2018-04"), +} +FF_DIR = Path("/tmp/fdc/FoodData_Central_foundation_food_csv_2024-10-31") + +NUTRIENT_IDS = {"kcal": {1008, 208}, "protein_g": {1003, 203}, + "carbs_g": {1005, 205}, "fat_g": {1004, 204}, + "fiber_g": {1079, 291}, "sugar_g": {2000, 1063, 269}, + "sodium_mg": {1093, 307}} + +def load(): + foods = {} + nutrients: dict[int, set[str]] = {} + for d in [FF_DIR] if FF_DIR.exists() else []: + pass + for tag, d in FDC_DIRS.items(): + with (d / "food.csv").open() as f: + for row in csv.DictReader(f): + foods[int(row["fdc_id"])] = (row["description"], tag) + with (d / "food_nutrient.csv").open() as f: + for row in csv.DictReader(f): + fid = int(row["fdc_id"]) + nid = int(row["nutrient_id"]) + for field, ids in NUTRIENT_IDS.items(): + if nid in ids: + nutrients.setdefault(fid, set()).add(field) + if FF_DIR.exists(): + with (FF_DIR / "food.csv").open() as f: + for row in csv.DictReader(f): + foods[int(row["fdc_id"])] = (row["description"], "ff") + with (FF_DIR / "food_nutrient.csv").open() as f: + for row in csv.DictReader(f): + fid = int(row["fdc_id"]) + nid = int(row["nutrient_id"]) + for field, ids in NUTRIENT_IDS.items(): + if nid in ids: + nutrients.setdefault(fid, set()).add(field) + return foods, nutrients + +def word_forms(w: str) -> set[str]: + f = {w, w + "s", w + "es"} + if w.endswith("y"): + f.add(w[:-1] + "ies") + # rough singulars + if w.endswith("es"): + f.add(w[:-2]) + if w.endswith("s"): + f.add(w[:-1]) + return f + +def main() -> None: + foods, nutrients = load() + vocab = json.load(open(sys.argv[1]))["entries"] + targets = [e["key"] for e in vocab if e["per_100g"] is None] + if len(sys.argv) > 2: + targets = sys.argv[2:] + for key in targets: + words = [w for w in key.split("_") if w] + forms = {w: word_forms(w) for w in words} + print(f"### {key}") + hits = [] + for fid, (desc, tag) in foods.items(): + dl = desc.lower() + tokens = set(re.findall(r"[a-z]+", dl)) + if all(any(t in forms[w] for t in tokens) for w in words): + hits.append((fid, desc, tag, len(nutrients.get(fid, ())))) + for fid, desc, tag, nfields in sorted(hits, key=lambda h: (-h[3], h[1]))[:14]: + print(f" {fid} [{tag}] ({nfields}/7 nutrients) {desc}") + if not hits: + print(" (no exact-word candidates)") + return + +if __name__ == "__main__": + main() diff --git a/data/recipes/tools/record_nutrition_changes.py b/data/recipes/tools/record_nutrition_changes.py new file mode 100644 index 000000000..0e16e51ac --- /dev/null +++ b/data/recipes/tools/record_nutrition_changes.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python3 +"""Record >40% per-serving kcal moves between two published recipe bundles. + +When a vocabulary revision resolves ingredient keys that previously shipped +without per-100g nutrition, recipes can move materially. Every move of more +than 40 percent must be recorded in data/recipe-bundle/nutrition-changes-2026-10.json +naming the vocabulary keys that were resolved and are used by that recipe. +validate_bundle.py --previous --changes enforces it. + +The cause is computed honestly: a recipe's entry lists exactly the keys in its +lines that gained a per-100g row between the previous and current vocabulary. +If a swing cannot be traced to any resolved key in the recipe, the tool fails +closed instead of writing an unexplained exemption. +""" +from __future__ import annotations + +import argparse +import json +from pathlib import Path + +REPO = Path(__file__).resolve().parents[3] +OUT_DEFAULT = REPO / "data/recipe-bundle/nutrition-changes-2026-10.json" +VOCAB = REPO / "data/ingredients/vocabulary.json" +DRIFT_THRESHOLD = 0.40 + + +def kcal_swing(old: float, new: float) -> float: + if old == 0: + return 0.0 if new == 0 else float("inf") + return abs(new - old) / old + + +def main() -> int: + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument("--new", default=str(REPO / "data/recipes/build/recipes-v2.json"), + help="newly compiled bundle") + ap.add_argument("--previous", required=True, help="previously published bundle") + ap.add_argument("--previous-vocab", required=True, + help="vocabulary.json as committed with the previous bundle") + ap.add_argument("--out", default=str(OUT_DEFAULT)) + ap.add_argument("--previous-note", required=True, + help="provenance of the previous bundle, e.g. the commit sha it ships in") + args = ap.parse_args() + + new = json.load(open(args.new)) + prev = json.load(open(args.previous)) + cur_vocab = {e["key"]: e for e in json.load(VOCAB.open())["entries"]} + prev_vocab = {e["key"]: e for e in json.load(open(args.previous_vocab))["entries"]} + + # Keys that gained a per-100g row between the two vocabulary revisions. + resolved = { + k: cur_vocab[k] for k in cur_vocab + if cur_vocab[k].get("per_100g") is not None + and prev_vocab.get(k, {}).get("per_100g") is None + } + print(f"vocabulary keys resolved between revisions: {len(resolved)}") + + prev_n = {r["catalog_id"]: r["nutrition_per_serving"] for r in prev["recipes"]} + entries = [] + unexplained = [] + for recipe in new["recipes"]: + rid = recipe["catalog_id"] + old_n = prev_n.get(rid) + if old_n is None: + continue + n = recipe["nutrition_per_serving"] + swing = kcal_swing(old_n["kcal"], n["kcal"]) + if swing <= DRIFT_THRESHOLD: + continue + line_keys = {line["key"] for line in recipe["ingredients"]} + cause = sorted(k for k in line_keys if k in resolved) + if not cause: + unexplained.append(rid) + continue + detail = ", ".join(f"{k} (fdc {resolved[k]['fdc_id']})" for k in cause) + entries.append({ + "catalog_id": rid, + "old_kcal": old_n["kcal"], + "new_kcal": n["kcal"], + "vocabulary_change": f"keys in this recipe resolved to per-100g rows " + f"in this revision: {detail}", + }) + if unexplained: + raise SystemExit( + "kcal swings with no resolved vocabulary key in the recipe lines: " + f"{sorted(unexplained)} — investigate before exempting") + + entries.sort(key=lambda e: e["catalog_id"]) + doc = { + "note": "Recipes whose per-serving kcal moved more than 40 percent against the " + "previously published bundle, with the vocabulary resolution that caused " + "each move. Recorded by data/recipes/tools/record_nutrition_changes.py; " + "enforced by validate_bundle.py --previous --changes.", + "policy": "A >40% kcal move between published bundles must be exempted here with " + "the vocabulary change that caused it; exemption entries must reproduce " + "both kcal values.", + "previous_bundle": args.previous_note, + "threshold": DRIFT_THRESHOLD, + "entries": entries, + } + Path(args.out).write_text(json.dumps(doc, indent=2, ensure_ascii=False) + "\n") + print(f"wrote {args.out}: {len(entries)} exempted kcal moves " + f"(of {len(new['recipes'])} recipes)") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/data/recipes/tools/tests/test_kcal_drift.py b/data/recipes/tools/tests/test_kcal_drift.py new file mode 100644 index 000000000..88625ad1c --- /dev/null +++ b/data/recipes/tools/tests/test_kcal_drift.py @@ -0,0 +1,119 @@ +"""Kcal-drift validation: a per-serving kcal move of more than 40 percent +against the previously published bundle must be recorded in +data/recipe-bundle/nutrition-changes-2026-10.json naming the vocabulary change +that caused it. Planted violations prove the check fails closed. +""" +from __future__ import annotations + +import json +import subprocess +import sys +from pathlib import Path + +import pytest + +REPO = Path(__file__).resolve().parents[4] +TOOLS = REPO / "data/recipes/tools" +sys.path.insert(0, str(TOOLS)) + +from validate_bundle import check_kcal_drift, kcal_swing # noqa: E402 + +BUNDLE = REPO / "data/recipes/build/recipes-v2.json" +CHANGES = REPO / "data/recipe-bundle/nutrition-changes-2026-10.json" + + +def recipe(rid: str, kcal: float) -> dict: + return {"catalog_id": rid, "nutrition_per_serving": {"kcal": kcal}} + + +def doc(*recipes: dict) -> dict: + return {"recipes": list(recipes)} + + +def entry(rid: str, old: float, new: float, + cause: str = "gochujang resolved to per-100g rows") -> dict: + return {"catalog_id": rid, "old_kcal": old, "new_kcal": new, + "vocabulary_change": cause} + + +# ---- 1. swing math and the no-previous skip -------------------------------- + +def test_kcal_swing_math_and_no_previous_skip(): + assert kcal_swing(100, 150) == pytest.approx(0.5) + assert kcal_swing(100, 60) == pytest.approx(0.4) # exactly 40% is allowed + assert kcal_swing(100, 59) == pytest.approx(0.41) # over 40% is not + assert kcal_swing(0, 0) == 0.0 + assert kcal_swing(0, 10) == float("inf") + # no previous bundle: nothing to compare against + assert check_kcal_drift(doc(recipe("rcp-1", 500.0)), None, None) == [] + + +# ---- 2. planted violations around exemptions -------------------------------- + +def test_drift_requires_matching_exemption_with_cause(): + new, prev = doc(recipe("rcp-1", 180.0)), doc(recipe("rcp-1", 100.0)) + # unrecorded move fails, naming the recipe + errs = check_kcal_drift(new, prev, None) + assert len(errs) == 1 and "rcp-1" in errs[0] + # matching exemption with a cause passes + ok = {"entries": [entry("rcp-1", 100.0, 180.0)]} + assert check_kcal_drift(new, prev, ok) == [] + # stale kcal values in the exemption fail + stale = {"entries": [entry("rcp-1", 100.0, 150.0)]} + assert any("stale exemption" in e for e in check_kcal_drift(new, prev, stale)) + # blank cause fails + blank = {"entries": [entry("rcp-1", 100.0, 180.0, cause=" ")]} + assert any("vocabulary change" in e for e in check_kcal_drift(new, prev, blank)) + + +def test_fieldless_exemption_fails_closed(): + new, prev = doc(recipe("rcp-1", 180.0)), doc(recipe("rcp-1", 100.0)) + # an exemption that omits the kcal fields must not pass silently + # (NaN-based comparisons are always False, so a bare entry used to slip through) + blank_kcal = {"entries": [{"catalog_id": "rcp-1", + "vocabulary_change": "gochujang resolved to per-100g rows"}]} + errs = check_kcal_drift(new, prev, blank_kcal) + assert any("rcp-1" in e and "missing old_kcal" in e for e in errs) + assert any("missing new_kcal" in e for e in errs) + + +# ---- 3. zero-kcal and new-recipe edges --------------------------------------- + +def test_zero_kcal_and_new_recipe_edges(): + # a recipe that previously shipped kcal 0 and now has energy needs an entry + errs = check_kcal_drift(doc(recipe("rcp-1", 50.0)), doc(recipe("rcp-1", 0.0)), None) + assert len(errs) == 1 and "rcp-1" in errs[0] + assert check_kcal_drift(doc(recipe("rcp-1", 0.0)), doc(recipe("rcp-1", 0.0)), None) == [] + # a brand-new recipe has no previous line to compare against + assert check_kcal_drift( + doc(recipe("rcp-new", 900.0)), doc(recipe("rcp-old", 100.0)), None) == [] + + +# ---- 4. real bundles: seeded violation caught, committed file consistent ---- + +def test_seeded_drift_violation_and_real_changes_file_consistency(): + bundle = json.load(BUNDLE.open()) + rid = bundle["recipes"][0]["catalog_id"] + n = bundle["recipes"][0]["nutrition_per_serving"] + n["kcal"] = round(n["kcal"] * 3, 1) # a 200% move with no exemption + bad = REPO / "data/recipes/build/_seeded-drift.json" + bad.write_text(json.dumps(bundle)) + try: + out = subprocess.run( + [sys.executable, str(TOOLS / "validate_bundle.py"), str(bad), + "--previous", str(BUNDLE), "--changes", str(CHANGES)], + capture_output=True, text=True, cwd=REPO) + assert out.returncode == 1 + assert rid in out.stdout + assert "against the previous published" in out.stdout + finally: + bad.unlink() + + # the committed changes file must reproduce the shipped bundle's kcal for + # every exemption and name a vocabulary change (no stale entries) + changes = json.load(CHANGES.open()) + assert changes["entries"], "changes file must not be empty" + kcal = {r["catalog_id"]: r["nutrition_per_serving"]["kcal"] for r in bundle["recipes"]} + for e in changes["entries"]: + assert abs(e["new_kcal"] - kcal[e["catalog_id"]]) <= 0.05 + assert (e["vocabulary_change"] or "").strip() diff --git a/data/recipes/tools/validate_bundle.py b/data/recipes/tools/validate_bundle.py index 2db0b6aac..3818b2816 100644 --- a/data/recipes/tools/validate_bundle.py +++ b/data/recipes/tools/validate_bundle.py @@ -11,6 +11,9 @@ 5. Rights: every recipe carries an original/quarantined status with evidence. 6. FSIS: a thermometer endpoint may only appear on a step of a recipe that uses a meat/fish class ingredient, and endpoints must match FSIS tables. +7. (optional) Kcal drift: with --previous, a per-serving kcal move of more + than 40 percent against the previously published bundle must be recorded + in a changes file (--changes) naming the vocabulary change that caused it. Exit code 0 and "PASS" on success; every failure is printed with its recipe id. """ @@ -38,6 +41,9 @@ # 7 kcal/g that the shipped macros cannot express. ATWATER = {"protein_g": 4, "carbs_g": 4, "fat_g": 9} ATWATER_FIBER = 2 +KCAL_DRIFT_THRESHOLD = 0.40 +KCAL_MATCH_TOLERANCE = 0.05 +CHANGES_FILE = REPO / "data/recipe-bundle/nutrition-changes-2026-10.json" ALCOHOL_KEYS = { "red_wine", "white_wine", "beer", "lager", "ale", "rum", "vodka", "brandy", "whiskey", "sherry", "mirin", "cooking_wine", "kahlua", "cointreau", @@ -62,7 +68,59 @@ def atwater_ok(n: dict, has_alcohol: bool) -> bool: return abs(n["kcal"] - expected) <= max(50.0, 0.40 * expected) -def main(path: str) -> int: +def kcal_swing(old: float, new: float) -> float: + """Relative per-serving kcal move; infinite when the old value was zero.""" + if old == 0: + return 0.0 if new == 0 else float("inf") + return abs(new - old) / old + + +def check_kcal_drift(new: dict, prev: dict | None, changes: dict | None) -> list[str]: + """Every >40 percent kcal move against the previous published bundle must + be exempted in the changes file with the vocabulary change that caused it. + Entries must reproduce both kcal values so stale exemptions fail loudly.""" + errors: list[str] = [] + if prev is None: + return errors + prev_n = {r["catalog_id"]: r.get("nutrition_per_serving", {}) for r in prev["recipes"]} + exemptions = {e["catalog_id"]: e for e in (changes or {}).get("entries", [])} + swings = 0 + for recipe in new["recipes"]: + rid = recipe["catalog_id"] + old_n = prev_n.get(rid) + if old_n is None or "kcal" not in old_n: + continue # new or re-keyed recipe: nothing to compare against + n = recipe.get("nutrition_per_serving", {}) + if "kcal" not in n: + continue + swing = kcal_swing(old_n["kcal"], n["kcal"]) + if swing <= KCAL_DRIFT_THRESHOLD: + continue + swings += 1 + entry = exemptions.get(rid) + if entry is None: + errors.append( + f"{rid}: kcal moved {old_n['kcal']} -> {n['kcal']} " + f"(>{KCAL_DRIFT_THRESHOLD:.0%}) against the previous published " + f"bundle; record the vocabulary change that caused it in " + f"{CHANGES_FILE.name}") + continue + for field, value in (("old_kcal", old_n["kcal"]), ("new_kcal", n["kcal"])): + if field not in entry: + errors.append( + f"{rid}: exemption missing {field}; it must reproduce both " + "kcal values of the move it exempts") + continue + if abs(entry[field] - value) > KCAL_MATCH_TOLERANCE: + errors.append( + f"{rid}: exemption {field} is {entry.get(field)!r} but the " + f"bundle value is {value!r}; stale exemption") + if not (entry.get("vocabulary_change") or "").strip(): + errors.append(f"{rid}: exemption must name the vocabulary change that caused it") + return errors + + +def main(path: str, previous: str | None = None, changes: str | None = None) -> int: bundle = json.load(open(path)) schema = json.load(SCHEMA.open()) errors: list[str] = [] @@ -72,6 +130,16 @@ def main(path: str) -> int: loc = "/".join(str(p) for p in err.absolute_path) or "" fail(errors, loc, err.message[:160]) + prev_bundle = json.load(open(previous)) if previous else None + changes_doc = json.load(open(changes)) if changes else None + if previous and not changes_doc: + print("note: no changes file supplied; any kcal swing will fail") + drift_errors = check_kcal_drift(bundle, prev_bundle, changes_doc) + errors.extend(drift_errors) + if prev_bundle is not None: + print(f"kcal drift: compared against {previous}; " + f"{len(drift_errors)} unrecorded/exempted problems") + ingredients = {i["key"]: i for i in bundle["ingredients"]} # Bundle ingredients carry no class field (schema forbids extras); the # fail-closed claims and FSIS checks read classes from the vocabulary. @@ -124,4 +192,11 @@ def main(path: str) -> int: if __name__ == "__main__": - sys.exit(main(sys.argv[1] if len(sys.argv) > 1 else "data/recipes/build/recipes-v2.json")) + import argparse + + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument("bundle", nargs="?", default="data/recipes/build/recipes-v2.json") + ap.add_argument("--previous", help="previously published bundle to compare kcal against") + ap.add_argument("--changes", help="changes file exempting >40%% kcal moves") + args = ap.parse_args() + sys.exit(main(args.bundle, args.previous, args.changes)) diff --git a/evaluation/catalog-reach/reach-after.json b/evaluation/catalog-reach/reach-after.json new file mode 100644 index 000000000..35341ee47 --- /dev/null +++ b/evaluation/catalog-reach/reach-after.json @@ -0,0 +1,203 @@ +{ + "bundle_version": 2, + "generated_at": "2026-10-15T16:46:35Z", + "vocabulary_keys": 329, + "resolvable_keys": 283, + "resolvable_by_legacy_id": 0, + "resolvable_by_fdc_id": 283, + "unresolvable_keys": 46, + "recipes_total": 763, + "recipes_with_no_required_lines": 0, + "fully_resolvable_recipes": 655, + "fully_resolvable_share": 0.8585, + "fully_resolvable_by_cuisine": { + "american": 150, + "asian": 149, + "indian": 40, + "italian": 102, + "mediterranean": 116, + "mexican": 98 + }, + "recipes_by_cuisine": { + "american": 161, + "asian": 191, + "indian": 76, + "italian": 105, + "mediterranean": 132, + "mexican": 98 + }, + "original_rights_recipes": 461, + "fully_resolvable_original_rights_recipes": 373, + "fully_resolvable_original_rights_share": 0.8091, + "blocked_by_unresolved_key_recipes": 108, + "blocked_by_unresolved_key_original_rights_recipes": 88, + "top_unresolved_keys_blocking_recipes": [ + { + "key": "garam_masala", + "recipes_blocked": 26, + "fdc_id": null + }, + { + "key": "scotch_bonnet", + "recipes_blocked": 15, + "fdc_id": null + }, + { + "key": "gochujang", + "recipes_blocked": 9, + "fdc_id": null + }, + { + "key": "thai_chilies", + "recipes_blocked": 8, + "fdc_id": null + }, + { + "key": "mirin", + "recipes_blocked": 5, + "fdc_id": null + }, + { + "key": "harissa", + "recipes_blocked": 4, + "fdc_id": null + }, + { + "key": "halloumi", + "recipes_blocked": 4, + "fdc_id": null + }, + { + "key": "black_vinegar", + "recipes_blocked": 4, + "fdc_id": null + }, + { + "key": "stock", + "recipes_blocked": 4, + "fdc_id": null + }, + { + "key": "sichuan_peppercorns", + "recipes_blocked": 3, + "fdc_id": null + }, + { + "key": "jerk_seasoning", + "recipes_blocked": 2, + "fdc_id": null + }, + { + "key": "pomegranate_molasses", + "recipes_blocked": 2, + "fdc_id": null + }, + { + "key": "galangal", + "recipes_blocked": 2, + "fdc_id": null + }, + { + "key": "star_anise", + "recipes_blocked": 2, + "fdc_id": null + }, + { + "key": "beef_meatballs", + "recipes_blocked": 2, + "fdc_id": null + }, + { + "key": "zaatar", + "recipes_blocked": 2, + "fdc_id": null + }, + { + "key": "flattened_rice", + "recipes_blocked": 1, + "fdc_id": null + }, + { + "key": "artichoke_hearts", + "recipes_blocked": 1, + "fdc_id": null + }, + { + "key": "farro", + "recipes_blocked": 1, + "fdc_id": null + }, + { + "key": "ras_el_hanout", + "recipes_blocked": 1, + "fdc_id": null + }, + { + "key": "preserved_lemon", + "recipes_blocked": 1, + "fdc_id": null + }, + { + "key": "nduja", + "recipes_blocked": 1, + "fdc_id": null + }, + { + "key": "beef_vegetable_stock", + "recipes_blocked": 1, + "fdc_id": null + }, + { + "key": "sweet_potato_noodles", + "recipes_blocked": 1, + "fdc_id": null + }, + { + "key": "doenjang", + "recipes_blocked": 1, + "fdc_id": null + }, + { + "key": "gochugaru", + "recipes_blocked": 1, + "fdc_id": null + }, + { + "key": "potato_starch", + "recipes_blocked": 1, + "fdc_id": null + }, + { + "key": "black_bean_paste", + "recipes_blocked": 1, + "fdc_id": null + }, + { + "key": "umeboshi", + "recipes_blocked": 1, + "fdc_id": null + }, + { + "key": "dashi", + "recipes_blocked": 1, + "fdc_id": null + } + ], + "pantry_replay": { + "pantries": 200, + "size_range": [ + 12, + 25 + ], + "seed": 42, + "pool_size": 1000, + "exact_missing_0_median": 0.0, + "exact_missing_0_p10": 0, + "exact_missing_0_p90": 1, + "at_most_2_missing_median": 72.0, + "at_most_2_missing_p10": 67, + "at_most_2_missing_p90": 91, + "original_rights_exact_missing_0_median": 0.0, + "original_rights_at_most_2_missing_median": 46.5 + } +} diff --git a/evaluation/catalog-reach/reach-after.md b/evaluation/catalog-reach/reach-after.md new file mode 100644 index 000000000..b5eb2c95c --- /dev/null +++ b/evaluation/catalog-reach/reach-after.md @@ -0,0 +1,53 @@ +# Catalog reach report + +- Vocabulary keys: **329**, resolvable **283** (legacy_id 0, fdc_id 283), unresolvable 46 +- Recipes: **763**, fully resolvable **655** (85.9%) +- Original-rights recipes: 461, fully resolvable **373** (80.9%) +- Recipes blocked by at least one unresolved required key: 108 +- Pantry replay (200 pantries of 12-25 ingredients, seed 42, pool 1000): exact median **0.0** (p10 0, p90 1), at-most-2-missing median **72.0** (p10 67, p90 91) + +## Fully resolvable by cuisine + +| cuisine | fully resolvable | total | +|---|---|---| +| american | 150 | 161 | +| asian | 149 | 191 | +| indian | 40 | 76 | +| italian | 102 | 105 | +| mediterranean | 116 | 132 | +| mexican | 98 | 98 | + +## Top unresolved keys blocking recipes (30 shown) + +| key | recipes blocked | fdc_id | +|---|---|---| +| `garam_masala` | 26 | None | +| `scotch_bonnet` | 15 | None | +| `gochujang` | 9 | None | +| `thai_chilies` | 8 | None | +| `mirin` | 5 | None | +| `harissa` | 4 | None | +| `halloumi` | 4 | None | +| `black_vinegar` | 4 | None | +| `stock` | 4 | None | +| `sichuan_peppercorns` | 3 | None | +| `jerk_seasoning` | 2 | None | +| `pomegranate_molasses` | 2 | None | +| `galangal` | 2 | None | +| `star_anise` | 2 | None | +| `beef_meatballs` | 2 | None | +| `zaatar` | 2 | None | +| `flattened_rice` | 1 | None | +| `artichoke_hearts` | 1 | None | +| `farro` | 1 | None | +| `ras_el_hanout` | 1 | None | +| `preserved_lemon` | 1 | None | +| `nduja` | 1 | None | +| `beef_vegetable_stock` | 1 | None | +| `sweet_potato_noodles` | 1 | None | +| `doenjang` | 1 | None | +| `gochugaru` | 1 | None | +| `potato_starch` | 1 | None | +| `black_bean_paste` | 1 | None | +| `umeboshi` | 1 | None | +| `dashi` | 1 | None | diff --git a/evaluation/catalog-reach/reach-before.json b/evaluation/catalog-reach/reach-before.json new file mode 100644 index 000000000..b343335ec --- /dev/null +++ b/evaluation/catalog-reach/reach-before.json @@ -0,0 +1,203 @@ +{ + "bundle_version": 2, + "generated_at": "2026-10-15T12:45:00Z", + "vocabulary_keys": 329, + "resolvable_keys": 112, + "resolvable_by_legacy_id": 0, + "resolvable_by_fdc_id": 112, + "unresolvable_keys": 217, + "recipes_total": 763, + "recipes_with_no_required_lines": 0, + "fully_resolvable_recipes": 70, + "fully_resolvable_share": 0.0917, + "fully_resolvable_by_cuisine": { + "american": 10, + "asian": 27, + "indian": 3, + "italian": 5, + "mediterranean": 17, + "mexican": 8 + }, + "recipes_by_cuisine": { + "american": 161, + "asian": 191, + "indian": 76, + "italian": 105, + "mediterranean": 132, + "mexican": 98 + }, + "original_rights_recipes": 461, + "fully_resolvable_original_rights_recipes": 33, + "fully_resolvable_original_rights_share": 0.0716, + "blocked_by_unresolved_key_recipes": 693, + "blocked_by_unresolved_key_original_rights_recipes": 428, + "top_unresolved_keys_blocking_recipes": [ + { + "key": "egg", + "recipes_blocked": 125, + "fdc_id": 171287 + }, + { + "key": "canned_tomatoes", + "recipes_blocked": 103, + "fdc_id": 2709719 + }, + { + "key": "white_rice", + "recipes_blocked": 60, + "fdc_id": 2708422 + }, + { + "key": "chickpeas", + "recipes_blocked": 53, + "fdc_id": 173756 + }, + { + "key": "bread", + "recipes_blocked": 46, + "fdc_id": 2707598 + }, + { + "key": "chicken_stock", + "recipes_blocked": 43, + "fdc_id": null + }, + { + "key": "milk", + "recipes_blocked": 41, + "fdc_id": 171265 + }, + { + "key": "chicken_thigh", + "recipes_blocked": 41, + "fdc_id": 2706037 + }, + { + "key": "pasta_dried", + "recipes_blocked": 37, + "fdc_id": 2708357 + }, + { + "key": "parmesan", + "recipes_blocked": 31, + "fdc_id": 2705730 + }, + { + "key": "cheddar", + "recipes_blocked": 30, + "fdc_id": 2705709 + }, + { + "key": "white_beans", + "recipes_blocked": 29, + "fdc_id": 2707353 + }, + { + "key": "tofu", + "recipes_blocked": 29, + "fdc_id": 174291 + }, + { + "key": "ground_turmeric", + "recipes_blocked": 28, + "fdc_id": null + }, + { + "key": "parsley", + "recipes_blocked": 27, + "fdc_id": 2709796 + }, + { + "key": "chipotle", + "recipes_blocked": 27, + "fdc_id": 2705619 + }, + { + "key": "garam_masala", + "recipes_blocked": 26, + "fdc_id": null + }, + { + "key": "cheese", + "recipes_blocked": 26, + "fdc_id": 2705704 + }, + { + "key": "corn_tortillas", + "recipes_blocked": 25, + "fdc_id": 2707823 + }, + { + "key": "basil", + "recipes_blocked": 25, + "fdc_id": 2709780 + }, + { + "key": "vegetable_stock", + "recipes_blocked": 23, + "fdc_id": null + }, + { + "key": "avocado", + "recipes_blocked": 23, + "fdc_id": 171705 + }, + { + "key": "salmon", + "recipes_blocked": 21, + "fdc_id": 175167 + }, + { + "key": "pasta", + "recipes_blocked": 19, + "fdc_id": 2708357 + }, + { + "key": "tortillas", + "recipes_blocked": 19, + "fdc_id": 2707822 + }, + { + "key": "fish_sauce", + "recipes_blocked": 19, + "fdc_id": 174531 + }, + { + "key": "feta", + "recipes_blocked": 18, + "fdc_id": 2705714 + }, + { + "key": "yogurt", + "recipes_blocked": 18, + "fdc_id": 2705414 + }, + { + "key": "shrimp", + "recipes_blocked": 17, + "fdc_id": 174210 + }, + { + "key": "ground_ginger", + "recipes_blocked": 16, + "fdc_id": null + } + ], + "pantry_replay": { + "pantries": 200, + "size_range": [ + 12, + 25 + ], + "seed": 42, + "pool_size": 850, + "exact_missing_0_median": 0.0, + "exact_missing_0_p10": 0, + "exact_missing_0_p90": 1, + "at_most_2_missing_median": 68.0, + "at_most_2_missing_p10": 66, + "at_most_2_missing_p90": 85, + "original_rights_exact_missing_0_median": 0.0, + "original_rights_at_most_2_missing_median": 43.0 + } +} diff --git a/evaluation/catalog-reach/reach-before.md b/evaluation/catalog-reach/reach-before.md new file mode 100644 index 000000000..41783eb15 --- /dev/null +++ b/evaluation/catalog-reach/reach-before.md @@ -0,0 +1,53 @@ +# Catalog reach report + +- Vocabulary keys: **329**, resolvable **112** (legacy_id 0, fdc_id 112), unresolvable 217 +- Recipes: **763**, fully resolvable **70** (9.2%) +- Original-rights recipes: 461, fully resolvable **33** (7.2%) +- Recipes blocked by at least one unresolved required key: 693 +- Pantry replay (200 pantries of 12-25 ingredients, seed 42, pool 850): exact median **0.0** (p10 0, p90 1), at-most-2-missing median **68.0** (p10 66, p90 85) + +## Fully resolvable by cuisine + +| cuisine | fully resolvable | total | +|---|---|---| +| american | 10 | 161 | +| asian | 27 | 191 | +| indian | 3 | 76 | +| italian | 5 | 105 | +| mediterranean | 17 | 132 | +| mexican | 8 | 98 | + +## Top unresolved keys blocking recipes (30 shown) + +| key | recipes blocked | fdc_id | +|---|---|---| +| `egg` | 125 | 171287 | +| `canned_tomatoes` | 103 | 2709719 | +| `white_rice` | 60 | 2708422 | +| `chickpeas` | 53 | 173756 | +| `bread` | 46 | 2707598 | +| `chicken_stock` | 43 | None | +| `milk` | 41 | 171265 | +| `chicken_thigh` | 41 | 2706037 | +| `pasta_dried` | 37 | 2708357 | +| `parmesan` | 31 | 2705730 | +| `cheddar` | 30 | 2705709 | +| `white_beans` | 29 | 2707353 | +| `tofu` | 29 | 174291 | +| `ground_turmeric` | 28 | None | +| `parsley` | 27 | 2709796 | +| `chipotle` | 27 | 2705619 | +| `garam_masala` | 26 | None | +| `cheese` | 26 | 2705704 | +| `corn_tortillas` | 25 | 2707823 | +| `basil` | 25 | 2709780 | +| `vegetable_stock` | 23 | None | +| `avocado` | 23 | 171705 | +| `salmon` | 21 | 175167 | +| `pasta` | 19 | 2708357 | +| `tortillas` | 19 | 2707822 | +| `fish_sauce` | 19 | 174531 | +| `feta` | 18 | 2705714 | +| `yogurt` | 18 | 2705414 | +| `shrimp` | 17 | 174210 | +| `ground_ginger` | 16 | None | diff --git a/evaluation/catalog-reach/reach_report.py b/evaluation/catalog-reach/reach_report.py new file mode 100644 index 000000000..b5c090fdb --- /dev/null +++ b/evaluation/catalog-reach/reach_report.py @@ -0,0 +1,384 @@ +#!/usr/bin/env python3 +"""Catalog reach report: how much of the shipped recipe catalog a real kitchen can cook. + +Replays, in Python, the exact identity rules the iOS hydration-time bridge applies +(`RecipeCatalogIngredientBridge.rebuild`): + + 1. `legacy_id`, when the vocabulary row carries one and the app ingredient exists. + 2. Otherwise the key's `fdc_id` against the shipped USDA catalog row for that id: + the source row's exact name and its exact (lowercased) aliases, matched against + the app ingredient space. No similarity, no guessing: a miss leaves the key + unresolved, and every required line on an unresolved key counts as "not in your + kitchen" for every user. + +The app ingredient space is what first-launch hydration builds +(`BundledDataLoader.loadInto` → `loadUSDACatalogIngredientsIfAvailable`): the legacy +`data.json` ingredients (fixed integer ids, no aliases) plus every USDA catalog row +(id = fdc_id, aliases lowercased). Pantry replay draws uniformly from those rows — +the ingredient ids the scan and manual-add flows can actually produce. + +Outputs a JSON report (and a markdown summary) with: + - resolvable keys (total, by legacy_id, by fdc_id) + - fully resolvable recipes overall, by cuisine, and among original-rights recipes + - the unresolved keys that block the most recipes (top N) + - a pantry replay: 200 pantries of 12-25 ingredients (fixed seed), counting recipes + with 0 missing required lines (exact) and at most 2 (near-match tier), with medians. + +Usage: + python3 reach_report.py --repo-root /path/to/FridgeLuck --out reach.json [--md reach.md] +""" + +from __future__ import annotations + +import argparse +import json +import random +import sqlite3 +import statistics +from collections import Counter, defaultdict +from pathlib import Path +from typing import Any + +PANTRY_REPLAY_PANTRIES = 200 +PANTRY_REPLAY_MIN_SIZE = 12 +PANTRY_REPLAY_MAX_SIZE = 25 +PANTRY_REPLAY_SEED = 42 +BLOCKING_KEY_LIMIT = 30 +NEAR_MATCH_MAX_MISSING = 2 + + +def load_vocabulary(bundle: dict[str, Any]) -> list[dict[str, Any]]: + return bundle["ingredients"] + + +def load_recipes(bundle: dict[str, Any]) -> list[dict[str, Any]]: + return bundle["recipes"] + + +def load_usda_catalog(path: Path) -> tuple[dict[int, str], dict[int, list[str]]]: + """Shipped USDA source rows: fdc_id -> exact name, fdc_id -> lowercased aliases.""" + conn = sqlite3.connect(f"file:{path}?mode=ro", uri=True) + try: + names: dict[int, str] = {} + for fdc_id, name in conn.execute("SELECT fdc_id, display_name FROM ingredient_catalog"): + names[int(fdc_id)] = name + aliases: dict[int, list[str]] = defaultdict(list) + for ingredient_id, alias in conn.execute( + "SELECT ingredient_id, alias FROM ingredient_aliases WHERE alias <> ''" + ): + aliases[int(ingredient_id)].append(alias.lower()) + return names, dict(aliases) + finally: + conn.close() + + +def load_legacy_map(path: Path) -> tuple[dict[int, int], dict[int, list[int]]]: + """Legacy app ingredients from data.json: id -> name, id -> [] (data.json carries + no aliases; the alias table is USDA-hydrated only).""" + data = json.loads(path.read_text()) + ids: dict[int, int] = {} + names: dict[int, str] = {} + for id_string, raw in data["ingredients"].items(): + # IngredientArray: [name, calories, protein, carbs, fat, ...] + ingredient_id = int(id_string) + ids[ingredient_id] = ingredient_id + names[ingredient_id] = raw[0] if isinstance(raw, list) else raw["name"] + return ids, names + + +def build_app_ingredient_space( + legacy_names: dict[int, str], usda_names: dict[int, str], usda_aliases: dict[int, list[str]] +) -> tuple[dict[str, int], dict[str, set[int]]]: + """App `ingredients` (unique by name, first write wins: legacy before USDA) and + app `ingredient_aliases` (lowercased, USDA rows only).""" + ids_by_name: dict[str, int] = {} + for ingredient_id, name in sorted(legacy_names.items()): + ids_by_name.setdefault(name, ingredient_id) + for fdc_id, name in sorted(usda_names.items()): + ids_by_name.setdefault(name, fdc_id) + ids_by_alias: dict[str, set[int]] = defaultdict(set) + for fdc_id, alias_list in usda_aliases.items(): + if fdc_id not in usda_names: + continue + for alias in alias_list: + ids_by_alias[alias].add(fdc_id) + return ids_by_name, dict(ids_by_alias) + + +def build_resolver( + vocabulary: list[dict[str, Any]], + legacy_names: dict[int, str], + usda_names: dict[int, str], + usda_aliases: dict[int, list[str]], + ids_by_name: dict[str, int], + ids_by_alias: dict[str, set[int]], +) -> tuple[dict[str, set[int]], dict[str, str]]: + """Exact bridge replay per key: resolved app ids and the rule that resolved it.""" + app_ids = set(legacy_names) | set(usda_names) + resolved: dict[str, set[int]] = {} + resolved_by: dict[str, str] = {} + for row in vocabulary: + key = row["key"] + legacy_id = row.get("legacy_id") + fdc_id = row.get("fdc_id") + ids: set[int] = set() + by = "" + if legacy_id is not None and int(legacy_id) in app_ids: + ids.add(int(legacy_id)) + by = "legacy_id" + elif fdc_id is not None: + fdc_id = int(fdc_id) + source_name = usda_names.get(fdc_id) + if source_name is not None and source_name in ids_by_name: + ids.add(ids_by_name[source_name]) + for alias in usda_aliases.get(fdc_id, []): + ids |= ids_by_alias.get(alias, set()) + if ids: + by = "fdc_id" + if ids: + resolved[key] = ids + resolved_by[key] = by + return resolved, resolved_by + + +def required_lines(recipe: dict[str, Any]) -> list[dict[str, Any]]: + """Required lines that can block a match: assumed staples never do.""" + return [ + line + for line in recipe["ingredients"] + if line.get("required", True) and not line.get("assumed_staple", False) + ] + + +def unresolved_key_blocks(vocabulary, recipes, resolved) -> Counter: + """For each unresolved key, how many recipes carry it on a required line.""" + blocks: Counter = Counter() + for recipe in recipes: + for line in required_lines(recipe): + if line["key"] not in resolved: + blocks[line["key"]] += 1 + return blocks + + +def pantry_replay( + recipes: list[dict[str, Any]], + resolved: dict[str, set[int]], + pantry_pool: list[int], + rights_by_catalog_id: dict[str, str], +) -> dict[str, Any]: + """200 pantries of 12-25 items, fixed seed. Counts recipes reachable with 0 and + at most 2 missing required lines per pantry, with medians across pantries.""" + rng = random.Random(PANTRY_REPLAY_SEED) + per_recipe_lines = [] + for recipe in recipes: + lines = [ + resolved.get(line["key"], set()) # unresolved key -> never in the pantry + for line in required_lines(recipe) + ] + per_recipe_lines.append((recipe["catalog_id"], lines)) + + exact_counts: list[int] = [] + near_counts: list[int] = [] + original_exact_counts: list[int] = [] + original_near_counts: list[int] = [] + for _ in range(PANTRY_REPLAY_PANTRIES): + pantry = set(rng.sample(pantry_pool, rng.randint(PANTRY_REPLAY_MIN_SIZE, PANTRY_REPLAY_MAX_SIZE))) + exact = 0 + near = 0 + original_exact = 0 + original_near = 0 + for catalog_id, lines in per_recipe_lines: + if not lines: + continue # no required non-staple lines: the engine never surfaces it + missing = sum(1 for ids in lines if not ids & pantry) + if missing > NEAR_MATCH_MAX_MISSING: + continue + near += 1 + if missing == 0: + exact += 1 + if rights_by_catalog_id.get(catalog_id) == "original": + original_near += 1 + if missing == 0: + original_exact += 1 + exact_counts.append(exact) + near_counts.append(near) + original_exact_counts.append(original_exact) + original_near_counts.append(original_near) + + return { + "pantries": PANTRY_REPLAY_PANTRIES, + "size_range": [PANTRY_REPLAY_MIN_SIZE, PANTRY_REPLAY_MAX_SIZE], + "seed": PANTRY_REPLAY_SEED, + "pool_size": len(pantry_pool), + "exact_missing_0_median": statistics.median(exact_counts), + "exact_missing_0_p10": sorted(exact_counts)[PANTRY_REPLAY_PANTRIES // 10], + "exact_missing_0_p90": sorted(exact_counts)[PANTRY_REPLAY_PANTRIES * 9 // 10], + "at_most_2_missing_median": statistics.median(near_counts), + "at_most_2_missing_p10": sorted(near_counts)[PANTRY_REPLAY_PANTRIES // 10], + "at_most_2_missing_p90": sorted(near_counts)[PANTRY_REPLAY_PANTRIES * 9 // 10], + "original_rights_exact_missing_0_median": statistics.median(original_exact_counts), + "original_rights_at_most_2_missing_median": statistics.median(original_near_counts), + } + + +def build_report(repo_root: Path) -> dict[str, Any]: + bundle_path = repo_root / "apps/ios/Resources/RecipeCatalog/recipes-v2.json" + usda_path = repo_root / "apps/ios/Resources/usda_ingredient_catalog.sqlite" + data_json_path = repo_root / "apps/ios/Resources/data.json" + + bundle = json.loads(bundle_path.read_text()) + vocabulary = load_vocabulary(bundle) + recipes = load_recipes(bundle) + + usda_names, usda_aliases = load_usda_catalog(usda_path) + legacy_ids, legacy_names = load_legacy_map(data_json_path) + ids_by_name, ids_by_alias = build_app_ingredient_space(legacy_names, usda_names, usda_aliases) + + resolved, resolved_by = build_resolver( + vocabulary, legacy_ids, usda_names, usda_aliases, ids_by_name, ids_by_alias + ) + + rights = {recipe["catalog_id"]: recipe.get("rights", {}).get("status", "") for recipe in recipes} + + keys_total = len(vocabulary) + resolvable = len(resolved) + resolvable_by_legacy = sum(1 for by in resolved_by.values() if by == "legacy_id") + resolvable_by_fdc = sum(1 for by in resolved_by.values() if by == "fdc_id") + + unreachable_no_required = 0 + fully_resolvable_by_cuisine: Counter = Counter() + total_by_cuisine: Counter = Counter() + fully_resolvable = 0 + fully_resolvable_original = 0 + original_total = sum(1 for status in rights.values() if status == "original") + blocked_recipes = 0 + blocked_original = 0 + for recipe in recipes: + cuisine = recipe.get("cuisine", "") + total_by_cuisine[cuisine] += 1 + lines = required_lines(recipe) + ok = bool(lines) and all(line["key"] in resolved for line in lines) + if not lines: + unreachable_no_required += 1 + if ok: + fully_resolvable += 1 + fully_resolvable_by_cuisine[cuisine] += 1 + if rights.get(recipe["catalog_id"]) == "original": + fully_resolvable_original += 1 + elif lines: + blocked_recipes += 1 + if rights.get(recipe["catalog_id"]) == "original": + blocked_original += 1 + + blocks = unresolved_key_blocks(vocabulary, recipes, resolved) + top_blocks = [ + { + "key": key, + "recipes_blocked": count, + "fdc_id": next( + (row.get("fdc_id") for row in vocabulary if row["key"] == key), None + ), + } + for key, count in blocks.most_common(BLOCKING_KEY_LIMIT) + ] + + pantry_pool = sorted(set(legacy_ids) | set(usda_names)) + replay = pantry_replay(recipes, resolved, pantry_pool, rights) + + return { + "bundle_version": bundle.get("bundle_version"), + "generated_at": bundle.get("generated_at"), + "vocabulary_keys": keys_total, + "resolvable_keys": resolvable, + "resolvable_by_legacy_id": resolvable_by_legacy, + "resolvable_by_fdc_id": resolvable_by_fdc, + "unresolvable_keys": keys_total - resolvable, + "recipes_total": len(recipes), + "recipes_with_no_required_lines": unreachable_no_required, + "fully_resolvable_recipes": fully_resolvable, + "fully_resolvable_share": round(fully_resolvable / len(recipes), 4), + "fully_resolvable_by_cuisine": { + cuisine: fully_resolvable_by_cuisine.get(cuisine, 0) + for cuisine in sorted(total_by_cuisine) + }, + "recipes_by_cuisine": dict(sorted(total_by_cuisine.items())), + "original_rights_recipes": original_total, + "fully_resolvable_original_rights_recipes": fully_resolvable_original, + "fully_resolvable_original_rights_share": round( + fully_resolvable_original / original_total, 4 + ) + if original_total + else 0, + "blocked_by_unresolved_key_recipes": blocked_recipes, + "blocked_by_unresolved_key_original_rights_recipes": blocked_original, + "top_unresolved_keys_blocking_recipes": top_blocks, + "pantry_replay": replay, + } + + +def render_markdown(report: dict[str, Any]) -> str: + replay = report["pantry_replay"] + lines = [ + "# Catalog reach report", + "", + f"- Vocabulary keys: **{report['vocabulary_keys']}**, resolvable " + f"**{report['resolvable_keys']}** " + f"(legacy_id {report['resolvable_by_legacy_id']}, fdc_id {report['resolvable_by_fdc_id']}), " + f"unresolvable {report['unresolvable_keys']}", + f"- Recipes: **{report['recipes_total']}**, fully resolvable " + f"**{report['fully_resolvable_recipes']}** ({report['fully_resolvable_share']:.1%})", + f"- Original-rights recipes: {report['original_rights_recipes']}, fully resolvable " + f"**{report['fully_resolvable_original_rights_recipes']}** " + f"({report['fully_resolvable_original_rights_share']:.1%})", + f"- Recipes blocked by at least one unresolved required key: " + f"{report['blocked_by_unresolved_key_recipes']}", + f"- Pantry replay ({replay['pantries']} pantries of {replay['size_range'][0]}-" + f"{replay['size_range'][1]} ingredients, seed {replay['seed']}, pool " + f"{replay['pool_size']}): exact median **{replay['exact_missing_0_median']}** " + f"(p10 {replay['exact_missing_0_p10']}, p90 {replay['exact_missing_0_p90']}), " + f"at-most-2-missing median **{replay['at_most_2_missing_median']}** " + f"(p10 {replay['at_most_2_missing_p10']}, p90 {replay['at_most_2_missing_p90']})", + "", + "## Fully resolvable by cuisine", + "", + "| cuisine | fully resolvable | total |", + "|---|---|---|", + ] + for cuisine in sorted(report["recipes_by_cuisine"]): + lines.append( + f"| {cuisine} | {report['fully_resolvable_by_cuisine'][cuisine]} " + f"| {report['recipes_by_cuisine'][cuisine]} |" + ) + lines += [ + "", + f"## Top unresolved keys blocking recipes ({BLOCKING_KEY_LIMIT} shown)", + "", + "| key | recipes blocked | fdc_id |", + "|---|---|---|", + ] + for entry in report["top_unresolved_keys_blocking_recipes"]: + lines.append(f"| `{entry['key']}` | {entry['recipes_blocked']} | {entry['fdc_id']} |") + return "\n".join(lines) + "\n" + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--repo-root", type=Path, default=Path(__file__).resolve().parents[2]) + parser.add_argument("--out", type=Path, required=True, help="JSON report output path") + parser.add_argument("--md", type=Path, help="Optional markdown summary output path") + args = parser.parse_args() + + report = build_report(args.repo_root) + args.out.parent.mkdir(parents=True, exist_ok=True) + args.out.write_text(json.dumps(report, indent=2) + "\n") + if args.md: + args.md.write_text(render_markdown(report)) + print( + f"resolvable keys {report['resolvable_keys']}/{report['vocabulary_keys']}, " + f"fully resolvable recipes {report['fully_resolvable_recipes']}/{report['recipes_total']} " + f"({report['fully_resolvable_share']:.1%})" + ) + + +if __name__ == "__main__": + main() diff --git a/scripts/data/catalog/usda_curated_ingredients.json b/scripts/data/catalog/usda_curated_ingredients.json index 7dfe03983..478e321a1 100644 --- a/scripts/data/catalog/usda_curated_ingredients.json +++ b/scripts/data/catalog/usda_curated_ingredients.json @@ -1,6 +1,31 @@ { "generated_at_utc": "2026-02-12T02:08:28Z", "records": [ + { + "alt_names": [], + "category_label": "grain_legume", + "description": "Snacks, tortilla chips, plain, white corn, salted is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Snacks, tortilla chips, plain, white corn, salted", + "fdc_id": 167558, + "macros": { + "calories": 472.0, + "carbs_g": 67.78, + "fat_g": 20.68, + "fiber_g": 5.4, + "protein_g": 7.1, + "sodium_g": 0.328, + "sugar_g": 0.78 + }, + "source_description": "Snacks, tortilla chips, plain, white corn, salted", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Snacks", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, { "alt_names": [ "sweet potato fries", @@ -32,6 +57,31 @@ "sprite_group": "vegetable", "sprite_key": "sweet potato" }, + { + "alt_names": [], + "category_label": "grain_legume", + "description": "Cornmeal, blue (Navajo) is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Cornmeal, blue (Navajo)", + "fdc_id": 167628, + "macros": { + "calories": 398.0, + "carbs_g": 76.93, + "fat_g": 5.44, + "fiber_g": 8.7, + "protein_g": 10.4, + "sodium_g": 0.007, + "sugar_g": 1.81 + }, + "source_description": "Cornmeal, blue (Navajo)", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "American Indian/Alaska Native Foods", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, { "alt_names": [ "frozen whipped topping", @@ -2045,6 +2095,56 @@ "sprite_group": "protein", "sprite_key": "" }, + { + "alt_names": [], + "category_label": "herb_spice", + "description": "Cinnamon buns, frosted (includes honey buns) is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Cinnamon buns, frosted (includes honey buns)", + "fdc_id": 167940, + "macros": { + "calories": 452.0, + "carbs_g": 48.6, + "fat_g": 26.61, + "fiber_g": 1.2, + "protein_g": 4.45, + "sodium_g": 0.305, + "sugar_g": 25.7 + }, + "source_description": "Cinnamon buns, frosted (includes honey buns)", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Baked Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Focaccia, Italian flatbread, plain is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Focaccia, Italian flatbread, plain", + "fdc_id": 167945, + "macros": { + "calories": 249.0, + "carbs_g": 35.82, + "fat_g": 7.89, + "fiber_g": 1.8, + "protein_g": 8.77, + "sodium_g": 0.561, + "sugar_g": 1.75 + }, + "source_description": "Focaccia, Italian flatbread, plain", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Baked Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, { "alt_names": [ "peppercorn dressing", @@ -6943,6 +7043,31 @@ "sprite_group": "protein", "sprite_key": "" }, + { + "alt_names": [], + "category_label": "other", + "description": "Molasses is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Molasses", + "fdc_id": 168820, + "macros": { + "calories": 290.0, + "carbs_g": 74.73, + "fat_g": 0.1, + "fiber_g": 0.0, + "protein_g": 0.0, + "sodium_g": 0.037, + "sugar_g": 74.72 + }, + "source_description": "Molasses", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Sweets", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, { "alt_names": [ "yellow self-rising cornmeal", @@ -7408,6 +7533,31 @@ "sprite_group": "grain_legume", "sprite_key": "grain" }, + { + "alt_names": [], + "category_label": "grain_legume", + "description": "Wheat flour, whole-grain (Includes foods for USDA's Food Distribution Program) is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Wheat flour, whole-grain (Includes foods for USDA's Food Distribution Program)", + "fdc_id": 168893, + "macros": { + "calories": 340.0, + "carbs_g": 71.97, + "fat_g": 2.5, + "fiber_g": 10.7, + "protein_g": 13.21, + "sodium_g": 0.002, + "sugar_g": 0.41 + }, + "source_description": "Wheat flour, whole-grain (Includes foods for USDA's Food Distribution Program)", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Cereal Grains and Pasta", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, { "alt_names": [ "bread flour enriched", @@ -11191,6 +11341,31 @@ "sprite_group": "vegetable", "sprite_key": "squash" }, + { + "alt_names": [], + "category_label": "other", + "description": "Squash, winter, butternut, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Squash, winter, butternut, raw", + "fdc_id": 169295, + "macros": { + "calories": 45.0, + "carbs_g": 11.69, + "fat_g": 0.1, + "fiber_g": 2.0, + "protein_g": 1.0, + "sodium_g": 0.004, + "sugar_g": 2.2 + }, + "source_description": "Squash, winter, butternut, raw", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Vegetables and Vegetable Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, { "alt_names": [ "succotash", @@ -12305,6 +12480,31 @@ "sprite_group": "protein", "sprite_key": "" }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Syrups, maple is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Syrups, maple", + "fdc_id": 169661, + "macros": { + "calories": 260.0, + "carbs_g": 67.04, + "fat_g": 0.06, + "fiber_g": 0.0, + "protein_g": 0.04, + "sodium_g": 0.012, + "sugar_g": 60.46 + }, + "source_description": "Syrups, maple", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Sweets", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, { "alt_names": [ "white masa flour", @@ -19032,6 +19232,31 @@ "sprite_group": "vegetable", "sprite_key": "tomato" }, + { + "alt_names": [], + "category_label": "other", + "description": "Tomato products, canned, paste, without salt added (Includes foods for USDA's Food Distribution Program) is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Tomato products, canned, paste, without salt added (Includes foods for USDA's Food Distribution Program)", + "fdc_id": 170459, + "macros": { + "calories": 82.0, + "carbs_g": 18.91, + "fat_g": 0.47, + "fiber_g": 4.1, + "protein_g": 4.32, + "sodium_g": 0.059, + "sugar_g": 12.18 + }, + "source_description": "Tomato products, canned, paste, without salt added (Includes foods for USDA's Food Distribution Program)", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Vegetables and Vegetable Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, { "alt_names": [ "tomato powder", @@ -19435,6 +19660,31 @@ "sprite_group": "vegetable", "sprite_key": "seaweed" }, + { + "alt_names": [], + "category_label": "other", + "description": "Peppers, hot chili, green, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Peppers, hot chili, green, raw", + "fdc_id": 170497, + "macros": { + "calories": 40.0, + "carbs_g": 9.46, + "fat_g": 0.2, + "fiber_g": 1.5, + "protein_g": 2.0, + "sodium_g": 0.007, + "sugar_g": 5.1 + }, + "source_description": "Peppers, hot chili, green, raw", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Vegetables and Vegetable Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, { "alt_names": [ "shallots", @@ -20551,6 +20801,31 @@ "sprite_group": "nut_seed", "sprite_key": "seed" }, + { + "alt_names": [], + "category_label": "other", + "description": "Jams and preserves, apricot is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Jams and preserves, apricot", + "fdc_id": 170645, + "macros": { + "calories": 242.0, + "carbs_g": 64.4, + "fat_g": 0.2, + "fiber_g": 0.3, + "protein_g": 0.7, + "sodium_g": 0.04, + "sugar_g": 43.4 + }, + "source_description": "Jams and preserves, apricot", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Sweets", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, { "alt_names": [ "dry amaranth grain", @@ -21171,6 +21446,31 @@ "sprite_group": "dairy_egg", "sprite_key": "" }, + { + "alt_names": [], + "category_label": "dairy_egg", + "description": "Cream, fluid, heavy whipping is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Cream, fluid, heavy whipping", + "fdc_id": 170859, + "macros": { + "calories": 340.0, + "carbs_g": 2.84, + "fat_g": 36.08, + "fiber_g": 0.0, + "protein_g": 2.84, + "sodium_g": 0.027, + "sugar_g": 2.92 + }, + "source_description": "Cream, fluid, heavy whipping", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Dairy and Egg Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, { "alt_names": [ "powdered dessert topping", @@ -24364,6 +24664,106 @@ "sprite_group": "condiment", "sprite_key": "soup" }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Soup, SWANSON, vegetable broth is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Soup, SWANSON, vegetable broth", + "fdc_id": 171180, + "macros": { + "calories": 6.0, + "carbs_g": 1.02, + "fat_g": 0.07, + "fiber_g": 0.0, + "protein_g": 0.23, + "sodium_g": 0.303, + "sugar_g": 0.57 + }, + "source_description": "Soup, SWANSON, vegetable broth", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Soups, Sauces, and Gravies", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Sauce, hot chile, sriracha is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Sauce, hot chile, sriracha", + "fdc_id": 171186, + "macros": { + "calories": 93.0, + "carbs_g": 19.16, + "fat_g": 0.93, + "fiber_g": 2.2, + "protein_g": 1.93, + "sodium_g": 2.124, + "sugar_g": 15.11 + }, + "source_description": "Sauce, hot chile, sriracha", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Soups, Sauces, and Gravies", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "dairy_egg", + "description": "Milk, whole, 3.25% milkfat, with added vitamin D is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Milk, whole, 3.25% milkfat, with added vitamin D", + "fdc_id": 171265, + "macros": { + "calories": 61.0, + "carbs_g": 4.8, + "fat_g": 3.25, + "fiber_g": 0.0, + "protein_g": 3.15, + "sodium_g": 0.043, + "sugar_g": 5.05 + }, + "source_description": "Milk, whole, 3.25% milkfat, with added vitamin D", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Dairy and Egg Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Egg, whole, raw, fresh is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Egg, whole, raw, fresh", + "fdc_id": 171287, + "macros": { + "calories": 143.0, + "carbs_g": 0.72, + "fat_g": 9.51, + "fiber_g": 0.0, + "protein_g": 12.56, + "sodium_g": 0.142, + "sugar_g": 0.37 + }, + "source_description": "Egg, whole, raw, fresh", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Dairy and Egg Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, { "alt_names": [ "strawberry kefir", @@ -24396,310 +24796,262 @@ "sprite_key": "" }, { - "alt_names": [ - "olive oil", - "cooking olive oil", - "salad olive oil", - "pure olive oil", - "olive oil general" - ], - "category_label": "oil_fat", - "description": "Olive oil is a staple culinary oil used for sauteing, roasting, and dressings. This USDA row reflects oil values per 100 g.", - "display_name": "Olive Oil", - "fdc_id": 171413, + "alt_names": [], + "category_label": "other", + "description": "Spices, allspice, ground is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Spices, allspice, ground", + "fdc_id": 171315, "macros": { - "calories": 884.0, - "carbs_g": 0.0, - "fat_g": 100.0, - "fiber_g": 0.0, - "protein_g": 0.0, - "sodium_g": 0.002, + "calories": 263.0, + "carbs_g": 72.12, + "fat_g": 8.69, + "fiber_g": 21.6, + "protein_g": 6.09, + "sodium_g": 0.077, "sugar_g": 0.0 }, - "source_description": "Oil, olive, salad or cooking", + "source_description": "Spices, allspice, ground", "source_meta": { "data_type": "SR Legacy", - "food_category": "Fats and Oils", - "verification_source": "USDA FoodData Central API", - "verified_at_utc": "2026-02-11T22:06:02Z" + "food_category": "Spices and Herbs", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" }, - "sprite_group": "oil_fat", + "sprite_group": "other", "sprite_key": "" }, { - "alt_names": [ - "canned light tuna", - "light tuna in water", - "water-packed tuna", - "tuna canned in water", - "drained canned tuna", - "salt-free canned tuna" - ], - "category_label": "protein", - "description": "Water-packed canned light tuna is a staple protein for salads, sandwiches, and casseroles. This USDA row reflects drained solids without salt added, per 100 g.", - "display_name": "Canned Light Tuna (Water-Packed)", - "fdc_id": 171986, + "alt_names": [], + "category_label": "herb_spice", + "description": "Spices, chili powder is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Spices, chili powder", + "fdc_id": 171319, "macros": { - "calories": 116.0, - "carbs_g": 0.0, - "fat_g": 0.82, - "fiber_g": 0.0, - "protein_g": 25.51, - "sodium_g": 0.05, - "sugar_g": 0.0 + "calories": 282.0, + "carbs_g": 49.7, + "fat_g": 14.28, + "fiber_g": 34.8, + "protein_g": 13.46, + "sodium_g": 2.867, + "sugar_g": 7.19 }, - "source_description": "Fish, tuna, light, canned in water, without salt, drained solids", + "source_description": "Spices, chili powder", "source_meta": { "data_type": "SR Legacy", - "food_category": "Finfish and Shellfish Products", - "verification_source": "USDA FoodData Central API", - "verified_at_utc": "2026-02-11T22:06:02Z" + "food_category": "Spices and Herbs", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" }, - "sprite_group": "protein", + "sprite_group": "other", "sprite_key": "" }, { - "alt_names": [ - "chicken tenders", - "fast food chicken tenders", - "fried chicken tenders", - "breaded chicken tenders", - "chicken strips" - ], - "category_label": "protein", - "description": "Chicken tenders here represent a prepared fast-food style item, useful for mixed dish estimates and convenience-food tracking. This USDA row reflects cooked product values per 100 g.", - "display_name": "Chicken Tenders (Fast Food)", - "fdc_id": 173321, + "alt_names": [], + "category_label": "other", + "description": "Spices, nutmeg, ground is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Spices, nutmeg, ground", + "fdc_id": 171326, "macros": { - "calories": 271.0, - "carbs_g": 17.25, - "fat_g": 13.95, - "fiber_g": 1.2, - "protein_g": 19.22, - "sodium_g": 0.769, - "sugar_g": 0.4 + "calories": 525.0, + "carbs_g": 49.29, + "fat_g": 36.31, + "fiber_g": 20.8, + "protein_g": 5.84, + "sodium_g": 0.016, + "sugar_g": 2.99 }, - "source_description": "Fast foods, chicken tenders", + "source_description": "Spices, nutmeg, ground", "source_meta": { "data_type": "SR Legacy", - "food_category": "Fast Foods", - "verification_source": "USDA FoodData Central API", - "verified_at_utc": "2026-02-11T22:06:02Z" + "food_category": "Spices and Herbs", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" }, - "sprite_group": "protein", + "sprite_group": "other", "sprite_key": "" }, { - "alt_names": [ - "light sour cream", - "reduced-fat sour cream", - "low-fat sour cream", - "sour cream", - "cultured cream light" - ], - "category_label": "dairy_egg", - "description": "Light sour cream is a cultured dairy ingredient used for toppings, sauces, dips, and baking. This USDA row reflects product values per 100 g.", - "display_name": "Sour Cream (Light)", - "fdc_id": 173443, - "macros": { - "calories": 136.0, - "carbs_g": 7.1, - "fat_g": 10.6, - "fiber_g": 0.0, - "protein_g": 3.5, - "sodium_g": 0.083, - "sugar_g": 0.22 + "alt_names": [], + "category_label": "herb_spice", + "description": "Spices, oregano, dried is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Spices, oregano, dried", + "fdc_id": 171328, + "macros": { + "calories": 265.0, + "carbs_g": 68.92, + "fat_g": 4.28, + "fiber_g": 42.5, + "protein_g": 9.0, + "sodium_g": 0.025, + "sugar_g": 4.09 }, - "source_description": "Sour cream, light", + "source_description": "Spices, oregano, dried", "source_meta": { "data_type": "SR Legacy", - "food_category": "Dairy and Egg Products", - "verification_source": "USDA FoodData Central API", - "verified_at_utc": "2026-02-11T22:06:02Z" + "food_category": "Spices and Herbs", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" }, - "sprite_group": "dairy_egg", - "sprite_key": "sour cream" + "sprite_group": "other", + "sprite_key": "" }, { - "alt_names": [ - "black beans cooked", - "cooked black beans no salt", - "unsalted black beans", - "boiled black beans", - "prepared black beans" - ], - "category_label": "grain_legume", - "description": "Cooked black beans without salt are a staple legume used in bowls, soups, tacos, and salads. This USDA row reflects cooked bean values per 100 g.", - "display_name": "Black Beans (Cooked, No Salt)", - "fdc_id": 173735, - "macros": { - "calories": 132.0, - "carbs_g": 23.71, - "fat_g": 0.54, - "fiber_g": 8.7, - "protein_g": 8.86, - "sodium_g": 0.001, - "sugar_g": 0.32 + "alt_names": [], + "category_label": "herb_spice", + "description": "Spices, paprika is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Spices, paprika", + "fdc_id": 171329, + "macros": { + "calories": 282.0, + "carbs_g": 53.99, + "fat_g": 12.89, + "fiber_g": 34.9, + "protein_g": 14.14, + "sodium_g": 0.068, + "sugar_g": 10.34 }, - "source_description": "Beans, black, mature seeds, cooked, boiled, without salt", + "source_description": "Spices, paprika", "source_meta": { "data_type": "SR Legacy", - "food_category": "Legumes and Legume Products", - "verification_source": "USDA FoodData Central API", - "verified_at_utc": "2026-02-11T22:06:02Z" + "food_category": "Spices and Herbs", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" }, - "sprite_group": "grain_legume", + "sprite_group": "other", "sprite_key": "" }, { "alt_names": [ - "tamari", - "soy sauce", - "gluten-free soy sauce", - "tamari soy sauce", - "fermented soy seasoning" + "olive oil", + "cooking olive oil", + "salad olive oil", + "pure olive oil", + "olive oil general" ], - "category_label": "condiment", - "description": "Tamari-style soy sauce is a fermented savory condiment used in marinades, stir-fries, and dipping sauces. This USDA row reflects sauce values per 100 g.", - "display_name": "Soy Sauce (Tamari)", - "fdc_id": 174278, + "category_label": "oil_fat", + "description": "Olive oil is a staple culinary oil used for sauteing, roasting, and dressings. This USDA row reflects oil values per 100 g.", + "display_name": "Olive Oil", + "fdc_id": 171413, "macros": { - "calories": 60.0, - "carbs_g": 5.57, - "fat_g": 0.1, - "fiber_g": 0.8, - "protein_g": 10.51, - "sodium_g": 5.586, - "sugar_g": 1.7 + "calories": 884.0, + "carbs_g": 0.0, + "fat_g": 100.0, + "fiber_g": 0.0, + "protein_g": 0.0, + "sodium_g": 0.002, + "sugar_g": 0.0 }, - "source_description": "Soy sauce made from soy (tamari)", + "source_description": "Oil, olive, salad or cooking", "source_meta": { "data_type": "SR Legacy", - "food_category": "Legumes and Legume Products", + "food_category": "Fats and Oils", "verification_source": "USDA FoodData Central API", "verified_at_utc": "2026-02-11T22:06:02Z" }, - "sprite_group": "condiment", - "sprite_key": "soy sauce" + "sprite_group": "oil_fat", + "sprite_key": "" }, { - "alt_names": [ - "red bell pepper", - "bell pepper red", - "raw red bell pepper", - "sweet red pepper", - "capsicum red" - ], - "category_label": "vegetable", - "description": "Raw red bell pepper is a sweet crunchy vegetable used in salads, stir-fries, and roasting. This USDA row reflects raw pepper values per 100 g.", - "display_name": "Bell Pepper (Red, Raw)", - "fdc_id": 2258590, + "alt_names": [], + "category_label": "protein", + "description": "Turkey, whole, meat and skin, cooked, roasted is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Turkey, whole, meat and skin, cooked, roasted", + "fdc_id": 171479, "macros": { - "calories": 0.0, - "carbs_g": 6.6532, - "fat_g": 0.1256, - "fiber_g": 1.158, - "protein_g": 0.8956, - "sodium_g": 0.0, + "calories": 189.0, + "carbs_g": 0.06, + "fat_g": 7.39, + "fiber_g": 0.0, + "protein_g": 28.55, + "sodium_g": 0.103, "sugar_g": 0.0 }, - "source_description": "Peppers, bell, red, raw", + "source_description": "Turkey, whole, meat and skin, cooked, roasted", "source_meta": { - "data_type": "Foundation", - "food_category": "Vegetables and Vegetable Products", - "verification_source": "USDA FoodData Central API", - "verified_at_utc": "2026-02-11T22:06:02Z" + "data_type": "SR Legacy", + "food_category": "Poultry Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" }, - "sprite_group": "vegetable", - "sprite_key": "bell pepper" + "sprite_group": "other", + "sprite_key": "" }, { - "alt_names": [ - "heavy cream", - "heavy whipping cream", - "double cream", - "thick cream", - "cream heavy" - ], - "category_label": "dairy_egg", - "description": "Heavy cream is a high-fat dairy ingredient used for sauces, soups, desserts, and whipping. This USDA row reflects cream values per 100 g.", - "display_name": "Heavy Cream", - "fdc_id": 2346386, + "alt_names": [], + "category_label": "fruit", + "description": "Avocados, raw, all commercial varieties is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Avocados, raw, all commercial varieties", + "fdc_id": 171705, "macros": { - "calories": 0.0, - "carbs_g": 3.7995, - "fat_g": 35.56, - "fiber_g": 0.0, - "protein_g": 2.018, - "sodium_g": 0.0206, - "sugar_g": 0.0 + "calories": 160.0, + "carbs_g": 8.53, + "fat_g": 14.66, + "fiber_g": 6.7, + "protein_g": 2.0, + "sodium_g": 0.007, + "sugar_g": 0.66 }, - "source_description": "Cream, heavy", + "source_description": "Avocados, raw, all commercial varieties", "source_meta": { - "data_type": "Foundation", - "food_category": "Dairy and Egg Products", - "verification_source": "USDA FoodData Central API", - "verified_at_utc": "2026-02-11T22:06:02Z" + "data_type": "SR Legacy", + "food_category": "Fruits and Fruit Juices", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" }, - "sprite_group": "dairy_egg", - "sprite_key": "cream" + "sprite_group": "other", + "sprite_key": "" }, { - "alt_names": [ - "dry chickpeas", - "garbanzo beans dry", - "bengal gram", - "dried chickpeas", - "uncooked chickpeas" - ], - "category_label": "grain_legume", - "description": "Dry chickpeas (garbanzo beans) are pantry legumes used for curries, stews, hummus, and salads after cooking. This USDA row reflects dry legume values per 100 g.", - "display_name": "Chickpeas (Dry)", - "fdc_id": 2644282, + "alt_names": [], + "category_label": "protein", + "description": "Crustaceans, crab, blue, canned is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Crustaceans, crab, blue, canned", + "fdc_id": 171966, "macros": { - "calories": 0.0, - "carbs_g": 60.358, - "fat_g": 6.274, + "calories": 83.0, + "carbs_g": 0.0, + "fat_g": 0.74, "fiber_g": 0.0, - "protein_g": 21.275, - "sodium_g": 0.0088, + "protein_g": 17.88, + "sodium_g": 0.563, "sugar_g": 0.0 }, - "source_description": "Chickpeas, (garbanzo beans, bengal gram), dry", + "source_description": "Crustaceans, crab, blue, canned", "source_meta": { - "data_type": "Foundation", - "food_category": "Legumes and Legume Products", - "verification_source": "USDA FoodData Central API", - "verified_at_utc": "2026-02-11T22:06:02Z" + "data_type": "SR Legacy", + "food_category": "Finfish and Shellfish Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" }, - "sprite_group": "grain_legume", + "sprite_group": "other", "sprite_key": "" }, { "alt_names": [ - "raw boneless skinless chicken thigh", - "chicken thigh raw", - "skinless chicken thigh", - "boneless chicken thigh", - "chicken thigh fillet raw" + "canned light tuna", + "light tuna in water", + "water-packed tuna", + "tuna canned in water", + "drained canned tuna", + "salt-free canned tuna" ], "category_label": "protein", - "description": "Boneless skinless chicken thigh is a versatile poultry cut for braising, grilling, and roasting. This USDA row reflects raw thigh values per 100 g.", - "display_name": "Chicken Thigh (Boneless, Skinless, Raw)", - "fdc_id": 2646171, + "description": "Water-packed canned light tuna is a staple protein for salads, sandwiches, and casseroles. This USDA row reflects drained solids without salt added, per 100 g.", + "display_name": "Canned Light Tuna (Water-Packed)", + "fdc_id": 171986, "macros": { - "calories": 0.0, + "calories": 116.0, "carbs_g": 0.0, - "fat_g": 7.916, + "fat_g": 0.82, "fiber_g": 0.0, - "protein_g": 18.6125, - "sodium_g": 0.0623, + "protein_g": 25.51, + "sodium_g": 0.05, "sugar_g": 0.0 }, - "source_description": "Chicken, thigh, boneless, skinless, raw", + "source_description": "Fish, tuna, light, canned in water, without salt, drained solids", "source_meta": { - "data_type": "Foundation", - "food_category": "Poultry Products", + "data_type": "SR Legacy", + "food_category": "Finfish and Shellfish Products", "verification_source": "USDA FoodData Central API", "verified_at_utc": "2026-02-11T22:06:02Z" }, @@ -24707,35 +25059,3433 @@ "sprite_key": "" }, { - "alt_names": [ - "atlantic salmon raw", - "farmed salmon", - "raw salmon fillet", - "fresh salmon", - "salmon fish" + "alt_names": [], + "category_label": "other", + "description": "Millet flour is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Millet flour", + "fdc_id": 172023, + "macros": { + "calories": 382.0, + "carbs_g": 75.12, + "fat_g": 4.25, + "fiber_g": 3.5, + "protein_g": 10.75, + "sodium_g": 0.004, + "sugar_g": 1.66 + }, + "source_description": "Millet flour", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Cereal Grains and Pasta", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Spices, turmeric, ground is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Spices, turmeric, ground", + "fdc_id": 172231, + "macros": { + "calories": 312.0, + "carbs_g": 67.14, + "fat_g": 3.25, + "fiber_g": 22.7, + "protein_g": 9.68, + "sodium_g": 0.027, + "sugar_g": 3.21 + }, + "source_description": "Spices, turmeric, ground", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Spices and Herbs", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Vinegar, distilled is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Vinegar, distilled", + "fdc_id": 172237, + "macros": { + "calories": 18.0, + "carbs_g": 0.04, + "fat_g": 0.0, + "fiber_g": 0.0, + "protein_g": 0.0, + "sodium_g": 0.002, + "sugar_g": 0.04 + }, + "source_description": "Vinegar, distilled", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Spices and Herbs", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "herb_spice", + "description": "Capers, canned is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Capers, canned", + "fdc_id": 172238, + "macros": { + "calories": 23.0, + "carbs_g": 4.89, + "fat_g": 0.86, + "fiber_g": 3.2, + "protein_g": 2.36, + "sodium_g": 2.348, + "sugar_g": 0.41 + }, + "source_description": "Capers, canned", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Spices and Herbs", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "herb_spice", + "description": "Vinegar, red wine is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Vinegar, red wine", + "fdc_id": 172240, + "macros": { + "calories": 19.0, + "carbs_g": 0.27, + "fat_g": 0.0, + "fiber_g": 0.0, + "protein_g": 0.04, + "sodium_g": 0.008, + "sugar_g": 0.0 + }, + "source_description": "Vinegar, red wine", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Spices and Herbs", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Lentils, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Lentils, raw", + "fdc_id": 172420, + "macros": { + "calories": 352.0, + "carbs_g": 63.35, + "fat_g": 1.06, + "fiber_g": 10.7, + "protein_g": 24.63, + "sodium_g": 0.006, + "sugar_g": 2.03 + }, + "source_description": "Lentils, raw", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Legumes and Legume Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Leavening agents, baking powder, double-acting, sodium aluminum sulfate is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Leavening agents, baking powder, double-acting, sodium aluminum sulfate", + "fdc_id": 172803, + "macros": { + "calories": 53.0, + "carbs_g": 27.7, + "fat_g": 0.0, + "fiber_g": 0.2, + "protein_g": 0.0, + "sodium_g": 10.6, + "sugar_g": 0.0 + }, + "source_description": "Leavening agents, baking powder, double-acting, sodium aluminum sulfate", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Baked Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Soup, stock, beef, home-prepared is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Soup, stock, beef, home-prepared", + "fdc_id": 172883, + "macros": { + "calories": 13.0, + "carbs_g": 1.2, + "fat_g": 0.09, + "fiber_g": 0.0, + "protein_g": 1.97, + "sodium_g": 0.198, + "sugar_g": 0.54 + }, + "source_description": "Soup, stock, beef, home-prepared", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Soups, Sauces, and Gravies", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Soup, stock, chicken, home-prepared is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Soup, stock, chicken, home-prepared", + "fdc_id": 172884, + "macros": { + "calories": 36.0, + "carbs_g": 3.53, + "fat_g": 1.2, + "fiber_g": 0.0, + "protein_g": 2.52, + "sodium_g": 0.143, + "sugar_g": 1.58 + }, + "source_description": "Soup, stock, chicken, home-prepared", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Soups, Sauces, and Gravies", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [ + "chicken tenders", + "fast food chicken tenders", + "fried chicken tenders", + "breaded chicken tenders", + "chicken strips" ], "category_label": "protein", - "description": "Raw farmed Atlantic salmon is a fatty fish protein used for roasting, grilling, pan-searing, and curing. This USDA row reflects raw fish values per 100 g.", - "display_name": "Salmon (Atlantic, Farmed, Raw)", - "fdc_id": 2684441, + "description": "Chicken tenders here represent a prepared fast-food style item, useful for mixed dish estimates and convenience-food tracking. This USDA row reflects cooked product values per 100 g.", + "display_name": "Chicken Tenders (Fast Food)", + "fdc_id": 173321, "macros": { - "calories": 0.0, + "calories": 271.0, + "carbs_g": 17.25, + "fat_g": 13.95, + "fiber_g": 1.2, + "protein_g": 19.22, + "sodium_g": 0.769, + "sugar_g": 0.4 + }, + "source_description": "Fast foods, chicken tenders", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Fast Foods", + "verification_source": "USDA FoodData Central API", + "verified_at_utc": "2026-02-11T22:06:02Z" + }, + "sprite_group": "protein", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Butter oil, anhydrous is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Butter oil, anhydrous", + "fdc_id": 173412, + "macros": { + "calories": 876.0, "carbs_g": 0.0, - "fat_g": 13.11, + "fat_g": 99.48, "fiber_g": 0.0, - "protein_g": 20.3188, - "sodium_g": 0.0495, + "protein_g": 0.28, + "sodium_g": 0.002, "sugar_g": 0.0 }, - "source_description": "Fish, salmon, Atlantic, farm raised, raw", + "source_description": "Butter oil, anhydrous", "source_meta": { - "data_type": "Foundation", - "food_category": "Finfish and Shellfish Products", + "data_type": "SR Legacy", + "food_category": "Dairy and Egg Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [ + "light sour cream", + "reduced-fat sour cream", + "low-fat sour cream", + "sour cream", + "cultured cream light" + ], + "category_label": "dairy_egg", + "description": "Light sour cream is a cultured dairy ingredient used for toppings, sauces, dips, and baking. This USDA row reflects product values per 100 g.", + "display_name": "Sour Cream (Light)", + "fdc_id": 173443, + "macros": { + "calories": 136.0, + "carbs_g": 7.1, + "fat_g": 10.6, + "fiber_g": 0.0, + "protein_g": 3.5, + "sodium_g": 0.083, + "sugar_g": 0.22 + }, + "source_description": "Sour cream, light", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Dairy and Egg Products", "verification_source": "USDA FoodData Central API", "verified_at_utc": "2026-02-11T22:06:02Z" }, - "sprite_group": "protein", - "sprite_key": "salmon" + "sprite_group": "dairy_egg", + "sprite_key": "sour cream" + }, + { + "alt_names": [], + "category_label": "herb_spice", + "description": "Salt, table is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Salt, table", + "fdc_id": 173468, + "macros": { + "calories": 0.0, + "carbs_g": 0.0, + "fat_g": 0.0, + "fiber_g": 0.0, + "protein_g": 0.0, + "sodium_g": 38.758, + "sugar_g": 0.0 + }, + "source_description": "Salt, table", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Spices and Herbs", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Vinegar, cider is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Vinegar, cider", + "fdc_id": 173469, + "macros": { + "calories": 21.0, + "carbs_g": 0.93, + "fat_g": 0.0, + "fiber_g": 0.0, + "protein_g": 0.0, + "sodium_g": 0.005, + "sugar_g": 0.4 + }, + "source_description": "Vinegar, cider", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Spices and Herbs", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "herb_spice", + "description": "Rosemary, fresh is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Rosemary, fresh", + "fdc_id": 173473, + "macros": { + "calories": 131.0, + "carbs_g": 20.7, + "fat_g": 5.86, + "fiber_g": 14.1, + "protein_g": 3.31, + "sodium_g": 0.026, + "sugar_g": 0.0 + }, + "source_description": "Rosemary, fresh", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Spices and Herbs", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "herb_spice", + "description": "Peppermint, fresh is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Peppermint, fresh", + "fdc_id": 173474, + "macros": { + "calories": 70.0, + "carbs_g": 14.89, + "fat_g": 0.94, + "fiber_g": 8.0, + "protein_g": 3.75, + "sodium_g": 0.031, + "sugar_g": 0.0 + }, + "source_description": "Peppermint, fresh", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Spices and Herbs", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [ + "black beans cooked", + "cooked black beans no salt", + "unsalted black beans", + "boiled black beans", + "prepared black beans" + ], + "category_label": "grain_legume", + "description": "Cooked black beans without salt are a staple legume used in bowls, soups, tacos, and salads. This USDA row reflects cooked bean values per 100 g.", + "display_name": "Black Beans (Cooked, No Salt)", + "fdc_id": 173735, + "macros": { + "calories": 132.0, + "carbs_g": 23.71, + "fat_g": 0.54, + "fiber_g": 8.7, + "protein_g": 8.86, + "sodium_g": 0.001, + "sugar_g": 0.32 + }, + "source_description": "Beans, black, mature seeds, cooked, boiled, without salt", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Legumes and Legume Products", + "verification_source": "USDA FoodData Central API", + "verified_at_utc": "2026-02-11T22:06:02Z" + }, + "sprite_group": "grain_legume", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Beans, cranberry (roman), mature seeds, cooked, boiled, without salt is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Beans, cranberry (roman), mature seeds, cooked, boiled, without salt", + "fdc_id": 173736, + "macros": { + "calories": 136.0, + "carbs_g": 24.46, + "fat_g": 0.46, + "fiber_g": 8.6, + "protein_g": 9.34, + "sodium_g": 0.001, + "sugar_g": 0.0 + }, + "source_description": "Beans, cranberry (roman), mature seeds, cooked, boiled, without salt", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Legumes and Legume Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Chickpeas (garbanzo beans, bengal gram), mature seeds, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Chickpeas (garbanzo beans, bengal gram), mature seeds, raw", + "fdc_id": 173756, + "macros": { + "calories": 378.0, + "carbs_g": 62.95, + "fat_g": 6.04, + "fiber_g": 12.2, + "protein_g": 20.47, + "sodium_g": 0.024, + "sugar_g": 10.7 + }, + "source_description": "Chickpeas (garbanzo beans, bengal gram), mature seeds, raw", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Legumes and Legume Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Fish, anchovy, european, canned in oil, drained solids is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Fish, anchovy, european, canned in oil, drained solids", + "fdc_id": 174183, + "macros": { + "calories": 210.0, + "carbs_g": 0.0, + "fat_g": 9.71, + "fiber_g": 0.0, + "protein_g": 28.89, + "sodium_g": 3.668, + "sugar_g": 0.0 + }, + "source_description": "Fish, anchovy, european, canned in oil, drained solids", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Finfish and Shellfish Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Fish, cod, Atlantic, dried and salted is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Fish, cod, Atlantic, dried and salted", + "fdc_id": 174190, + "macros": { + "calories": 290.0, + "carbs_g": 0.0, + "fat_g": 2.37, + "fiber_g": 0.0, + "protein_g": 62.82, + "sodium_g": 7.027, + "sugar_g": 0.0 + }, + "source_description": "Fish, cod, Atlantic, dried and salted", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Finfish and Shellfish Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Crustaceans, shrimp, mixed species, raw (may contain additives to retain moisture) is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Crustaceans, shrimp, mixed species, raw (may contain additives to retain moisture)", + "fdc_id": 174210, + "macros": { + "calories": 71.0, + "carbs_g": 0.91, + "fat_g": 1.01, + "fiber_g": 0.0, + "protein_g": 13.61, + "sodium_g": 0.566, + "sugar_g": 0.0 + }, + "source_description": "Crustaceans, shrimp, mixed species, raw (may contain additives to retain moisture)", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Finfish and Shellfish Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Mollusks, squid, mixed species, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Mollusks, squid, mixed species, raw", + "fdc_id": 174223, + "macros": { + "calories": 92.0, + "carbs_g": 3.08, + "fat_g": 1.38, + "fiber_g": 0.0, + "protein_g": 15.58, + "sodium_g": 0.044, + "sugar_g": 0.0 + }, + "source_description": "Mollusks, squid, mixed species, raw", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Finfish and Shellfish Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Noodles, chinese, cellophane or long rice (mung beans), dehydrated is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Noodles, chinese, cellophane or long rice (mung beans), dehydrated", + "fdc_id": 174258, + "macros": { + "calories": 351.0, + "carbs_g": 86.09, + "fat_g": 0.06, + "fiber_g": 0.5, + "protein_g": 0.16, + "sodium_g": 0.01, + "sugar_g": 0.0 + }, + "source_description": "Noodles, chinese, cellophane or long rice (mung beans), dehydrated", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Legumes and Legume Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [ + "tamari", + "soy sauce", + "gluten-free soy sauce", + "tamari soy sauce", + "fermented soy seasoning" + ], + "category_label": "condiment", + "description": "Tamari-style soy sauce is a fermented savory condiment used in marinades, stir-fries, and dipping sauces. This USDA row reflects sauce values per 100 g.", + "display_name": "Soy Sauce (Tamari)", + "fdc_id": 174278, + "macros": { + "calories": 60.0, + "carbs_g": 5.57, + "fat_g": 0.1, + "fiber_g": 0.8, + "protein_g": 10.51, + "sodium_g": 5.586, + "sugar_g": 1.7 + }, + "source_description": "Soy sauce made from soy (tamari)", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Legumes and Legume Products", + "verification_source": "USDA FoodData Central API", + "verified_at_utc": "2026-02-11T22:06:02Z" + }, + "sprite_group": "condiment", + "sprite_key": "soy sauce" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Lentils, pink or red, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Lentils, pink or red, raw", + "fdc_id": 174284, + "macros": { + "calories": 358.0, + "carbs_g": 63.1, + "fat_g": 2.17, + "fiber_g": 10.8, + "protein_g": 23.91, + "sodium_g": 0.007, + "sugar_g": 0.0 + }, + "source_description": "Lentils, pink or red, raw", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Legumes and Legume Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "vegetable", + "description": "Chickpea flour (besan) is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Chickpea flour (besan)", + "fdc_id": 174288, + "macros": { + "calories": 387.0, + "carbs_g": 57.82, + "fat_g": 6.69, + "fiber_g": 10.8, + "protein_g": 22.39, + "sodium_g": 0.064, + "sugar_g": 10.85 + }, + "source_description": "Chickpea flour (besan)", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Legumes and Legume Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "vegetable", + "description": "Tofu, hard, prepared with nigari is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Tofu, hard, prepared with nigari", + "fdc_id": 174291, + "macros": { + "calories": 145.0, + "carbs_g": 4.39, + "fat_g": 9.99, + "fiber_g": 0.6, + "protein_g": 12.68, + "sodium_g": 0.002, + "sugar_g": 0.0 + }, + "source_description": "Tofu, hard, prepared with nigari", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Legumes and Legume Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Lamb, New Zealand, imported, fore-shank, separable lean only, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Lamb, New Zealand, imported, fore-shank, separable lean only, raw", + "fdc_id": 174340, + "macros": { + "calories": 122.0, + "carbs_g": 0.0, + "fat_g": 3.77, + "fiber_g": 0.0, + "protein_g": 22.05, + "sodium_g": 0.082, + "sugar_g": 0.0 + }, + "source_description": "Lamb, New Zealand, imported, fore-shank, separable lean only, raw", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Lamb, Veal, and Game Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Sauce, fish, ready-to-serve is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Sauce, fish, ready-to-serve", + "fdc_id": 174531, + "macros": { + "calories": 35.0, + "carbs_g": 3.64, + "fat_g": 0.01, + "fiber_g": 0.0, + "protein_g": 5.06, + "sodium_g": 7.851, + "sugar_g": 3.64 + }, + "source_description": "Sauce, fish, ready-to-serve", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Soups, Sauces, and Gravies", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Sausage, smoked link sausage, pork and beef is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Sausage, smoked link sausage, pork and beef", + "fdc_id": 174585, + "macros": { + "calories": 320.0, + "carbs_g": 2.42, + "fat_g": 28.73, + "fiber_g": 0.0, + "protein_g": 12.0, + "sodium_g": 0.911, + "sugar_g": 0.0 + }, + "source_description": "Sausage, smoked link sausage, pork and beef", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Sausages and Luncheon Meats", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Beverages, carbonated, cola, regular is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Beverages, carbonated, cola, regular", + "fdc_id": 174852, + "macros": { + "calories": 42.0, + "carbs_g": 10.36, + "fat_g": 0.25, + "fiber_g": 0.0, + "protein_g": 0.0, + "sodium_g": 0.003, + "sugar_g": 9.94 + }, + "source_description": "Beverages, carbonated, cola, regular", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Beverages", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Bread, pita, white, enriched is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Bread, pita, white, enriched", + "fdc_id": 174915, + "macros": { + "calories": 275.0, + "carbs_g": 55.7, + "fat_g": 1.2, + "fiber_g": 2.2, + "protein_g": 9.1, + "sodium_g": 0.536, + "sugar_g": 1.3 + }, + "source_description": "Bread, pita, white, enriched", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Baked Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "vegetable", + "description": "Bread, crumbs, dry, grated, plain is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Bread, crumbs, dry, grated, plain", + "fdc_id": 174928, + "macros": { + "calories": 395.0, + "carbs_g": 71.98, + "fat_g": 5.3, + "fiber_g": 4.5, + "protein_g": 13.35, + "sodium_g": 0.732, + "sugar_g": 6.2 + }, + "source_description": "Bread, crumbs, dry, grated, plain", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Baked Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Fish, sardine, Atlantic, canned in oil, drained solids with bone is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Fish, sardine, Atlantic, canned in oil, drained solids with bone", + "fdc_id": 175139, + "macros": { + "calories": 208.0, + "carbs_g": 0.0, + "fat_g": 11.45, + "fiber_g": 0.0, + "protein_g": 24.62, + "sodium_g": 0.307, + "sugar_g": 0.0 + }, + "source_description": "Fish, sardine, Atlantic, canned in oil, drained solids with bone", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Finfish and Shellfish Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Fish, sea bass, mixed species, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Fish, sea bass, mixed species, raw", + "fdc_id": 175142, + "macros": { + "calories": 97.0, + "carbs_g": 0.0, + "fat_g": 2.0, + "fiber_g": 0.0, + "protein_g": 18.43, + "sodium_g": 0.068, + "sugar_g": 0.0 + }, + "source_description": "Fish, sea bass, mixed species, raw", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Finfish and Shellfish Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Fish, sucker, white, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Fish, sucker, white, raw", + "fdc_id": 175150, + "macros": { + "calories": 92.0, + "carbs_g": 0.0, + "fat_g": 2.32, + "fiber_g": 0.0, + "protein_g": 16.76, + "sodium_g": 0.04, + "sugar_g": 0.0 + }, + "source_description": "Fish, sucker, white, raw", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Finfish and Shellfish Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Fish, salmon, Atlantic, farmed, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Fish, salmon, Atlantic, farmed, raw", + "fdc_id": 175167, + "macros": { + "calories": 208.0, + "carbs_g": 0.0, + "fat_g": 13.42, + "fiber_g": 0.0, + "protein_g": 20.42, + "sodium_g": 0.059, + "sugar_g": 0.0 + }, + "source_description": "Fish, salmon, Atlantic, farmed, raw", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Finfish and Shellfish Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Game meat, goat, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (SR Legacy).", + "display_name": "Game meat, goat, raw", + "fdc_id": 175303, + "macros": { + "calories": 109.0, + "carbs_g": 0.0, + "fat_g": 2.31, + "fiber_g": 0.0, + "protein_g": 20.6, + "sodium_g": 0.082, + "sugar_g": 0.0 + }, + "source_description": "Game meat, goat, raw", + "source_meta": { + "data_type": "SR Legacy", + "food_category": "Lamb, Veal, and Game Products", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [ + "red bell pepper", + "bell pepper red", + "raw red bell pepper", + "sweet red pepper", + "capsicum red" + ], + "category_label": "vegetable", + "description": "Raw red bell pepper is a sweet crunchy vegetable used in salads, stir-fries, and roasting. This USDA row reflects raw pepper values per 100 g.", + "display_name": "Bell Pepper (Red, Raw)", + "fdc_id": 2258590, + "macros": { + "calories": 0.0, + "carbs_g": 6.6532, + "fat_g": 0.1256, + "fiber_g": 1.158, + "protein_g": 0.8956, + "sodium_g": 0.0, + "sugar_g": 0.0 + }, + "source_description": "Peppers, bell, red, raw", + "source_meta": { + "data_type": "Foundation", + "food_category": "Vegetables and Vegetable Products", + "verification_source": "USDA FoodData Central API", + "verified_at_utc": "2026-02-11T22:06:02Z" + }, + "sprite_group": "vegetable", + "sprite_key": "bell pepper" + }, + { + "alt_names": [ + "heavy cream", + "heavy whipping cream", + "double cream", + "thick cream", + "cream heavy" + ], + "category_label": "dairy_egg", + "description": "Heavy cream is a high-fat dairy ingredient used for sauces, soups, desserts, and whipping. This USDA row reflects cream values per 100 g.", + "display_name": "Heavy Cream", + "fdc_id": 2346386, + "macros": { + "calories": 0.0, + "carbs_g": 3.7995, + "fat_g": 35.56, + "fiber_g": 0.0, + "protein_g": 2.018, + "sodium_g": 0.0206, + "sugar_g": 0.0 + }, + "source_description": "Cream, heavy", + "source_meta": { + "data_type": "Foundation", + "food_category": "Dairy and Egg Products", + "verification_source": "USDA FoodData Central API", + "verified_at_utc": "2026-02-11T22:06:02Z" + }, + "sprite_group": "dairy_egg", + "sprite_key": "cream" + }, + { + "alt_names": [ + "dry chickpeas", + "garbanzo beans dry", + "bengal gram", + "dried chickpeas", + "uncooked chickpeas" + ], + "category_label": "grain_legume", + "description": "Dry chickpeas (garbanzo beans) are pantry legumes used for curries, stews, hummus, and salads after cooking. This USDA row reflects dry legume values per 100 g.", + "display_name": "Chickpeas (Dry)", + "fdc_id": 2644282, + "macros": { + "calories": 0.0, + "carbs_g": 60.358, + "fat_g": 6.274, + "fiber_g": 0.0, + "protein_g": 21.275, + "sodium_g": 0.0088, + "sugar_g": 0.0 + }, + "source_description": "Chickpeas, (garbanzo beans, bengal gram), dry", + "source_meta": { + "data_type": "Foundation", + "food_category": "Legumes and Legume Products", + "verification_source": "USDA FoodData Central API", + "verified_at_utc": "2026-02-11T22:06:02Z" + }, + "sprite_group": "grain_legume", + "sprite_key": "" + }, + { + "alt_names": [ + "raw boneless skinless chicken thigh", + "chicken thigh raw", + "skinless chicken thigh", + "boneless chicken thigh", + "chicken thigh fillet raw" + ], + "category_label": "protein", + "description": "Boneless skinless chicken thigh is a versatile poultry cut for braising, grilling, and roasting. This USDA row reflects raw thigh values per 100 g.", + "display_name": "Chicken Thigh (Boneless, Skinless, Raw)", + "fdc_id": 2646171, + "macros": { + "calories": 0.0, + "carbs_g": 0.0, + "fat_g": 7.916, + "fiber_g": 0.0, + "protein_g": 18.6125, + "sodium_g": 0.0623, + "sugar_g": 0.0 + }, + "source_description": "Chicken, thigh, boneless, skinless, raw", + "source_meta": { + "data_type": "Foundation", + "food_category": "Poultry Products", + "verification_source": "USDA FoodData Central API", + "verified_at_utc": "2026-02-11T22:06:02Z" + }, + "sprite_group": "protein", + "sprite_key": "" + }, + { + "alt_names": [ + "atlantic salmon raw", + "farmed salmon", + "raw salmon fillet", + "fresh salmon", + "salmon fish" + ], + "category_label": "protein", + "description": "Raw farmed Atlantic salmon is a fatty fish protein used for roasting, grilling, pan-searing, and curing. This USDA row reflects raw fish values per 100 g.", + "display_name": "Salmon (Atlantic, Farmed, Raw)", + "fdc_id": 2684441, + "macros": { + "calories": 0.0, + "carbs_g": 0.0, + "fat_g": 13.11, + "fiber_g": 0.0, + "protein_g": 20.3188, + "sodium_g": 0.0495, + "sugar_g": 0.0 + }, + "source_description": "Fish, salmon, Atlantic, farm raised, raw", + "source_meta": { + "data_type": "Foundation", + "food_category": "Finfish and Shellfish Products", + "verification_source": "USDA FoodData Central API", + "verified_at_utc": "2026-02-11T22:06:02Z" + }, + "sprite_group": "protein", + "sprite_key": "salmon" + }, + { + "alt_names": [], + "category_label": "vegetable", + "description": "Soy milk, unsweetened is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Soy milk, unsweetened", + "fdc_id": 2705405, + "macros": { + "calories": 38.0, + "carbs_g": 1.29, + "fat_g": 2.12, + "fiber_g": 0.0, + "protein_g": 3.55, + "sodium_g": 0.034, + "sugar_g": 0.56 + }, + "source_description": "Soy milk, unsweetened", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Plant-based milk", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "grain_legume", + "description": "Rice milk is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Rice milk", + "fdc_id": 2705411, + "macros": { + "calories": 47.0, + "carbs_g": 9.17, + "fat_g": 0.97, + "fiber_g": 0.3, + "protein_g": 0.28, + "sodium_g": 0.039, + "sugar_g": 5.28 + }, + "source_description": "Rice milk", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Plant-based milk", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Coconut milk is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Coconut milk", + "fdc_id": 2705413, + "macros": { + "calories": 31.0, + "carbs_g": 2.92, + "fat_g": 2.08, + "fiber_g": 0.0, + "protein_g": 0.21, + "sodium_g": 0.019, + "sugar_g": 2.5 + }, + "source_description": "Coconut milk", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Plant-based milk", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "dairy_egg", + "description": "Yogurt, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Yogurt, NFS", + "fdc_id": 2705414, + "macros": { + "calories": 94.0, + "carbs_g": 10.22, + "fat_g": 2.87, + "fiber_g": 0.1, + "protein_g": 6.67, + "sodium_g": 0.049, + "sugar_g": 8.05 + }, + "source_description": "Yogurt, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Yogurt, regular", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "herb_spice", + "description": "Cocoa powder, not reconstituted is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Cocoa powder, not reconstituted", + "fdc_id": 2705587, + "macros": { + "calories": 228.0, + "carbs_g": 57.9, + "fat_g": 13.7, + "fiber_g": 37.0, + "protein_g": 19.6, + "sodium_g": 0.021, + "sugar_g": 1.75 + }, + "source_description": "Cocoa powder, not reconstituted", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Not included in a food category", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "dairy_egg", + "description": "Cream, light is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Cream, light", + "fdc_id": 2705593, + "macros": { + "calories": 195.0, + "carbs_g": 3.66, + "fat_g": 19.1, + "fiber_g": 0.0, + "protein_g": 2.96, + "sodium_g": 0.072, + "sugar_g": 3.67 + }, + "source_description": "Cream, light", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Cream and cream substitutes", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Chipotle dip, regular is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Chipotle dip, regular", + "fdc_id": 2705619, + "macros": { + "calories": 426.0, + "carbs_g": 3.15, + "fat_g": 45.08, + "fiber_g": 0.0, + "protein_g": 1.99, + "sodium_g": 0.708, + "sugar_g": 2.04 + }, + "source_description": "Chipotle dip, regular", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Dips, gravies, other sauces", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Ice cream, vanilla is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Ice cream, vanilla", + "fdc_id": 2705630, + "macros": { + "calories": 207.0, + "carbs_g": 23.6, + "fat_g": 11.0, + "fiber_g": 0.7, + "protein_g": 3.5, + "sodium_g": 0.08, + "sugar_g": 21.22 + }, + "source_description": "Ice cream, vanilla", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Ice cream and frozen dairy desserts", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "dairy_egg", + "description": "Cheese, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Cheese, NFS", + "fdc_id": 2705704, + "macros": { + "calories": 381.0, + "carbs_g": 4.33, + "fat_g": 31.26, + "fiber_g": 0.0, + "protein_g": 20.7, + "sodium_g": 0.964, + "sugar_g": 2.08 + }, + "source_description": "Cheese, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Cheese", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "dairy_egg", + "description": "Cheese, Cheddar is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Cheese, Cheddar", + "fdc_id": 2705709, + "macros": { + "calories": 409.0, + "carbs_g": 2.44, + "fat_g": 34.0, + "fiber_g": 0.0, + "protein_g": 23.3, + "sodium_g": 0.654, + "sugar_g": 0.33 + }, + "source_description": "Cheese, Cheddar", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Cheese", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "dairy_egg", + "description": "Cheese, Feta is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Cheese, Feta", + "fdc_id": 2705714, + "macros": { + "calories": 273.0, + "carbs_g": 5.58, + "fat_g": 19.08, + "fiber_g": 0.0, + "protein_g": 19.71, + "sodium_g": 1.034, + "sugar_g": 1.63 + }, + "source_description": "Cheese, Feta", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Cheese", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "dairy_egg", + "description": "Cheese, Mozzarella, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Cheese, Mozzarella, NFS", + "fdc_id": 2705722, + "macros": { + "calories": 296.0, + "carbs_g": 4.44, + "fat_g": 20.4, + "fiber_g": 0.0, + "protein_g": 23.7, + "sodium_g": 0.699, + "sugar_g": 1.81 + }, + "source_description": "Cheese, Mozzarella, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Cheese", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "dairy_egg", + "description": "Cheese, Parmesan, hard (Survey (FNDDS)) is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Cheese, Parmesan, hard (Survey (FNDDS))", + "fdc_id": 2705730, + "macros": { + "calories": 412.0, + "carbs_g": 8.36, + "fat_g": 28.75, + "fiber_g": 0.0, + "protein_g": 29.87, + "sodium_g": 1.398, + "sugar_g": 0.36 + }, + "source_description": "Cheese, Parmesan, hard", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Cheese", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "dairy_egg", + "description": "Cheese, paneer is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Cheese, paneer", + "fdc_id": 2705740, + "macros": { + "calories": 299.0, + "carbs_g": 22.46, + "fat_g": 15.52, + "fiber_g": 0.0, + "protein_g": 15.86, + "sodium_g": 0.185, + "sugar_g": 23.33 + }, + "source_description": "Cheese, paneer", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Cheese", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Queso Fresco is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Queso Fresco", + "fdc_id": 2705745, + "macros": { + "calories": 298.0, + "carbs_g": 2.96, + "fat_g": 23.36, + "fiber_g": 0.0, + "protein_g": 18.88, + "sodium_g": 0.626, + "sugar_g": 2.32 + }, + "source_description": "Queso Fresco", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Cheese", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Cheese, cottage, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Cheese, cottage, NFS", + "fdc_id": 2705747, + "macros": { + "calories": 82.0, + "carbs_g": 4.31, + "fat_g": 2.3, + "fiber_g": 0.0, + "protein_g": 11.0, + "sodium_g": 0.321, + "sugar_g": 4.1 + }, + "source_description": "Cheese, cottage, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Cottage/ricotta cheese", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Beef, steak, chuck is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Beef, steak, chuck", + "fdc_id": 2705825, + "macros": { + "calories": 225.0, + "carbs_g": 0.21, + "fat_g": 13.43, + "fiber_g": 0.0, + "protein_g": 25.97, + "sodium_g": 0.38, + "sugar_g": 0.0 + }, + "source_description": "Beef, steak, chuck", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Beef, excludes ground", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Beef, steak, flank is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Beef, steak, flank", + "fdc_id": 2705827, + "macros": { + "calories": 243.0, + "carbs_g": 0.0, + "fat_g": 14.09, + "fiber_g": 0.0, + "protein_g": 29.13, + "sodium_g": 0.37, + "sugar_g": 0.0 + }, + "source_description": "Beef, steak, flank", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Beef, excludes ground", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Pork, ground is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Pork, ground", + "fdc_id": 2705863, + "macros": { + "calories": 299.0, + "carbs_g": 0.0, + "fat_g": 21.22, + "fiber_g": 0.0, + "protein_g": 26.92, + "sodium_g": 0.395, + "sugar_g": 0.0 + }, + "source_description": "Pork, ground", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Pork", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Pork, chop, stuffed is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Pork, chop, stuffed", + "fdc_id": 2705872, + "macros": { + "calories": 190.0, + "carbs_g": 7.82, + "fat_g": 9.04, + "fiber_g": 1.0, + "protein_g": 18.37, + "sodium_g": 0.414, + "sugar_g": 0.0 + }, + "source_description": "Pork, chop, stuffed", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Meat mixed dishes", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Lamb, chop is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Lamb, chop", + "fdc_id": 2705906, + "macros": { + "calories": 264.0, + "carbs_g": 0.0, + "fat_g": 16.27, + "fiber_g": 0.0, + "protein_g": 27.36, + "sodium_g": 0.387, + "sugar_g": 0.0 + }, + "source_description": "Lamb, chop", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Lamb, goat, game", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Chicken drumstick, stewed, skin eaten is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Chicken drumstick, stewed, skin eaten", + "fdc_id": 2706014, + "macros": { + "calories": 186.0, + "carbs_g": 0.0, + "fat_g": 10.64, + "fiber_g": 0.0, + "protein_g": 22.54, + "sodium_g": 0.417, + "sugar_g": 0.0 + }, + "source_description": "Chicken drumstick, stewed, skin eaten", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Chicken, whole pieces", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Chicken thigh, stewed, skin eaten is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Chicken thigh, stewed, skin eaten", + "fdc_id": 2706037, + "macros": { + "calories": 227.0, + "carbs_g": 0.0, + "fat_g": 15.31, + "fiber_g": 0.0, + "protein_g": 22.39, + "sodium_g": 0.383, + "sugar_g": 0.0 + }, + "source_description": "Chicken thigh, stewed, skin eaten", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Chicken, whole pieces", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Chorizo is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Chorizo", + "fdc_id": 2706179, + "macros": { + "calories": 341.0, + "carbs_g": 2.63, + "fat_g": 28.1, + "fiber_g": 0.0, + "protein_g": 19.3, + "sodium_g": 0.983, + "sugar_g": 0.0 + }, + "source_description": "Chorizo", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Sausages", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Italian sausage is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Italian sausage", + "fdc_id": 2706189, + "macros": { + "calories": 317.0, + "carbs_g": 2.15, + "fat_g": 26.2, + "fiber_g": 0.0, + "protein_g": 18.2, + "sodium_g": 0.766, + "sugar_g": 1.46 + }, + "source_description": "Italian sausage", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Sausages", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Sausage, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Sausage, NFS", + "fdc_id": 2706190, + "macros": { + "calories": 325.0, + "carbs_g": 1.42, + "fat_g": 27.25, + "fiber_g": 0.0, + "protein_g": 18.53, + "sodium_g": 0.814, + "sugar_g": 1.09 + }, + "source_description": "Sausage, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Sausages", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Fish, catfish, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Fish, catfish, NFS", + "fdc_id": 2706234, + "macros": { + "calories": 255.0, + "carbs_g": 11.72, + "fat_g": 16.68, + "fiber_g": 0.5, + "protein_g": 13.49, + "sodium_g": 0.418, + "sugar_g": 0.2 + }, + "source_description": "Fish, catfish, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Fish", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Fish, cod, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Fish, cod, NFS", + "fdc_id": 2706240, + "macros": { + "calories": 217.0, + "carbs_g": 11.72, + "fat_g": 12.48, + "fiber_g": 0.5, + "protein_g": 13.52, + "sodium_g": 0.426, + "sugar_g": 0.2 + }, + "source_description": "Fish, cod, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Fish", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Fish, haddock, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Fish, haddock, NFS", + "fdc_id": 2706254, + "macros": { + "calories": 217.0, + "carbs_g": 11.72, + "fat_g": 12.51, + "fiber_g": 0.5, + "protein_g": 14.31, + "sodium_g": 0.395, + "sugar_g": 0.2 + }, + "source_description": "Fish, haddock, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Fish", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Fish, tuna, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Fish, tuna, raw", + "fdc_id": 2706308, + "macros": { + "calories": 109.0, + "carbs_g": 0.0, + "fat_g": 0.49, + "fiber_g": 0.0, + "protein_g": 24.4, + "sodium_g": 0.045, + "sugar_g": 0.0 + }, + "source_description": "Fish, tuna, raw", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Fish", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Fish, tilapia, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Fish, tilapia, NFS", + "fdc_id": 2706318, + "macros": { + "calories": 160.0, + "carbs_g": 0.01, + "fat_g": 6.65, + "fiber_g": 0.0, + "protein_g": 24.95, + "sodium_g": 0.28, + "sugar_g": 0.01 + }, + "source_description": "Fish, tilapia, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Fish", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Orange chicken is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Orange chicken", + "fdc_id": 2706443, + "macros": { + "calories": 262.0, + "carbs_g": 22.46, + "fat_g": 12.68, + "fiber_g": 0.8, + "protein_g": 14.46, + "sodium_g": 0.553, + "sugar_g": 13.6 + }, + "source_description": "Orange chicken", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Stir-fry and soy-based sauce mixtures", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Soup, broth is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Soup, broth", + "fdc_id": 2707132, + "macros": { + "calories": 6.0, + "carbs_g": 0.24, + "fat_g": 0.22, + "fiber_g": 0.0, + "protein_g": 0.89, + "sodium_g": 0.372, + "sugar_g": 0.22 + }, + "source_description": "Soup, broth", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Soups, broth-based", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Oyster sauce is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Oyster sauce", + "fdc_id": 2707150, + "macros": { + "calories": 51.0, + "carbs_g": 10.92, + "fat_g": 0.25, + "fiber_g": 0.3, + "protein_g": 1.35, + "sodium_g": 2.733, + "sugar_g": 0.0 + }, + "source_description": "Oyster sauce", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Soy-based condiments", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "White beans, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "White beans, NFS", + "fdc_id": 2707353, + "macros": { + "calories": 188.0, + "carbs_g": 23.32, + "fat_g": 6.83, + "fiber_g": 5.9, + "protein_g": 9.04, + "sodium_g": 0.221, + "sugar_g": 0.32 + }, + "source_description": "White beans, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Beans, peas, legumes", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Kidney beans, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Kidney beans, NFS", + "fdc_id": 2707379, + "macros": { + "calories": 177.0, + "carbs_g": 21.19, + "fat_g": 6.97, + "fiber_g": 6.9, + "protein_g": 8.06, + "sodium_g": 0.218, + "sugar_g": 0.3 + }, + "source_description": "Kidney beans, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Beans, peas, legumes", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Hummus, plain is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Hummus, plain", + "fdc_id": 2707402, + "macros": { + "calories": 243.0, + "carbs_g": 14.9, + "fat_g": 17.1, + "fiber_g": 5.4, + "protein_g": 7.35, + "sodium_g": 0.438, + "sugar_g": 0.34 + }, + "source_description": "Hummus, plain", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Dips, gravies, other sauces", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Blackeyed peas, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Blackeyed peas, NFS", + "fdc_id": 2707412, + "macros": { + "calories": 166.0, + "carbs_g": 19.29, + "fat_g": 7.0, + "fiber_g": 6.0, + "protein_g": 7.18, + "sodium_g": 0.22, + "sugar_g": 3.07 + }, + "source_description": "Blackeyed peas, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Beans, peas, legumes", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Lentils, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Lentils, NFS", + "fdc_id": 2707423, + "macros": { + "calories": 166.0, + "carbs_g": 18.71, + "fat_g": 6.86, + "fiber_g": 7.3, + "protein_g": 8.38, + "sodium_g": 0.218, + "sugar_g": 1.67 + }, + "source_description": "Lentils, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Beans, peas, legumes", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Miso is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Miso", + "fdc_id": 2707439, + "macros": { + "calories": 198.0, + "carbs_g": 25.37, + "fat_g": 6.01, + "fiber_g": 5.4, + "protein_g": 12.79, + "sodium_g": 3.728, + "sugar_g": 6.2 + }, + "source_description": "Miso", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Soy-based condiments", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Hoisin sauce is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Hoisin sauce", + "fdc_id": 2707441, + "macros": { + "calories": 220.0, + "carbs_g": 44.08, + "fat_g": 3.39, + "fiber_g": 2.8, + "protein_g": 3.31, + "sodium_g": 1.615, + "sugar_g": 27.26 + }, + "source_description": "Hoisin sauce", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Soy-based condiments", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "protein", + "description": "Bacon bits is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Bacon bits", + "fdc_id": 2707466, + "macros": { + "calories": 476.0, + "carbs_g": 28.6, + "fat_g": 25.9, + "fiber_g": 10.2, + "protein_g": 32.0, + "sodium_g": 1.77, + "sugar_g": 0.0 + }, + "source_description": "Bacon bits", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Bacon", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "grain_legume", + "description": "Bread, white is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Bread, white", + "fdc_id": 2707598, + "macros": { + "calories": 267.0, + "carbs_g": 49.2, + "fat_g": 3.59, + "fiber_g": 2.3, + "protein_g": 9.43, + "sodium_g": 0.45, + "sugar_g": 5.34 + }, + "source_description": "Bread, white", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Yeast breads", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Bread, French or Vienna is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Bread, French or Vienna", + "fdc_id": 2707610, + "macros": { + "calories": 272.0, + "carbs_g": 51.88, + "fat_g": 2.42, + "fiber_g": 2.2, + "protein_g": 10.75, + "sodium_g": 0.602, + "sugar_g": 4.62 + }, + "source_description": "Bread, French or Vienna", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Yeast breads", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "grain_legume", + "description": "Bread, pita is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Bread, pita", + "fdc_id": 2707616, + "macros": { + "calories": 275.0, + "carbs_g": 55.7, + "fat_g": 1.2, + "fiber_g": 2.2, + "protein_g": 9.1, + "sodium_g": 0.536, + "sugar_g": 1.3 + }, + "source_description": "Bread, pita", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Yeast breads", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "grain_legume", + "description": "Roll, white, hamburger bun is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Roll, white, hamburger bun", + "fdc_id": 2707657, + "macros": { + "calories": 267.0, + "carbs_g": 49.2, + "fat_g": 3.59, + "fiber_g": 2.3, + "protein_g": 9.43, + "sodium_g": 0.45, + "sugar_g": 5.34 + }, + "source_description": "Roll, white, hamburger bun", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Rolls and buns", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "grain_legume", + "description": "Tortilla, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Tortilla, NFS", + "fdc_id": 2707822, + "macros": { + "calories": 262.0, + "carbs_g": 47.01, + "fat_g": 5.42, + "fiber_g": 4.9, + "protein_g": 6.95, + "sodium_g": 0.372, + "sugar_g": 2.3 + }, + "source_description": "Tortilla, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Tortillas", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "grain_legume", + "description": "Tortilla, corn is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Tortilla, corn", + "fdc_id": 2707823, + "macros": { + "calories": 218.0, + "carbs_g": 44.64, + "fat_g": 2.85, + "fiber_g": 6.3, + "protein_g": 5.7, + "sodium_g": 0.045, + "sugar_g": 0.88 + }, + "source_description": "Tortilla, corn", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Tortillas", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Tortilla, flour is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Tortilla, flour", + "fdc_id": 2707824, + "macros": { + "calories": 306.0, + "carbs_g": 49.38, + "fat_g": 7.99, + "fiber_g": 3.5, + "protein_g": 8.2, + "sodium_g": 0.7, + "sugar_g": 3.71 + }, + "source_description": "Tortilla, flour", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Tortillas", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Taco shell, corn is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Taco shell, corn", + "fdc_id": 2707826, + "macros": { + "calories": 476.0, + "carbs_g": 63.49, + "fat_g": 21.79, + "fiber_g": 6.7, + "protein_g": 6.41, + "sodium_g": 0.324, + "sugar_g": 1.5 + }, + "source_description": "Taco shell, corn", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Tortillas", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "grain_legume", + "description": "Pastry, puff is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Pastry, puff", + "fdc_id": 2708053, + "macros": { + "calories": 558.0, + "carbs_g": 45.7, + "fat_g": 38.5, + "fiber_g": 1.5, + "protein_g": 7.4, + "sodium_g": 0.253, + "sugar_g": 0.75 + }, + "source_description": "Pastry, puff", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Doughnuts, sweet rolls, pastries", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Rice paper is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Rice paper", + "fdc_id": 2708166, + "macros": { + "calories": 323.0, + "carbs_g": 72.26, + "fat_g": 1.11, + "fiber_g": 0.5, + "protein_g": 5.91, + "sodium_g": 0.314, + "sugar_g": 0.27 + }, + "source_description": "Rice paper", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Crackers, excludes saltines", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Cake made with glutinous rice is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Cake made with glutinous rice", + "fdc_id": 2708345, + "macros": { + "calories": 279.0, + "carbs_g": 53.57, + "fat_g": 6.51, + "fiber_g": 0.7, + "protein_g": 2.49, + "sodium_g": 0.036, + "sugar_g": 31.12 + }, + "source_description": "Cake made with glutinous rice", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Rice mixed dishes", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Noodles, cooked is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Noodles, cooked", + "fdc_id": 2708352, + "macros": { + "calories": 137.0, + "carbs_g": 25.01, + "fat_g": 2.06, + "fiber_g": 1.2, + "protein_g": 4.51, + "sodium_g": 0.236, + "sugar_g": 0.4 + }, + "source_description": "Noodles, cooked", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Pasta, noodles, cooked grains", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "grain_legume", + "description": "Rice noodles, cooked (Survey (FNDDS)) is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Rice noodles, cooked (Survey (FNDDS))", + "fdc_id": 2708356, + "macros": { + "calories": 107.0, + "carbs_g": 23.87, + "fat_g": 0.2, + "fiber_g": 1.0, + "protein_g": 1.78, + "sodium_g": 0.25, + "sugar_g": 0.03 + }, + "source_description": "Rice noodles, cooked", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Pasta, noodles, cooked grains", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Pasta, cooked is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Pasta, cooked", + "fdc_id": 2708357, + "macros": { + "calories": 157.0, + "carbs_g": 30.68, + "fat_g": 0.92, + "fiber_g": 1.8, + "protein_g": 5.76, + "sodium_g": 0.232, + "sugar_g": 0.56 + }, + "source_description": "Pasta, cooked", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Pasta, noodles, cooked grains", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Rice, white, cooked, glutinous is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Rice, white, cooked, glutinous", + "fdc_id": 2708422, + "macros": { + "calories": 96.0, + "carbs_g": 20.97, + "fat_g": 0.19, + "fiber_g": 1.0, + "protein_g": 2.01, + "sodium_g": 0.227, + "sugar_g": 0.05 + }, + "source_description": "Rice, white, cooked, glutinous", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Rice", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "grain_legume", + "description": "Gnocchi, cheese is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Gnocchi, cheese", + "fdc_id": 2708721, + "macros": { + "calories": 178.0, + "carbs_g": 9.38, + "fat_g": 11.96, + "fiber_g": 0.2, + "protein_g": 8.51, + "sodium_g": 0.263, + "sugar_g": 0.14 + }, + "source_description": "Gnocchi, cheese", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Pasta mixed dishes, excludes macaroni and cheese", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Lemon juice, 100%, NS as to form is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Lemon juice, 100%, NS as to form", + "fdc_id": 2709180, + "macros": { + "calories": 22.0, + "carbs_g": 6.9, + "fat_g": 0.24, + "fiber_g": 0.3, + "protein_g": 0.35, + "sodium_g": 0.001, + "sugar_g": 2.52 + }, + "source_description": "Lemon juice, 100%, NS as to form", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Mustard and other condiments", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Orange juice, 100%, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Orange juice, 100%, NFS", + "fdc_id": 2709186, + "macros": { + "calories": 47.0, + "carbs_g": 10.17, + "fat_g": 0.34, + "fiber_g": 0.3, + "protein_g": 0.77, + "sodium_g": 0.002, + "sugar_g": 8.18 + }, + "source_description": "Orange juice, 100%, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Citrus juice", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "fruit", + "description": "Mango, raw (Survey (FNDDS)) is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Mango, raw (Survey (FNDDS))", + "fdc_id": 2709242, + "macros": { + "calories": 60.0, + "carbs_g": 14.98, + "fat_g": 0.38, + "fiber_g": 1.6, + "protein_g": 0.82, + "sodium_g": 0.001, + "sugar_g": 13.66 + }, + "source_description": "Mango, raw", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Mango and papaya", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "fruit", + "description": "Pineapple, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Pineapple, raw", + "fdc_id": 2709260, + "macros": { + "calories": 60.0, + "carbs_g": 14.09, + "fat_g": 0.21, + "fiber_g": 0.9, + "protein_g": 0.46, + "sodium_g": 0.0, + "sugar_g": 11.42 + }, + "source_description": "Pineapple, raw", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Pineapple", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "fruit", + "description": "Blueberries, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Blueberries, raw", + "fdc_id": 2709275, + "macros": { + "calories": 64.0, + "carbs_g": 14.57, + "fat_g": 0.31, + "fiber_g": 2.4, + "protein_g": 0.7, + "sodium_g": 0.0, + "sugar_g": 9.36 + }, + "source_description": "Blueberries, raw", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Blueberries and other berries", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Cranberry sauce is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Cranberry sauce", + "fdc_id": 2709280, + "macros": { + "calories": 159.0, + "carbs_g": 40.4, + "fat_g": 0.15, + "fiber_g": 1.1, + "protein_g": 0.9, + "sodium_g": 0.005, + "sugar_g": 31.75 + }, + "source_description": "Cranberry sauce", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Blueberries and other berries", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Apple cider is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Apple cider", + "fdc_id": 2709319, + "macros": { + "calories": 46.0, + "carbs_g": 11.3, + "fat_g": 0.13, + "fiber_g": 0.2, + "protein_g": 0.1, + "sodium_g": 0.004, + "sugar_g": 9.62 + }, + "source_description": "Apple cider", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Apple juice", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Potato, french fries, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Potato, french fries, NFS", + "fdc_id": 2709456, + "macros": { + "calories": 225.0, + "carbs_g": 23.23, + "fat_g": 14.07, + "fiber_g": 1.8, + "protein_g": 2.5, + "sodium_g": 0.295, + "sugar_g": 0.34 + }, + "source_description": "Potato, french fries, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "French fries and other fried white potatoes", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Plantain, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Plantain, raw", + "fdc_id": 2709560, + "macros": { + "calories": 122.0, + "carbs_g": 31.89, + "fat_g": 0.35, + "fiber_g": 1.7, + "protein_g": 1.3, + "sodium_g": 0.004, + "sugar_g": 17.51 + }, + "source_description": "Plantain, raw", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Other starchy vegetables", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Sweet potato, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Sweet potato, NFS", + "fdc_id": 2709697, + "macros": { + "calories": 115.0, + "carbs_g": 17.14, + "fat_g": 4.53, + "fiber_g": 3.0, + "protein_g": 1.58, + "sodium_g": 0.161, + "sugar_g": 6.0 + }, + "source_description": "Sweet potato, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Other red and orange vegetables", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Tomatoes, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Tomatoes, raw", + "fdc_id": 2709719, + "macros": { + "calories": 20.0, + "carbs_g": 4.04, + "fat_g": 0.31, + "fiber_g": 1.2, + "protein_g": 0.82, + "sodium_g": 0.004, + "sugar_g": 2.63 + }, + "source_description": "Tomatoes, raw", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Tomatoes", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "vegetable", + "description": "Bean sprouts, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Bean sprouts, raw", + "fdc_id": 2709768, + "macros": { + "calories": 30.0, + "carbs_g": 5.94, + "fat_g": 0.18, + "fiber_g": 1.8, + "protein_g": 3.04, + "sodium_g": 0.006, + "sugar_g": 4.13 + }, + "source_description": "Bean sprouts, raw", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Other vegetables and combinations", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:03:54Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Cabbage, red, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Cabbage, red, raw", + "fdc_id": 2709775, + "macros": { + "calories": 34.0, + "carbs_g": 6.79, + "fat_g": 0.21, + "fiber_g": 2.1, + "protein_g": 1.24, + "sodium_g": 0.012, + "sugar_g": 3.83 + }, + "source_description": "Cabbage, red, raw", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Cabbage", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Cauliflower, raw (Survey (FNDDS)) is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Cauliflower, raw (Survey (FNDDS))", + "fdc_id": 2709777, + "macros": { + "calories": 25.0, + "carbs_g": 4.97, + "fat_g": 0.28, + "fiber_g": 2.0, + "protein_g": 1.92, + "sodium_g": 0.03, + "sugar_g": 1.91 + }, + "source_description": "Cauliflower, raw", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Other vegetables and combinations", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "herb_spice", + "description": "Basil, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Basil, raw", + "fdc_id": 2709780, + "macros": { + "calories": 23.0, + "carbs_g": 2.65, + "fat_g": 0.64, + "fiber_g": 1.6, + "protein_g": 3.15, + "sodium_g": 0.004, + "sugar_g": 0.3 + }, + "source_description": "Basil, raw", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Not included in a food category", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "herb_spice", + "description": "Chives, raw (Survey (FNDDS)) is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Chives, raw (Survey (FNDDS))", + "fdc_id": 2709781, + "macros": { + "calories": 30.0, + "carbs_g": 4.35, + "fat_g": 0.73, + "fiber_g": 2.5, + "protein_g": 3.27, + "sodium_g": 0.003, + "sugar_g": 1.85 + }, + "source_description": "Chives, raw", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Not included in a food category", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "herb_spice", + "description": "Parsley, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Parsley, raw", + "fdc_id": 2709796, + "macros": { + "calories": 36.0, + "carbs_g": 6.33, + "fat_g": 0.79, + "fiber_g": 3.3, + "protein_g": 2.97, + "sodium_g": 0.056, + "sugar_g": 0.85 + }, + "source_description": "Parsley, raw", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Not included in a food category", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Seaweed, raw is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Seaweed, raw", + "fdc_id": 2709805, + "macros": { + "calories": 41.0, + "carbs_g": 7.94, + "fat_g": 0.49, + "fiber_g": 0.7, + "protein_g": 3.51, + "sodium_g": 0.384, + "sugar_g": 0.58 + }, + "source_description": "Seaweed, raw", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Other vegetables and combinations", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "vegetable", + "description": "Hominy, cooked is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Hominy, cooked", + "fdc_id": 2709933, + "macros": { + "calories": 88.0, + "carbs_g": 13.8, + "fat_g": 2.91, + "fiber_g": 2.4, + "protein_g": 1.45, + "sodium_g": 0.501, + "sugar_g": 1.47 + }, + "source_description": "Hominy, cooked", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Grits and other cooked cereals", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Leeks is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Leeks", + "fdc_id": 2709935, + "macros": { + "calories": 88.0, + "carbs_g": 14.74, + "fat_g": 3.05, + "fiber_g": 1.9, + "protein_g": 1.57, + "sodium_g": 0.151, + "sugar_g": 4.07 + }, + "source_description": "Leeks", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Onions", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Yeast is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Yeast", + "fdc_id": 2710005, + "macros": { + "calories": 325.0, + "carbs_g": 41.22, + "fat_g": 7.61, + "fiber_g": 26.9, + "protein_g": 40.44, + "sodium_g": 0.051, + "sugar_g": 0.0 + }, + "source_description": "Yeast", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Not included in a food category", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Kimchi is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Kimchi", + "fdc_id": 2710077, + "macros": { + "calories": 15.0, + "carbs_g": 2.4, + "fat_g": 0.5, + "fiber_g": 1.6, + "protein_g": 1.1, + "sodium_g": 0.498, + "sugar_g": 1.06 + }, + "source_description": "Kimchi", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Olives, pickles, pickled vegetables", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "vegetable", + "description": "Pickles, dill is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Pickles, dill", + "fdc_id": 2710078, + "macros": { + "calories": 14.0, + "carbs_g": 1.99, + "fat_g": 0.43, + "fiber_g": 1.0, + "protein_g": 0.48, + "sodium_g": 0.808, + "sugar_g": 1.28 + }, + "source_description": "Pickles, dill", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Olives, pickles, pickled vegetables", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Mustard is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Mustard", + "fdc_id": 2710085, + "macros": { + "calories": 69.0, + "carbs_g": 5.3, + "fat_g": 3.38, + "fiber_g": 4.3, + "protein_g": 4.25, + "sodium_g": 1.1, + "sugar_g": 1.42 + }, + "source_description": "Mustard", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Mustard and other condiments", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "dairy_egg", + "description": "Butter, NFS is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Butter, NFS", + "fdc_id": 2710154, + "macros": { + "calories": 743.0, + "carbs_g": 0.06, + "fat_g": 82.2, + "fiber_g": 0.0, + "protein_g": 0.85, + "sodium_g": 0.524, + "sugar_g": 0.58 + }, + "source_description": "Butter, NFS", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Butter and animal fats", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Coconut oil is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Coconut oil", + "fdc_id": 2710182, + "macros": { + "calories": 895.0, + "carbs_g": 0.84, + "fat_g": 99.1, + "fiber_g": 0.0, + "protein_g": 0.0, + "sodium_g": 0.0, + "sugar_g": 0.0 + }, + "source_description": "Coconut oil", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Salad dressings and vegetable oils", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Sugar, brown is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Sugar, brown", + "fdc_id": 2710260, + "macros": { + "calories": 380.0, + "carbs_g": 98.09, + "fat_g": 0.0, + "fiber_g": 0.0, + "protein_g": 0.12, + "sodium_g": 0.028, + "sugar_g": 97.02 + }, + "source_description": "Sugar, brown", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Sugars and honey", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Honey is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Honey", + "fdc_id": 2710281, + "macros": { + "calories": 304.0, + "carbs_g": 82.4, + "fat_g": 0.0, + "fiber_g": 0.2, + "protein_g": 0.3, + "sodium_g": 0.004, + "sugar_g": 82.12 + }, + "source_description": "Honey", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Sugars and honey", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Coffee, brewed is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Coffee, brewed", + "fdc_id": 2710375, + "macros": { + "calories": 1.0, + "carbs_g": 0.0, + "fat_g": 0.02, + "fiber_g": 0.0, + "protein_g": 0.12, + "sodium_g": 0.002, + "sugar_g": 0.0 + }, + "source_description": "Coffee, brewed", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Coffee", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "condiment", + "description": "Tea, hot, leaf, black is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Tea, hot, leaf, black", + "fdc_id": 2710488, + "macros": { + "calories": 1.0, + "carbs_g": 0.3, + "fat_g": 0.0, + "fiber_g": 0.0, + "protein_g": 0.0, + "sodium_g": 0.003, + "sugar_g": 0.0 + }, + "source_description": "Tea, hot, leaf, black", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Tea", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Wine, red is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Wine, red", + "fdc_id": 2710688, + "macros": { + "calories": 85.0, + "carbs_g": 2.61, + "fat_g": 0.0, + "fiber_g": 0.0, + "protein_g": 0.07, + "sodium_g": 0.004, + "sugar_g": 0.62 + }, + "source_description": "Wine, red", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Wine", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "other", + "description": "Rum is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Rum", + "fdc_id": 2710703, + "macros": { + "calories": 231.0, + "carbs_g": 0.0, + "fat_g": 0.0, + "fiber_g": 0.0, + "protein_g": 0.0, + "sodium_g": 0.001, + "sugar_g": 0.0 + }, + "source_description": "Rum", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Liquor and cocktails", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" + }, + { + "alt_names": [], + "category_label": "grain_legume", + "description": "Rice, brown, cooked, as ingredient is a USDA-listed ingredient; nutrition is per 100 g as reported by FoodData Central (Survey (FNDDS)).", + "display_name": "Rice, brown, cooked, as ingredient", + "fdc_id": 2710789, + "macros": { + "calories": 124.0, + "carbs_g": 25.89, + "fat_g": 1.12, + "fiber_g": 1.0, + "protein_g": 2.45, + "sodium_g": 0.003, + "sugar_g": 0.22 + }, + "source_description": "Rice, brown, cooked, as ingredient", + "source_meta": { + "data_type": "Survey (FNDDS)", + "food_category": "Not included in a food category", + "verification_source": "USDA FoodData Central bulk download (CC0)", + "verified_at_utc": "2026-10-15T22:01:13Z" + }, + "sprite_group": "other", + "sprite_key": "" }, { "alt_names": [ diff --git a/scripts/data/import_missing_fdc_rows.py b/scripts/data/import_missing_fdc_rows.py new file mode 100644 index 000000000..c0c4c4a1b --- /dev/null +++ b/scripts/data/import_missing_fdc_rows.py @@ -0,0 +1,369 @@ +#!/usr/bin/env python3 +"""Add USDA FoodData Central rows the recipe catalog needs but the app catalog lacks. + +The bundle-v2 vocabulary carries an `fdc_id` on most ingredient keys. When that id is +missing from the shipped `usda_ingredient_catalog.sqlite`, the hydration-time identity +bridge cannot resolve the key, and every recipe line on it counts as "not in your +kitchen". This tool closes that gap from cited data only: + + 1. Read the shipped bundle vocabulary and the canonical catalog + (`catalog/usda_curated_ingredients.json`); list the `fdc_id`s the vocabulary + references that the canonical catalog does not carry. + 2. For each missing id, take the exact food row from the public FDC bulk CSV + downloads (Foundation / SR Legacy / Survey (FNDDS), CC0, no API key): the + description becomes the display name, and the per-100 g macros come from the + row's food_nutrient entries (Energy, Protein, Carbohydrate, Total lipid, Fiber, + Total sugars, Sodium). + 3. Merge the new records into the canonical catalog (sorted by fdc_id, the schema's + own validation applies), leaving every existing row byte-identical (macro freeze). + +A vocabulary key with no `fdc_id` resolves only through a legacy id or a cited +same-food FDC row of its own; this tool never invents one. Keys it cannot cover are +left unresolved and are listed in the reach report. + +Usage: + python3 scripts/data/import_missing_fdc_rows.py \ + --fdc-csv-root /tmp/fdc/ext \ + --repo-root /path/to/FridgeLuck +""" + +from __future__ import annotations + +import argparse +import csv +import json +import sys +from collections import defaultdict +from datetime import datetime, timezone +from pathlib import Path + +# Per-100 g nutrient ids in FDC bulk downloads. Survey (FNDDS) rows use the +# legacy nutrient_nbr ids (208/203/...) in food_nutrient.csv; Foundation and +# SR Legacy use the FDC master ids (1008/1003/...). Prefer the FDC id, fall +# back to the legacy one. +NUTRIENT_ENERGY_KCAL = [1008, 208] +NUTRIENT_PROTEIN = [1003, 203] +NUTRIENT_CARBES = [1005, 205] +NUTRIENT_FAT = [1004, 204] +NUTRIENT_FIBER = [1079, 291] +NUTRIENT_SODIUM = [1093, 307] +NUTRIENT_SUGARS = [2000, 1063, 269] # prefer "Total Sugars" style ids, first hit wins + +SMALL_WORDS = {"and", "or", "of", "in", "with", "without", "to", "for", "on", "a", "an", "the"} +UPPER_TOKENS = {"nfs", "ns", "na", "wt", "iqf", "usda", "php", "bpa"} + + +def title_case(description: str) -> str: + """Humanize an FDC description. Uppercase descriptions become title case with + small words lowercase; mixed-case descriptions pass through unchanged.""" + text = " ".join(description.split()) + if not text or not text.isupper(): + return text + + def fix_word(word: str) -> str: + lowered = word.lower() + if lowered in UPPER_TOKENS: + return lowered.upper() + if lowered in SMALL_WORDS: + return lowered + return lowered[:1].upper() + lowered[1:] + + words = [fix_word(w) for w in text.lower().split(" ")] + # The first word always capitalizes. + if words: + words[0] = words[0][:1].upper() + words[0][1:] + return " ".join(words) + + +def load_vocabulary(bundle_path: Path) -> list[dict]: + bundle = json.loads(bundle_path.read_text()) + return bundle["ingredients"] + + +def load_canonical(canonical_path: Path) -> dict: + return json.loads(canonical_path.read_text()) + + +def missing_fdc_ids(vocabulary: list[dict], canonical: dict) -> dict[int, list[str]]: + """fdc_id -> vocabulary keys that reference it, for ids the canonical lacks.""" + have = {row["fdc_id"] for row in canonical["records"]} + wanted: dict[int, list[str]] = defaultdict(list) + for row in vocabulary: + fdc_id = row.get("fdc_id") + if fdc_id is not None and int(fdc_id) not in have: + wanted[int(fdc_id)].append(row["key"]) + return dict(wanted) + + +def read_food_rows(csv_root: Path) -> dict[int, dict]: + """fdc_id -> {description, data_type, category} across the three public datasets.""" + datasets = [ + ("FoodData_Central_foundation_food_csv", "Foundation"), + ("FoodData_Central_sr_legacy_food_csv", "SR Legacy"), + ("FoodData_Central_survey_food_csv", "Survey (FNDDS)"), + ] + foods: dict[int, dict] = {} + for prefix, data_type in datasets: + dataset_dir = next(csv_root.glob(f"{prefix}_*/{prefix}_*"), None) + if dataset_dir is None: + continue + category_names = read_category_names(dataset_dir) + with (dataset_dir / "food.csv").open(newline="", encoding="utf-8") as handle: + for row in csv.DictReader(handle): + fdc_id = int(row["fdc_id"]) + category = category_names.get( + row.get("food_category_id", ""), f"{data_type} foods" + ) + foods[fdc_id] = { + "description": row["description"], + "data_type": data_type, + "food_category": category, + } + return foods + + +def read_category_names(dataset_dir: Path) -> dict[str, str]: + names: dict[str, str] = {} + category_csv = dataset_dir / "food_category.csv" + if category_csv.exists(): + with category_csv.open(newline="", encoding="utf-8") as handle: + for row in csv.DictReader(handle): + names[row["id"]] = row.get("description", "") + wweia_csv = dataset_dir / "wweia_food_category.csv" + if wweia_csv.exists(): + with wweia_csv.open(newline="", encoding="utf-8") as handle: + for row in csv.DictReader(handle): + code = row.get("wweia_food_category", row.get("code", "")) + names[code] = row.get("wweia_food_category_description", row.get("description", "")) + return names + + +def read_macros(csv_root: Path, fdc_ids: set[int]) -> dict[int, dict[str, float]]: + """fdc_id -> per-100 g macros from food_nutrient.csv across the datasets.""" + amounts: dict[int, dict[int, float]] = defaultdict(dict) + for prefix in [ + "FoodData_Central_foundation_food_csv", + "FoodData_Central_sr_legacy_food_csv", + "FoodData_Central_survey_food_csv", + ]: + dataset_dir = next(csv_root.glob(f"{prefix}_*/{prefix}_*"), None) + if dataset_dir is None: + continue + nutrient_csv = dataset_dir / "food_nutrient.csv" + if not nutrient_csv.exists(): + continue + with nutrient_csv.open(newline="", encoding="utf-8") as handle: + for row in csv.DictReader(handle): + fdc_id = int(row["fdc_id"]) + if fdc_id not in fdc_ids: + continue + nutrient_id = int(row["nutrient_id"]) + amounts[fdc_id][nutrient_id] = float(row["amount"]) + + macros_by_id: dict[int, dict[str, float]] = {} + + def first_amount(per_nutrient: dict[int, float], ids: list[int]) -> float: + for nutrient_id in ids: + if nutrient_id in per_nutrient: + return per_nutrient[nutrient_id] + return 0.0 + + for fdc_id, per_nutrient in amounts.items(): + macros_by_id[fdc_id] = { + "calories": round(first_amount(per_nutrient, NUTRIENT_ENERGY_KCAL), 4), + "protein_g": round(first_amount(per_nutrient, NUTRIENT_PROTEIN), 4), + "carbs_g": round(first_amount(per_nutrient, NUTRIENT_CARBES), 4), + "fat_g": round(first_amount(per_nutrient, NUTRIENT_FAT), 4), + "fiber_g": round(first_amount(per_nutrient, NUTRIENT_FIBER), 4), + "sugar_g": round(first_amount(per_nutrient, NUTRIENT_SUGARS), 4), + "sodium_g": round(first_amount(per_nutrient, NUTRIENT_SODIUM) / 1000.0, 4), + } + return macros_by_id + + +VOCAB_CATEGORY_TO_LABEL = { + "meat": "protein", + "fish": "protein", + "shellfish": "protein", + "spice": "herb_spice", + "grain": "grain_legume", + "dairy_egg": "dairy_egg", + "vegetable": "vegetable", + "fruit": "fruit", + "condiment": "condiment", + "other": "other", +} + +FDC_CATEGORY_TO_LABEL = { + "Dairy and Egg Products": "dairy_egg", + "Fats and Oils": "oil_fat", + "Poultry Products": "protein", + "Sausages and Luncheon Meats": "protein", + "Pork Products": "protein", + "Beef Products": "protein", + "Finfish and Shellfish Products": "protein", + "Lamb, Veal, and Game Products": "protein", + "Vegetables and Vegetable Products": "vegetable", + "Fruits and Fruit Juices": "fruit", + "Legumes and Legume Products": "grain_legume", + "Nut and Seed Products": "nut_seed", + "Spices and Herbs": "herb_spice", + "Soups, Sauces, and Gravies": "condiment", + "Grains and Pasta": "grain_legume", + "Breakfast Cereals": "grain_legume", + "Baked Products": "sweetener_baking", + "Sweets": "sweetener_baking", + "Sweeteners": "sweetener_baking", +} + + +def choose_category( + vocab_categories: list[str], fdc_category: str | None +) -> str: + for category in vocab_categories: + label = VOCAB_CATEGORY_TO_LABEL.get(category) + if label: + return label + if fdc_category and fdc_category in FDC_CATEGORY_TO_LABEL: + return FDC_CATEGORY_TO_LABEL[fdc_category] + return "other" + + +def unique_display_name( + display_name: str, fdc_id: int, taken: set[str], data_type: str +) -> str: + """Keep canonical display names unique; `taken` holds canonical keys and is updated.""" + from usda_core.utils import canonical # noqa: PLC0415 — local import keeps the CLI lean + + key = canonical(display_name) + if key not in taken: + taken.add(key) + return display_name + suffixed = f"{display_name} ({data_type})" + suffixed_key = canonical(suffixed) + if suffixed_key not in taken: + taken.add(suffixed_key) + return suffixed + fallback = f"{display_name} (fdc {fdc_id})" + taken.add(canonical(fallback)) + return fallback + + +def canonical_display_key(value: str) -> str: + from usda_core.utils import canonical # noqa: PLC0415 + + return canonical(value) + + +def build_new_records( + wanted: dict[int, list[str]], + vocab_categories: dict[str, str], + foods: dict[int, dict], + macros_by_id: dict[int, dict[str, float]], + taken_names: set[str], +) -> tuple[list[dict], list[dict]]: + verified = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ") + new_records: list[dict] = [] + not_found: list[dict] = [] + for fdc_id in sorted(wanted): + keys = wanted[fdc_id] + categories = [vocab_categories.get(key, "other") for key in keys] + food = foods.get(fdc_id) + macros = macros_by_id.get(fdc_id) + if food is None or macros is None: + not_found.append({"fdc_id": fdc_id, "keys": keys}) + continue + display_name = unique_display_name( + title_case(food["description"]), fdc_id, taken_names, food["data_type"] + ) + taken_names.add(display_name) + category = choose_category(categories, food["food_category"]) + new_records.append( + { + "fdc_id": fdc_id, + "display_name": display_name, + "alt_names": [], + "category_label": category, + "sprite_group": "other", + "sprite_key": "", + "description": ( + f"{display_name} is a USDA-listed ingredient; nutrition is per 100 g " + f"as reported by FoodData Central ({food['data_type']})." + ), + "source_description": food["description"], + "source_meta": { + "data_type": food["data_type"], + "food_category": food["food_category"], + "verified_at_utc": verified, + "verification_source": "USDA FoodData Central bulk download (CC0)", + }, + "macros": macros, + } + ) + return new_records, not_found + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--repo-root", type=Path, default=Path(__file__).resolve().parents[2]) + parser.add_argument( + "--fdc-csv-root", type=Path, required=True, + help="Directory holding the extracted FDC bulk CSV downloads", + ) + parser.add_argument( + "--apply", action="store_true", + help="Write the merged canonical JSON; without this flag the run is a dry report", + ) + args = parser.parse_args() + + sys.path.insert(0, str(args.repo_root / "scripts" / "data")) + + bundle_path = args.repo_root / "apps/ios/Resources/RecipeCatalog/recipes-v2.json" + canonical_path = args.repo_root / "scripts/data/catalog/usda_curated_ingredients.json" + + vocabulary = load_vocabulary(bundle_path) + canonical = load_canonical(canonical_path) + vocab_categories = {row["key"]: row.get("category", "other") for row in vocabulary} + + wanted = missing_fdc_ids(vocabulary, canonical) + print(f"missing fdc ids referenced by the vocabulary: {len(wanted)}") + + foods = read_food_rows(args.fdc_csv_root) + print(f"food rows loaded from bulk downloads: {len(foods)}") + + macros_by_id = read_macros(args.fdc_csv_root, set(wanted)) + print(f"missing ids with nutrition rows: {len(macros_by_id)}") + + existing_names = { + canonical_display_key(row["display_name"]) for row in canonical["records"] + } + new_records, not_found = build_new_records( + wanted, vocab_categories, foods, macros_by_id, existing_names + ) + print(f"new canonical records: {new_records and len(new_records)}") + for entry in not_found: + print( + f" NOT FOUND in bulk downloads: fdc_id={entry['fdc_id']} keys={entry['keys']}" + ) + + if not args.apply: + print("dry run; pass --apply to merge into the canonical JSON") + return 0 + + from usda_core.io import load_canonical as load_canonical_catalog # noqa: PLC0415 + from usda_core.io import save_canonical as save_canonical_catalog # noqa: PLC0415 + from usda_core.schema import CuratedIngredientRow # noqa: PLC0415 + from usda_core.validate import validate_catalog # noqa: PLC0415 + + merged = load_canonical_catalog(canonical_path) + for record in new_records: + merged.records.append(CuratedIngredientRow.model_validate(record)) + merged.records.sort(key=lambda row: row.fdc_id) + validate_catalog(merged) + save_canonical_catalog(canonical_path, merged) + print(f"canonical catalog now carries {len(merged.records)} records") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())