How to Build a Shopping List from a Recipe Photo
A photo-first skill for a shopping list from a recipe. Read only what the card prints, subtract your pantry, group by aisle, and stop ChatGPT, Claude, or Gemini from adding “pantry staples” you did not ask for.
Anyone holding a recipe card can build a shopping list from a photo in 10 minutes: extract only printed ingredients, subtract the pantry you name, group by aisle, and stop. Run it in ChatGPT, Claude, or Gemini before the model adds a lemon, a garnish, and a “you might also like.”
A bonus item is not hospitality. It is a second recipe you did not agree to cook.
This is a grounding skill. The photo is the source. If you want the loop pattern, read what a skill prompt actually is, then lock the extract-then-subtract law below.
Read the card, then subtract, then group
Do not ask for a “complete shop” in the first message. Complete is how a 9-ingredient dish becomes a cart.
1. Photograph the card. State the law.
Upload the photo. In the same message:
“This image is the only source. List only ingredients that are printed. Keep the printed amount and unit. If an amount is unreadable, write UNKNOWN. Do not add salt, oil, or water unless they are printed. Do not complete a garnish from memory.”
If the card has a title, make the model repeat the title in the card’s words. A prettier title is already drift.
The same refuse rule as studying a PDF without fake quotes applies: no visible line, no item.
2. One list, three columns, no story
Ask for a table:
- Ingredient as printed
- Amount plus unit, or UNKNOWN
- Need flag, left blank for the pantry pass
“No paragraph about the cuisine. No wine pairing. No ‘serve with crusty bread’ unless bread is on the card.”
ChatGPT will try to host a dinner party. Claude will try to be thorough. Gemini will try to be fast. Thorough is how you buy two bunches of herbs.
3. You paste the pantry. The model subtracts.
Send a pantry list you actually have. Ugly, specific, yours.
“Mark NEED if I did not list it. Mark HAVE if I did. If an amount on the card is larger than what I said I have, mark NEED-MORE and keep the shortfall only. Do not round up to a full package unless I say so.”
Rounding up is a store’s job, not a model’s upsell.
If your pantry note is a ramble, list what you have in one column first. A fuzzy pantry produces a fuzzy cart.
4. Group by your store, not a platonic supermarket
Name the aisles you walk: produce, dairy, meat, dry, frozen, other.
“Sort NEED and NEED-MORE into these aisles only. If you are not sure, use other. Do not add a store section I did not name. Do not add a second shop.”
This is constraint-first planning, the same family as a weekend trip with one neighborhood. Extra aisles are extra neighborhoods. You will not walk them.
5. Spot-check two items, then stop
Open the photo. Check one produce line and one dry line. If either is missing from the card, the list is contaminated. Restart the extract with the extra item pasted as a counterexample.
Then stop. Do not ask “what else makes this sing.” That prompt is a bonus-lemon generator.
Save the extract-subtract-aisle loop in the Promptcrates tools for reusable skills. The next card changes. The law does not.
Reusable skill card
Trigger: You snapped a recipe and you are about to ask ChatGPT, Claude, or Gemini to make a shop.
Input: The photo, the printed-only law, your pantry list, and your aisle names.
Output: A three-column extract, NEED / HAVE / NEED-MORE flags, an aisle-sorted NEED list, UNKNOWN amounts left blank, no bonus items.
Stop: After one spot-check. No pairing. No second recipe. No “staples you should always have.”
Takeaways
- Printed ingredients only. Unreadable amounts are UNKNOWN.
- You name the pantry. The model subtracts. It does not round up.
- Aisles you walk, not a platonic supermarket.
- Spot-check the photo. Bonus lemons fail the check.
- Save the loop as a skill. The card is disposable.
Frequently Asked Questions
Can the model swap an ingredient I cannot find?
Only after you ask, and only one swap with the same role. Unsolicited swaps are a second recipe.
What if the photo hides the amounts?
Write UNKNOWN on amount. Keep the item. Do not invent cups from a similar dish in training data.
Should I use Gemini because it reads photos fast?
Fast is fine for the extract. Still spot-check two items against the card. Speed does not excuse a bonus lemon.
Can I add a second recipe in the same chat?
Merge only after both extracts exist as lists. Do not dump two photos into one “make a list” prompt. That is how parsley triples.
What if I shop at two stores?
You name the two aisle maps. The model does not invent a third shop “for better produce.”