Make a shopping list from recipes

When you cook for a group, you plan in dishes – but you shop in aisles. Lettuce then shows up three times in the spreadsheet, the ground meat is spread over two evenings, and in the store you end up doing sums in front of the fridge. That step can be handed off: an AI merges the ingredients, adds up the amounts and sorts them by supermarket aisle.

How much you need per person in the first place is covered in the quantities for groups. This page starts after that: the dishes are decided, now they have to become a shopping list.

Below is a complete example from a real club trip – 23 ingredient rows become 16 items in 6 aisles. The amounts are what that one group of about 50 bought: they show the method, not how much you need.

1Step 1

What you prepare: your dishes and their ingredients

Before the AI can merge anything, it needs your dishes and their ingredients. A spreadsheet in Excel or Google Sheets works best – one row per ingredient, with a rough amount. A typed list or a note on your phone works just as well; the AI copes with messy text too. Add how many people a dish is for, and the AI scales the amounts up.

For the example on this page – a club trip with three dinners – the dishes look like this. Highlighted are the ingredients that appear in several dishes and will be merged later:

Spaghetti bolognese

Evening 1

  • 2.5 kgGround meat
  • 3.5 kgSpaghetti
  • 4 lTomato sauce
  • 5Onions
  • 5Carrots
  • 3 × 150 gParmesan
  • 1 headLettuce
  • 2Cucumbers
  • 4Tomatoes

Burgers

Evening 2

  • 4.2 kgGround beef
  • 47Burger buns
  • 52Cheese slices
  • 2Red onions
  • 3 headsLettuce
  • 3Cucumbers
  • 15Tomatoes

Cheese spätzle

Evening 3

  • 5.5 kgFresh spätzle
  • 1250 gAlpine cheese
  • 630 gDiced bacon
  • 5Cream, cartons
  • 2 headsLettuce
  • 2Cucumbers
  • 4Tomatoes

Highlighted are the 11 rows that collapse into 4 items – some of them even under different names (“ground meat” and “ground beef”).

2Step 2

What you send the AI

Open an AI of your choice – for example ChatGPT (chatgpt.com), Gemini (gemini.google.com) or Claude (claude.ai). The free versions are enough. Start a new chat, paste the text below, add your list from step 1 underneath, and send both.

The text tells the AI not only what to add up, but also exactly how to write its answer – so you can take it over without any rework. You do not need to understand it or change anything; it is written for the AI, not for you. It also asks the AI to keep item names in the language of your recipes, so nothing gets translated along the way.

Prompt
You'll get a list of dishes and their ingredients for feeding a group (a table, a list, or plain text).

Task:
1. If serving or headcount numbers are given, scale the ingredient amounts to match.
2. Merge identical ingredients across all dishes and sum up the amounts.
3. Assign each ingredient to a typical supermarket aisle (e.g. "Fruit & vegetables", "Meat & deli counter", "Cheese & dairy", "Bakery", "Pasta & dry goods", "Canned goods, sauces & oil", "Spices", "Drinks", "Household").
4. In "note", write which dishes make up the amount (e.g. "Spaghetti 1, Burgers 6").
5. Keep item and aisle names in whichever language the source material is in — do not translate them.

Reply with nothing but JSON in exactly this shape – no Markdown, no explanation.

Important: reply on a single line. No line breaks, no indentation, no alignment spaces – the answer gets copied by hand and should stay short.

{"mode":"merge","categories":[{"name":"Fruit & vegetables","emoji":"🥬","items":[{"name":"Lettuce","quantity":"9 heads","note":"Spaghetti 1, Burgers 6, Cheese 2"},{"name":"Tomatoes","quantity":"33"}]},{"name":"Meat & deli counter","emoji":"🍖","items":[{"name":"Ground beef","quantity":"4.2 kg","note":"Burgers"}]}]}

Fields:
- "mode": always give "merge". Whether the list gets added to, summed with existing amounts, or fully replaced is chosen by the person doing the import inside the app – this value is overwritten there.
- "name" (required) for each category and each item.
- "emoji" (optional) a single emoji for the category.
- "quantity" (optional) free text, e.g. "4.2 kg" or "9 heads".
- "note" (optional) extra detail.

Here is the list:
3Step 3

The result: one list, sorted by aisle

Every amount appears exactly once, and the note says what it is made of. Nobody has to do sums at the counter any more – and if a dish is dropped, you know at once what changes.

Glance over the merges before you import: an AI joins what looks alike. In this example ground meat and ground beef became one line – right for this trip, where the same mince went into both dishes – while onions and red onions rightly stayed apart.

Fruit & vegetables

6
  • 6 heads Lettuce3 rows

    Spaghetti 1, Burgers 3, Spätzle 2

  • 7 Cucumbers3 rows

    Spaghetti 2, Burgers 3, Spätzle 2

  • 23 Tomatoes3 rows

    Spaghetti 4, Burgers 15, Spätzle 4

  • 5 Onions

    Spaghetti

  • 2 Red onions

    Burgers

  • 5 Carrots

    Spaghetti

Meat & deli counter

2
  • 6.7 kg Ground meat2 rows

    Spaghetti 2.5 kg, Burgers 4.2 kg

  • 630 g Diced bacon

    Spätzle

Cheese & dairy

4
  • 52 slices Burger cheese

    Burgers

  • 1250 g Alpine cheese

    Spätzle

  • 3 × 150 g Parmesan

    Spaghetti

  • 5 Cream, cartons

    Spätzle

Bakery

1
  • 47 Burger buns

    Burgers

Pasta & dry goods

2
  • 3.5 kg Spaghetti

    Spaghetti

  • 5.5 kg Fresh spätzle

    Spätzle

Canned goods, sauces & oil

1
  • 4 l Tomato sauce

    Spaghetti

4Step 4

Paste the answer and tick it off together

The AI answers with a block full of curly brackets and quotation marks. It looks odd, but it is just a tidy way of writing the same list – you do not need to read or understand it. Select, copy, paste, done.

  1. 1On the homepage, create a shopping list and choose a PIN.
  2. 2In the list, tap “Edit” at the top right and enter the PIN.
  3. 3Tap “Import items”, paste the AI's answer into the large field, and choose between “Add to list” and “Replace”.
  4. 4Import – and send the list's link to the group.

If something goes wrong: if the page says something is wrong with the answer, copy the message back into the chat and ask the AI to fix it. The message says exactly where something is missing – usually the second try does it.

Curious what such an answer looks like? Here it is – you do not need to read it.

This is exactly what the AI would write for the example above. Developers call this format JSON; for you it is simply the text you paste.

{
  "mode": "replace",
  "title": "Club trip",
  "categories": [
    {
      "name": "Fruit & vegetables",
      "emoji": "🥬",
      "items": [
        {
          "name": "Lettuce",
          "quantity": "6 heads",
          "note": "Spaghetti 1, Burgers 3, Spätzle 2"
        },
        {
          "name": "Cucumbers",
          "quantity": "7",
          "note": "Spaghetti 2, Burgers 3, Spätzle 2"
        },
        {
          "name": "Tomatoes",
          "quantity": "23",
          "note": "Spaghetti 4, Burgers 15, Spätzle 4"
        },
        {
          "name": "Onions",
          "quantity": "5",
          "note": "Spaghetti"
        },
        {
          "name": "Red onions",
          "quantity": "2",
          "note": "Burgers"
        },
        {
          "name": "Carrots",
          "quantity": "5",
          "note": "Spaghetti"
        }
      ]
    },
    {
      "name": "Meat & deli counter",
      "emoji": "🍖",
      "items": [
        {
          "name": "Ground meat",
          "quantity": "6.7 kg",
          "note": "Spaghetti 2.5 kg, Burgers 4.2 kg"
        },
        {
          "name": "Diced bacon",
          "quantity": "630 g",
          "note": "Spätzle"
        }
      ]
    },
    {
      "name": "Cheese & dairy",
      "emoji": "🧀",
      "items": [
        {
          "name": "Burger cheese",
          "quantity": "52 slices",
          "note": "Burgers"
        },
        {
          "name": "Alpine cheese",
          "quantity": "1250 g",
          "note": "Spätzle"
        },
        {
          "name": "Parmesan",
          "quantity": "3 × 150 g",
          "note": "Spaghetti"
        },
        {
          "name": "Cream, cartons",
          "quantity": "5",
          "note": "Spätzle"
        }
      ]
    },
    {
      "name": "Bakery",
      "emoji": "🥖",
      "items": [
        {
          "name": "Burger buns",
          "quantity": "47",
          "note": "Burgers"
        }
      ]
    },
    {
      "name": "Pasta & dry goods",
      "emoji": "🍝",
      "items": [
        {
          "name": "Spaghetti",
          "quantity": "3.5 kg",
          "note": "Spaghetti"
        },
        {
          "name": "Fresh spätzle",
          "quantity": "5.5 kg",
          "note": "Spätzle"
        }
      ]
    },
    {
      "name": "Canned goods, sauces & oil",
      "emoji": "🥫",
      "items": [
        {
          "name": "Tomato sauce",
          "quantity": "4 l",
          "note": "Spaghetti"
        }
      ]
    }
  ]
}
Free, no sign-up.

Can the AI not fill the list by itself?

Not in a normal chat. ChatGPT and Claude write text there, but they do not reach out to other websites on their own, so they cannot put anything into your list. Hence the detour through copy and paste – it takes a few seconds and always works.

The two can still be connected: ChatGPT and Claude can control other programs through a specially set-up extension. But that is tinkering you have to set up once – and it gives the AI access to the list that it could also use to overwrite it. For one shopping trip, it is not worth it.

If you want to fill lists automatically on a regular basis – from your own script or an automation service – the import window has a time-limited access key for that. If that means nothing to you, you do not need it: pasting gets you the same result.

Three things that make the difference

  • Aisles, not categories

    Name the categories after the aisles of your store and sort them in the order you walk through it. Then you work through the list once, top to bottom.

  • A note on where it came from

    Let the AI write into each note which dishes an amount is made of. If a dish is dropped, you see at once how much less you need.

  • A second recipe later

    If another recipe comes along, choose “Add up amounts” when importing: known items keep their amount and get the new one added. “Add to list” would set them to the new amount instead.

Frequently asked questions

Do I need to know the exact amounts?
No. Rough amounts are enough – “serves 4” or “a handful” is all the AI needs to scale up. What matters more than precision is that every ingredient is there at all.
Does it work with a photo instead of a spreadsheet?
With most chat AIs, yes – a photo of a cookbook page or of handwritten notes can be uploaded directly. If yours does not take images, type the ingredients out quickly instead; the prompt stays the same.
How long does it take?
About five minutes for the prompt and the answer, plus the time it takes to collect the dishes beforehand. The import itself takes seconds.
Can I add a second recipe later?
Yes. The import offers three ways: “Add up amounts” adds known items together (3 heads of lettuce plus 2 heads makes 5), “Add to list” sets them to the new amount instead, and “Replace” throws the old list away. If two amounts cannot be added because they are named differently, the app asks first.
Is it worth it for a single dish?
Yes, even though the real gain – merging ingredients that several dishes share – naturally disappears with one recipe. Sorting by aisle still helps.
Does the AI handle drinks and non-food items too?
Yes. The prompt names aisles like “Drinks” and “Household” as examples – whatever is on your list gets sorted, whether you eat it or not.