Nicholas Watson

January 30, 2026

Grocery Shopping With My Pal Claude

I think this is an interesting story to share. It’s going to be long winded, but honestly I was blown away by the results.

TLDR: Claude shopped for my groceries!

February is just around the corner, and for me, that means it’s time for Keto Season! It’s the time of year when I realized I went overboard during the holidays, and now it’s time to shed some pounds. One of the biggest challenges with dieting is figuring out the meal plan. If your family is like mine, meal planning can be a real headache. We all have different preferences for what to eat, when to eat it, and the whole process of putting together a grocery list can be a bit of a chore.

Determined to make this process easier, I opened my Claude MacOS app and popped open the new Cowork feature. Cowork is like Claude Code for non-coding tasks, although it can code if asked. You can give it permission to a directory on your computer, and it will be able to read, create, edit, and delete files in that location. 

Starting the project, I gave it access to a directory to place files on my Mac and ran the first prompt:

Search the internet for popular keto diet recipes. For each recipe, extract the ingredients, the instructions to make the recipe, the web site, and calculate the dietary macros for the recipes. Store each recipe in markdown within the recipes directory. Recipes for breakfast, lunch, dinner and snacks should be included. Additionally, within the markdown of the recipe, document the web site the recipe came from for reference. Find and document at least 100 recipes.

Claude immediately got to work, found recipes, downloaded them, sorted them in to directories for breakfast, lunch, dinner and snacks. The whole process too about 10 minutes to complete.

Screenshot 2026-01-30 at 2.42.31 PM.png


I inspected some of the recipes to see if it collected the correct information, and to my surprise it did! I was curious how it calculated the macros for each recipe, so I asked Claude the following question:

Can you tell me how you calculated the macros for the recipes?

It responded with:

Screenshot 2026-01-30 at 3.20.12 PM.png

It followed up by asking me the following question:

Screenshot 2026-01-30 at 3.21.06 PM.png

Awesome! By all means let’s get some updated values! I proceed to tell Claude to use Option 1.

Locally it creates a directory called scripts to store python scripts that its going to use to parse the markdown files, pull an ingredient list, fetch the items from the USDA FoodData Central API and makes a plan:

Screenshot 2026-01-30 at 3.22.21 PM.png

Below are a list of the scripts Claude created and their purpose.

Screenshot 2026-01-30 at 2.47.38 PM.png


After creating scripts, Claude tries fetching from the USDA FoodData Central API, but fails because it didn’t have an API key. Instead it populated the local database with values from its memory and recalculated the macro files for all recipes.

I’m a bit bummed at this point, so I jump in to the code and take a look. To my surprise the code to fetch data from the USDA FoodData Central API  was there, it was just missing the api key:

# Configuration
USDA_API_KEY = os.environ.get("USDA_API_KEY", "")
USDA_BASE_URL = "https://api.nal.usda.gov/fdc/v1"
REQUEST_DELAY = 0.5  # Seconds between requests (respect rate limits)
DATABASE_FILE = Path(__file__).parent / "usda_nutrition_data.json"

At this point, I have to try this out, so I pop over the USDA FoodData Central and check the requirements for creating an API key. Long story short, you provide them an email address and they email you an API key. 

Now I’m aware that you don’t want to share API keys with LLMs. If the USDA doesn’t go to great lengths to protect their keys (they sent me a key via email with nothing other than an email address), then I’m okay with putting it in the code.

Additionally you can tell Claude not to use your chats or code for training data in the settings, although I wouldn’t rely on this.

After double checking my privacy settings, its go time:

I have an api key for the USDA FoodData Central API. Can you run the script that obtains a nutritional value of all the ingredients in the local database then updates the recipes macro calculation?

After running the script, I noticed it created a file called missing_ingredients.txt which contained ingredients that that didn’t really have a match in the USDA database. For example shredded cheddar cheese did not have entry in USDA database, so I asked Claude the following:

Review items in missing_ingredients.txt, and determine if it maps to a value currently in the usda_nutrition_data.json file. If the missing ingredient is an alias for an ingredient already in usda_nutrition_data.json, keep track of that in the usda_nutrition_data.json as a named  alias for the ingredient.

It quickly went to work updating the local json database which contained the data and the macro calculation scripts to ensure recipes were updated correctly, then updated all the recipes.

Finally! I have a list of recipes. On to the next step. Lets make a meal plan:

Work with me to create a meal plan for a 46 year old male who weighs 202 pounds using the keto diet to lose weight. The meal plan should ensure that essential nutrients are included in the diet for the day. Breakfast can be simple, using ingredients such as eggs, cottage cheese, greek yogurt and berries. Breakfast and lunch can be repeated over days. Dinner should contain 4 servings and should not repeat. After selecting a meal plan, ask me if I would like to replace any of the meals, and if I don't want that meal selected again.

Claude then proceeds to ask me the following questions:

1. How many days would you like the meal plan to cover?
2. What is your activity level?
3. How aggressively do you want the calorie deficit for weight loss?

All questions were multiple choice and allowed me to select the answer in the user interface. Once answered Claude is off to work:


Screenshot 2026-01-30 at 3.24.10 PM.png


The image below contains a portion of the generated meal plan:

Screenshot 2026-01-30 at 2.54.38 PM.png


After presenting the meal plan, Claude asked: 

Would you like to replace any of these meals? If so, let me know which one(s) and I'll suggest alternatives. Also tell me if there are any meals you'd like me to exclude from future suggestions.

Personally, I’d eat all of these, but unfortunately this may be a little exotic for my family.

At this point I’m stoked. I’ve got a meal plan. Now I’m worried about the price. What is  this going to cost? I enabled the Chrome extension in Claude and turned it loose:

Can you estimate the cost of groceries for week 1 using walmart.com?

The results were awesome.

Screenshot 2026-01-30 at 2.57.20 PM.png


We don’t generally spend $220 a week on groceries, but we already have some of the items on the grocery list in the pantry. Additionally we have NY Strip Steaks in the freezer. I think we’re in the ballpark.

If there is one thing I like less than meal planning, it’s going to the grocery store. I’m not a fan of the lines, the people, or watching the bill increase as I stand at the register. I’m determined not to do it. I will not do it. Claude will shop for me.

I already have NY strip Steaks. Can you add all the items on the grocery list to the shopping cart on Walmart.com

I watch as Claude opens Chrome, navigates Walmart.com, cross shops items, determining which one is the better buy (it “speaking out loud in the UI”), and adds everything to the shopping cart. Finally, the cart is full.

Screenshot 2026-01-30 at 2.59.56 PM.png


No way! No way! Unbelievable! I take control of the browser tab from Claude, remove items I already have at home, type in my username and password, select a delivery time, and check out.

One final thing. I need to put the recipes somewhere we can access them during the week. I enable the Apple Notes extension in Claude and give it the following prompt:

Create a note in Apple Notes that contains the meal plan, the grocery list, and all recipes for the week.

A minute later, I’m set for the week:

Screenshot 2026-01-30 at 3.15.09 PM.png