| name | fred-meyer-product-grounding |
| description | Ground recipe ingredients and weekly meal plan shopping lists in Fred Meyer product candidates. Use after creating or updating recipes or weekly meal plans when the user wants shopping-list items annotated with store-specific product candidates, prices, availability, recommendations, or optional aisle/location. Use with fred-meyer-site-lookup for live site data and grocery-shopping-preferences for ranking. |
Fred Meyer Product Grounding
Role
This skill coordinates product grounding for recipes and weekly meal plans. Keep the normal recipe and shopping-list markdown as the source of truth; Fred Meyer product matches are annotations under existing items, not replacements.
For live Fred Meyer site behavior, use fred-meyer-site-lookup. For product ranking and recommendation policy, use grocery-shopping-preferences.
Default Workflow
- Read the recipe or weekly meal plan and identify ingredient or shopping-list queries.
- Use
fred-meyer-site-lookup to collect current search-result product data when the user asks for Fred Meyer grounding.
- Use
grocery-shopping-preferences to rank candidates and identify a recommendation when the data supports it.
- Annotate the original shopping-list items with candidates, prices, recommendation, and confidence.
- Keep ambiguous items as 2-3 candidates instead of forcing a choice.
Aisle/Location Workflow
Aisle lookup is expensive because Fred Meyer usually exposes location on product detail pages, not search results.
Only collect storeLocation when the user explicitly asks for aisle/location, a store-walkable list, or a final shopping list organized by aisle. In that case:
- First choose or narrow product candidates from search results.
- Open detail pages only for the final selected products or the smallest useful candidate set.
- Extract the visible
Located in ... line when present, such as Located in AISLE 22 or Located in DAIRY.
- Store it as
storeLocation.
- If organizing by store path, group numbered aisles first, broad departments next, and unknown locations last.
Extraction Rules
- Include product name, brand when visible, size/package when visible, price when visible, regular price or sale text when visible, unit price when visible, availability/status when visible, recommendation note when useful, product URL, optional
storeLocation, and confidence label.
- Use
high, medium, or needs review confidence.
- Preserve optional items and annotate them normally.
Scripts
ground-shopping-list.mjs --input weekly-meal-plans/YYYY-MM-DD-weekly-meal-plan.md --dry-run: parses checkbox shopping-list items and prints the search queries to use in Chrome.
ground-shopping-list.mjs --input weekly-meal-plans/YYYY-MM-DD-weekly-meal-plan.md --results results.json [--output file.md]: removes old Fred Meyer match blocks and applies product matches collected from Chrome.
The script does not perform live web lookup. It only parses markdown and applies product results gathered through Chrome.
Results JSON
Use an array or an object with an items array:
[
{
"label": "1 tub tzatziki sauce",
"query": "1 tub tzatziki sauce",
"products": [
{
"name": "Tzatziki Sauce",
"brand": "Example Brand",
"size": "12 oz",
"price": "$4.99",
"regularPrice": "$5.99",
"unitPrice": "$0.42/oz",
"availability": "In stock",
"storeLocation": "Located in AISLE 22",
"recommendation": "recommended",
"confidence": "medium",
"url": "https://www.fredmeyer.com/p/example"
}
]
}
]
Match groups to shopping-list items by label, item, ingredient, or query. Keep product matches as annotations; do not rewrite the original shopping item unless the user explicitly asks.
Safety Rules
Follow the safety rules in fred-meyer-site-lookup for all live browsing.
Typical Commands
node .codex/skills/fred-meyer-product-grounding/scripts/ground-shopping-list.mjs --input weekly-meal-plans/2026-06-29-weekly-meal-plan.md --dry-run
node .codex/skills/fred-meyer-product-grounding/scripts/ground-shopping-list.mjs --input weekly-meal-plans/2026-06-29-weekly-meal-plan.md --results /tmp/fred-meyer-results.json