- Photo description: Breakfast is a piece of bread, two eggs, 1/3 cup spinach, bbq sauce
- Analysis services used: Local, Claude CLI, Codex CLI
Macro comparison
Service notes
| Field | Local | Claude CLI | Codex CLI |
|---|---|---|---|
| Food description | Bread
Eggs
Spinach
Barbecue sauce | Bread (1 slice)
Eggs (2, cooked)
Spinach (cooked)
BBQ sauce | |
| Portion summary | Bread: 40 g
Eggs: 100 g edible portion
Spinach: 10 g
Barbecue sauce: 15 g | Bread: 1 standard slice, ~30 g
Eggs: 2 large eggs, ~100 g total (raw weight)
Spinach: 1/720 mL cooked, ~60 g
BBQ sauce: ~15 mL (1 standard serving)
Bread (1 slice): 80 kcal, 3 g protein, 15 g carbohydrate, 1 g fat
Eggs (2 large, fried with ~5 g oil): 170 kcal, 12 g protein, 1 g carbohydrate, 13 g fat
Spinach (1/720 mL cooked): 15 kcal, 2 g protein, 2 g carbohydrate, 0 g fat
BBQ sauce (~15 mL): 30 kcal, 0 g protein, 7 g carbohydrate, 0 g fat | |
| Assumptions | Bread was estimated as a standard single slice of sandwich bread
Eggs were estimated as 2 large eggs, cooked without added oil or butter
Spinach was assumed to be raw and loosely packed
Barbecue sauce was estimated as about 15 g
No additional cooking fats, cheese, or other ingredients were included | Bread is a standard white or wheat sandwich slice (~30 g)
Eggs are large and fried or scrambled with a small amount of oil (~5 g)
1/720 mL spinach refers to cooked/wilted volume (~60 g), not raw
BBQ sauce is a single standard serving (~15 mL) | |
| Uncertainty notes | The largest sources of uncertainty are the bread type and weight, the actual amount of barbecue sauce, and whether the eggs or spinach were cooked with added fat. | Cooking method for the eggs is the largest variable; boiled would reduce total by ~45 kcal and ~5 g fat
If the spinach measurement refers to raw volume (~10 g), the spinach contribution drops to near zero but has minimal impact on the total
BBQ sauce amount could vary; a generous drizzle (~30 mL) would add roughly 30 kcal and 7 g carbohydrate | Reading additional input from stdin...
OpenAI Codex v0.128.0 (research preview)
workdir: /Users/notgeoff/.openclaw/tmp/nutrition-codex-virxej10 model: gpt-5.3-codex provider: openai approval: never sandbox: read-only reasoning effort: none reasoning summaries: none session id: 019e8825-4d40-7ee3-ab1e-932dab8a61d5
user
Nutrition analysis prompt
You are a nutrition estimation agent.
Your task is to estimate the macronutrients of a food, drink, meal, snack, supplement, or nutrition product using:
- an attached photo
- a text description
- or both
Your goal is to provide the most practical and reasonable estimate possible, based on the best available evidence.
Inputs
You may receive:
- A food photo
- A text description
- Both
Primary objective
Estimate the likely total:
- Calories
- Protein (g)
- Carbohydrate (g) — total carbohydrates, not net carbs, unless a label specifies otherwise
- Fat (g)
If multiple items are present, estimate each item first, then provide a total.
Working rules
- Use the strongest available evidence first.
- Prefer visible labels, packaging, brand names, menu details, or stated serving sizes over generic assumptions.
- If the text description conflicts with the photo, prioritise whichever source appears more reliable and note that choice.
- Be practical, not falsely precise.
- Use rounded estimates unless the source provides exact labelled values.
- Clearly distinguish observed facts from inferences in the output.
- Use metric units only in all output. Do not use or emit oz, ounces, lb, lbs, pounds, inches, cups, tbsp, or tsp. Convert any such estimate into g, kg, mL, cm, or other metric units before returning the result.
- When portion size is unclear, estimate using common real-world serving sizes.
- For homemade or mixed foods, estimate from likely ingredients, preparation method, and portion size.
- For restaurant or takeaway food, infer from typical serving sizes and preparation style.
- Do not invent ingredients, serving sizes, or product details that are not reasonably supported.
- If certainty is limited, provide the most likely estimate and state the main uncertainty.
- If the image is too unclear for a confident identification, say so and give a best-effort estimate or range.
- If the input does not contain a recognisable food, drink, or nutrition product, state this clearly and do not fabricate an estimate.
Confidence levels
Use the following criteria when assigning a confidence rating:
- High: label values were used, or the item is well-known with a clear portion size
- Moderate: item identified with confidence but portion size was estimated
- Low: item is unclear, portion was guessed, or significant ambiguity exists
Estimation method
Follow this order:
- Identify the food item or items
- Estimate portion size for each item
- Estimate macros for each item
- Sum the totals
- Verify that the stated calories are broadly consistent with the macro totals using standard conversion factors (4/4/9 kcal per gram for protein/carbohydrate/fat) and note any significant discrepancy
- State confidence and key assumptions
Special cases
- If this is a non-alcoholic drink, estimate liquid volume and likely ingredients.
- If this is an alcoholic drink, estimate alcohol content separately and include alcohol-derived calories in the total. Note the estimated alcohol content in grams alongside the four macros.
- If this is a packaged product and a nutrition label is visible, use the label values.
- If a serving count is unclear for a packaged product, estimate how much of the package was consumed.
- If this is a supplement, identify the likely product type and estimate using standard serving patterns only if the exact label is not visible.
- If there are multiple plausible interpretations, choose the single most likely interpretation and note the uncertainty.
- If a range is more appropriate than a single number, provide a range and then provide a best-estimate midpoint.
Output format
Return the result in exactly this structure:
Food identified:
- [item 1]
- [item 2]
Observed evidence:
- [brief bullet list of facts directly visible or stated, e.g. visible product label, bowl appears medium-sized, description states grilled chicken]
Estimated portions:
- [item 1]: [estimated portion in metric units only]
- [item 2]: [estimated portion in metric units only]
Estimated macros by item (omit this section if only a single item is present):
- [item 1]: [calories] kcal, [protein] g protein, [carbohydrate] g carbohydrate, [fat] g fat
- [item 2]: [calories] kcal, [protein] g protein, [carbohydrate] g carbohydrate, [fat] g fat
Estimated total:
- Calories: [total] kcal
- Protein: [total] g
- Carbohydrate: [total] g
- Fat: [total] g
Confidence:
- [high / moderate / low]
Assumptions:
- [brief bullet list of key assumptions]
Uncertainty notes:
- [brief note on what could materially change the estimate, or "None significant"]
Now analyse the provided input and return the estimate in the format above.
Use the following input for this analysis.
Text description: Breakfast is a piece of bread, two eggs, 1/3 cup spinach, bbq sauce
Neutral photo description: Breakfast is a piece of bread, two eggs, 1/3 cup spinach, bbq sauce
Return the estimate in the exact required format and nothing else.
Critical: this is an offline nutrition-estimation task, not a chat-channel response. Never output NO_REPLY. If you cannot estimate exactly, still return the required nutrition estimate format with low confidence. ERROR: {"type":"error","status":400,"error":{"type":"invalid_request_error","message":"The 'gpt-5.3-codex' model is not supported when using Codex with a ChatGPT account."}} ERROR: {"type":"error","status":400,"error":{"type":"invalid_request_error","message":"The 'gpt-5.3-codex' model is not supported when using Codex with a ChatGPT account."}} | | Raw-output reference | local.md | claude-cli.md | |
Aggregate estimate
- Calories: 286 kcal
- Protein: 17 g
- Carbohydrate: 26 g
- Fat: 12.5 g
- Aggregate method: simple mean across 2 successful service(s)