Woolworths shopping list optimiser and meal planner. Searches woolworths.com.au for best prices, plans meals by clustering recipes around shared ingredients to minimise cost and waste, and can add items to your cart. Learns your recipes over time. Use when asked to "optimise my shopping", "woolies list", "woolworths shop", "grocery list", "plan meals", "meal plan", "what should I cook this week", or when the /woolies command is run.
3d:T201a,
python3 scripts/search.py "<search term>" [page_size]
name, brand, size, price, cup_price, cup_measure,
is_on_special, is_half_price, savings, special_label, in_stockpython3 scripts/recipes.py <action> [args]
| Action | Usage | Description |
|---|---|---|
list | recipes.py list | List all saved recipes |
show | recipes.py show "Beef Tacos" | Show full recipe details |
save | recipes.py save '<json>' | Save or update a recipe |
delete | recipes.py delete "Beef Tacos" | Delete a recipe |
search | recipes.py search onion | Find recipes using an ingredient |
overlap | recipes.py overlap "Beef Tacos" "Nachos" | Show shared ingredients |
When saving a recipe, use this format:
{
"name": "Beef Tacos",
"serves": 4,
"tags": ["mexican", "quick", "weeknight"],
"ingredients": [
{"item": "beef mince", "qty": "500g", "search_term": "beef mince"},
{"item": "onion", "qty": "1", "search_term": "brown onion"},
{"item": "taco shells", "qty": "1 pack", "search_term": "taco shells"},
{"item": "cheddar cheese", "qty": "200g", "search_term": "cheddar cheese"},
{"item": "sour cream", "qty": "1 tub", "search_term": "sour cream"},
{"item": "iceberg lettuce", "qty": "1", "search_term": "iceberg lettuce"},
{"item": "tomato", "qty": "2", "search_term": "tomato"}
]
}
Key points:
item is the normalised ingredient name (lowercase, singular where sensible)search_term is what to search on Woolworths (can differ from item name)tags help with clustering and suggestionspython3 scripts/cart.py '[{"stockcode": 123, "quantity": 1}]'
python3 scripts/shopping_list.py '<json>'
/tmp/woolies-shopping-list.html (overwritten each time)stockcode, the page
includes a collapsible panel with the cart JS snippet, a "Select All" button,
and a "Copy to Clipboard" button. No need to run cart.py separately.{
"title": "Shopping List",
"recipes": ["Beef Tacos", "Fried Rice"],
"items": [
{
"item": "beef mince",
"product": "Woolworths Beef Mince 500g",
"stockcode": 661766,
"price": 7.00,
"quantity": 2,
"is_on_special": true,
"savings": 3.00,
"special_label": "2 for $10",
"used_in": ["Beef Tacos", "Fried Rice"]
}
],
"total": 45.50,
"total_savings": 5.00
}
title: optional, defaults to "Shopping List"recipes: optional, shown as pills at the top of the pageitems[].stockcode: optional, links product name to its Woolworths pageitems[].used_in: optional, shows which recipes need each itemtotal / total_savings: optional, shown in a sticky footerThe skill supports three modes depending on what the user asks for.
Trigger: User provides a plain list like "milk, eggs, bread, chicken"
shopping_list.py with the final
picks (include stockcode from search results so products link to
Woolworths). Opens in browser automatically.Trigger: User provides recipe names like "beef tacos, spaghetti bolognese"
recipes.py list then recipes.py show
for any matching saved recipesrecipes.py save so it's available next time. Tell the user
you're saving it.recipes.py overlap to highlight what's shared.Trigger: User asks to "plan meals", "what should I cook this week", or gives a number like "plan 5 dinners"
recipes.py list to see what's savedrecipes.py overlap on the final selectionWhen suggesting recipe combinations for meal planning, optimise for:
When comparing combinations, score them by:
shared_count from the overlap tool (higher = better)total_unique_ingredients from the overlap tool (lower = better)## Onion (need: 3 across 2 recipes)
| # | Product | Size | Price | Unit Price | Special? |
|---|---------|------|-------|------------|----------|
| 1 | ... | ... | $X.XX | $X.XX/kg | ... |
| 2 | ... | ... | $X.XX | $X.XX/kg | |
-> PICK: [Product] - [reason]
## Shopping List Summary
| Item | Recommended | Price | Special? |
|------|-------------|-------|----------|
| ... | ... | $X.XX | ... |
**Estimated Total: $XX.XX**
**Savings from specials: $X.XX**
### Ingredient Overlap
- onion: used in Beef Tacos, Spaghetti Bolognese (buy 3)
- tinned tomatoes: used in Bolognese, Chilli (buy 2 cans)
in_stock and is_available before recommendingcup_price / cup_measure directly for unit price comparison