bettermenu16.3 KB
View saved version →
---
name: bettermenu
description: Use when the user wants US nutrition numbers or FDA food labelling with BetterMenu: an FDA Nutrition Facts label, or nutrition facts, calories and %DV per serving, for a recipe or batch they paste (in any units), link, want saved, or already have saved, with per-unit numbers for a yield ("calories per bar if it makes 8"); USDA nutrition for one food, branded products included ("how many calories in an apple", "sugar in a granola bar"); comparing two foods ("butter vs margarine, more saturated fat"); an amount in grams ("how many grams is 2 cups of flour"); the US FDA Daily Value for a nutrient ("daily value for sodium"); the FDA serving size for a food type ("what serving size for cookies"); and their saved recipes and custom ingredients. Not for inventing a recipe or method ("give me a banana bread recipe"), meal plans, diet advice, or explaining a term such as %DV.
---
# BetterMenu: US nutrition facts, FDA labels, food data
BetterMenu computes nutrition from amounts, using USDA data and the user's own custom
ingredients, under US FDA rules (market `US`).
## Read the recipe first
Before the first search, read the whole recipe: the ingredient table and every step. The
recipe is everything in both. Then send the user one message that covers all of these:
- **Items only in the steps.** Finishing butter, egg wash, dusting flour, a side sauce
served "in a ramekin" or "serve with", a garnish. Name each one as an addition, with its
amount, or ask for the amount.
- **Items only in the table** that no step uses. An item is table-only when no step names
it, even when you can guess where it goes. Name each one as table-only, even when you plan
to keep it, and ask whether it goes in the dish.
- **Names that differ.** "Chicken slice" in the table and "chicken pieces" in a step are one
item. Say that you read them as one.
- **Alternatives.** "Rice or fries", "chicken or beef", "selected add-on", "choice of" are
options, not additions. Never add the options together. Propose one recipe per guest
choice, or ask which one to label.
- **Amounts that differ** between the table and the steps. Use the table amount and say so.
Ask only when the difference matters (see "Go ahead, ask, or step away").
- **Household units** ("1 scoop", "6 shakes", "150 ml" of a sauce). Convert them with
`convert_ingredient_amounts_to_grams`, or state the weight you used and why.
- **House-made items named like a generic food** ("garlic butter blend", "house seasoning
salt"). They are not plain butter or plain salt. Ask for the house recipe or the spec
sheet, or offer to make a custom ingredient (`references/custom-ingredients.md`). Use the
generic food only when the user says so, and say that you did.
- **Raw or cooked** for every line (next section).
One message, not one question per line. When an item needs the user's answer (an item
only in the steps or only in the table, a garnish with no amount, alternatives, a
house-made item, or a raw or cooked state the steps do not settle), send the message and
wait for the reply before you save. Ask only about the items that need an answer; state
everything else as a default with its size, and do not ask to confirm it. States the steps settle need no answer: state them and
go ahead. A clean recipe, where the table and the
steps agree, needs no extra questions. Worked examples are in `references/reading-a-recipe.md`.
## Raw or cooked
Decide for each line from what the steps do with it, then search for that state.
- **Weighed, then cooked in the dish** (chicken grilled to order, rice simmered in the pot):
raw. Use the raw food.
- **Weighed after cooking** (rice scooped from a warmer, beans ladled from a pot; "cooked penne
230g"): cooked. Search "rice, cooked", not "rice". A portioned grain is a cooked weight
even when the recipe never says "cooked".
- **Not said, for grains, pasta, dried beans or meat:** ask.
- **Give the size of the swing** for grains, Preview of the first 4,000 characters. Read full instructions →
Referenced files: 3 — file references are metadata, not package contents.