diff --git a/.gitignore b/.gitignore index f92b3ea..54f2d5c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,9 @@ -/walmart_CSVs +/WalmartPipeline/walmart_CSVs +/WalmartPipeline/__pycache__ /.vscode -/walmart_API_Debug_Tools/walmart_API_Taxonomy/taxonomy_categories.csv -/walmart_API_Debug_Tools/walmart_API_Taxonomy/taxonomy.json +/WalmartPipeline/TaxonomyBrowsing/taxonomy.json RecipesDataset.csv +openapi_key.py +.env +/__pycache__ +classified_ingredients.csv \ No newline at end of file diff --git a/WalmartPipeline/Categories/Food_Grocery_subtree.csv b/WalmartPipeline/Categories/Food_Grocery_subtree.csv new file mode 100644 index 0000000..59dfa8f --- /dev/null +++ b/WalmartPipeline/Categories/Food_Grocery_subtree.csv @@ -0,0 +1,22 @@ +id,name,path +"3734780_7455738","Food & Grocery","Shop by Brand/Food & Grocery" +"3734780_7455738_4395713","Augason Farms","Shop by Brand/Food & Grocery/Augason Farms" +"3734780_7455738_7679722","Bai","Shop by Brand/Food & Grocery/Bai" +"3734780_7455738_7092438","Bob's Red Mill","Shop by Brand/Food & Grocery/Bob's Red Mill" +"3734780_7455738_6336012","Butterball","Shop by Brand/Food & Grocery/Butterball" +"3734780_7455738_1413005","Campbell's","Shop by Brand/Food & Grocery/Campbell's" +"3734780_7455738_6065794","Essentia","Shop by Brand/Food & Grocery/Essentia" +"3734780_7455738_7166534","Frito-Lay","Shop by Brand/Food & Grocery/Frito-Lay" +"3734780_7455738_5413535","Great Value","Shop by Brand/Food & Grocery/Great Value" +"3734780_7455738_2948423","Knorr","Shop by Brand/Food & Grocery/Knorr" +"3734780_7455738_1397051","Kraft Dinners","Shop by Brand/Food & Grocery/Kraft Dinners" +"3734780_7455738_3611340","Lipton","Shop by Brand/Food & Grocery/Lipton" +"3734780_7455738_2728198","Marketside","Shop by Brand/Food & Grocery/Marketside" +"3734780_7455738_9309662","McCormick","Shop by Brand/Food & Grocery/McCormick" +"3734780_7455738_5050871","Nature's Path","Shop by Brand/Food & Grocery/Nature's Path" +"3734780_7455738_3862805","Nestle","Shop by Brand/Food & Grocery/Nestle" +"3734780_7455738_3783723","Oreo","Shop by Brand/Food & Grocery/Oreo" +"3734780_7455738_5312905","Pepperidge Farm","Shop by Brand/Food & Grocery/Pepperidge Farm" +"3734780_7455738_9166487","Planters","Shop by Brand/Food & Grocery/Planters" +"3734780_7455738_2512582","Starbucks","Shop by Brand/Food & Grocery/Starbucks" +"3734780_7455738_9030640","Thai Kitchen","Shop by Brand/Food & Grocery/Thai Kitchen" diff --git a/WalmartPipeline/Categories/Food_subtree.csv b/WalmartPipeline/Categories/Food_subtree.csv new file mode 100644 index 0000000..d5e0036 --- /dev/null +++ b/WalmartPipeline/Categories/Food_subtree.csv @@ -0,0 +1,1246 @@ +id,name,path +"976759","Food","Food" +"976759_2606229","@ Manual Shelves - Food","Food/@ Manual Shelves - Food" +"976759_2606229_8375512","$1 Food staples","Food/@ Manual Shelves - Food/$1 Food staples" +"976759_2606229_4353203","Almond Flour","Food/@ Manual Shelves - Food/Almond Flour" +"976759_2606229_2387675","Food Total Deals","Food/@ Manual Shelves - Food/Food Total Deals" +"976759_2606229_2958467","General Mills Box Tops Cereal","Food/@ Manual Shelves - Food/General Mills Box Tops Cereal" +"976759_2606229_3643082","General Mills Box Tops Dairy","Food/@ Manual Shelves - Food/General Mills Box Tops Dairy" +"976759_2606229_6093697","General Mills Box Tops Frozen","Food/@ Manual Shelves - Food/General Mills Box Tops Frozen" +"976759_2606229_8503205","General Mills Box Tops Meals","Food/@ Manual Shelves - Food/General Mills Box Tops Meals" +"976759_2606229_2412525","General Mills Box Tops Natural & Organic","Food/@ Manual Shelves - Food/General Mills Box Tops Natural & Organic" +"976759_2606229_3345098","General Mills Box Tops School Supplies","Food/@ Manual Shelves - Food/General Mills Box Tops School Supplies" +"976759_2606229_3638396","General Mills Box Tops Snacks","Food/@ Manual Shelves - Food/General Mills Box Tops Snacks" +"976759_2606229_7979437","General Mills Box Tops Water","Food/@ Manual Shelves - Food/General Mills Box Tops Water" +"976759_2606229_2161613","General Mills Fight Hunger","Food/@ Manual Shelves - Food/General Mills Fight Hunger" +"976759_2606229_2043501","General Mills Snacks","Food/@ Manual Shelves - Food/General Mills Snacks" +"976759_2606229_6420550","General Mills Treat Bars","Food/@ Manual Shelves - Food/General Mills Treat Bars" +"976759_2606229_5358210","GM090419","Food/@ Manual Shelves - Food/GM090419" +"976759_2606229_9723046","Hershey Baking","Food/@ Manual Shelves - Food/Hershey Baking" +"976759_2606229_1992604","Hershey Holiday","Food/@ Manual Shelves - Food/Hershey Holiday" +"976759_2606229_7458550","KC Masterpiece","Food/@ Manual Shelves - Food/KC Masterpiece" +"976759_2606229_4002011","Kellogg's Cereal","Food/@ Manual Shelves - Food/Kellogg's Cereal" +"976759_2606229_6912549","Kellogg's Nutri-Grain","Food/@ Manual Shelves - Food/Kellogg's Nutri-Grain" +"976759_2606229_6496189","Kellogg's PWS Brand Amplifier","Food/@ Manual Shelves - Food/Kellogg's PWS Brand Amplifier" +"976759_2606229_7285783","Kellogg's Rice Krispies Treats","Food/@ Manual Shelves - Food/Kellogg's Rice Krispies Treats" +"976759_2606229_6229293","Kit Kat Duo","Food/@ Manual Shelves - Food/Kit Kat Duo" +"976759_2606229_6952411","Local Finds","Food/@ Manual Shelves - Food/Local Finds" +"976759_2606229_2061744","Mosaic Beverages","Food/@ Manual Shelves - Food/Mosaic Beverages" +"976759_2606229_4445124","Mosaic Coffee Tea","Food/@ Manual Shelves - Food/Mosaic Coffee Tea" +"976759_2606229_4068629","Mosaic Food","Food/@ Manual Shelves - Food/Mosaic Food" +"976759_2606229_3339994","Mosaic Pantry","Food/@ Manual Shelves - Food/Mosaic Pantry" +"976759_2606229_6309744","Mosaic Snacks","Food/@ Manual Shelves - Food/Mosaic Snacks" +"976759_2606229_1841035","National Pancake Day","Food/@ Manual Shelves - Food/National Pancake Day" +"976759_2606229_2453624","NYNY Beverages","Food/@ Manual Shelves - Food/NYNY Beverages" +"976759_2606229_9334013","Pop-Tarts","Food/@ Manual Shelves - Food/Pop-Tarts" +"976759_2606229_1821433","Return to School","Food/@ Manual Shelves - Food/Return to School" +"976759_2606229_8588125","Splenda Stevia","Food/@ Manual Shelves - Food/Splenda Stevia" +"976759_2975985","Alcohol","Food/Alcohol" +"976759_2975985_3856625","About Alcohol","Food/Alcohol/About Alcohol" +"976759_2975985_2142284","Alcohol delivery & pickup in Kissimmee, Florida","Food/Alcohol/Alcohol delivery & pickup in Kissimmee, Florida" +"976759_2975985_7975157","Alcohol delivery & pickup in Naples, Florida","Food/Alcohol/Alcohol delivery & pickup in Naples, Florida" +"976759_2975985_1608388","Alcohol delivery & pickup in Panama City Beach, Florida","Food/Alcohol/Alcohol delivery & pickup in Panama City Beach, Florida" +"976759_2975985_2414163","Alcohol delivery & pickup in Phoenix, Arizona","Food/Alcohol/Alcohol delivery & pickup in Phoenix, Arizona" +"976759_2975985_8666737","Alcohol delivery & pickup in Tucson, Arizona","Food/Alcohol/Alcohol delivery & pickup in Tucson, Arizona" +"976759_2975985_7165884","Alcohol Workpage","Food/Alcohol/Alcohol Workpage" +"976759_2975985_5110387","Beer","Food/Alcohol/Beer" +"976759_2975985_5979903","Calorie & Carb Conscious Alcohol","Food/Alcohol/Calorie & Carb Conscious Alcohol" +"976759_2975985_8982253","Cocktails & Seltzers","Food/Alcohol/Cocktails & Seltzers" +"976759_2975985_8178984","Hard Seltzer","Food/Alcohol/Hard Seltzer" +"976759_2975985_3773575","Kentucky Derby Drinks","Food/Alcohol/Kentucky Derby Drinks" +"976759_2975985_5702937","Light & Organic Alcohol","Food/Alcohol/Light & Organic Alcohol" +"976759_2975985_7222931","New & Seasonal Alcohol","Food/Alcohol/New & Seasonal Alcohol" +"976759_2975985_4158159","Non-Alcoholic Beverages","Food/Alcohol/Non-Alcoholic Beverages" +"976759_2975985_9695490","Pre-Mixed Cocktails","Food/Alcohol/Pre-Mixed Cocktails" +"976759_2975985_8910898","Shop All Alcohol","Food/Alcohol/Shop All Alcohol" +"976759_2975985_8113561","Shop by Brand","Food/Alcohol/Shop by Brand" +"976759_2975985_4538947","Shop by Category","Food/Alcohol/Shop by Category" +"976759_2975985_9161098","Shop by Occasion","Food/Alcohol/Shop by Occasion" +"976759_2975985_1538854","Shop by Theme","Food/Alcohol/Shop by Theme" +"976759_2975985_1530122","Single Serve Adult Beverages","Food/Alcohol/Single Serve Adult Beverages" +"976759_2975985_3757145","Single Serve Beer, Seltzers, and Malt Beverages","Food/Alcohol/Single Serve Beer, Seltzers, and Malt Beverages" +"976759_2975985_8439204","Spirits","Food/Alcohol/Spirits" +"976759_2975985_8604954","Wine","Food/Alcohol/Wine" +"976759_9638107","All Food","Food/All Food" +"976759_976779","Bakery & Bread","Food/Bakery & Bread" +"976759_976779_4684016","Antonina’s Gluten-Free Bakery","Food/Bakery & Bread/Antonina’s Gluten-Free Bakery" +"976759_976779_3396508","Artisan Breads","Food/Bakery & Bread/Artisan Breads" +"976759_976779_1951361","Bakery Cookies","Food/Bakery & Bread/Bakery Cookies" +"976759_976779_4525853","Bakery Sweets","Food/Bakery & Bread/Bakery Sweets" +"976759_976779_8399244","Bread","Food/Bakery & Bread/Bread" +"976759_976779_3124271","Bread Shop","Food/Bakery & Bread/Bread Shop" +"976759_976779_1044115","Breakfast Breads","Food/Bakery & Bread/Breakfast Breads" +"976759_976779_4804035","Brownie Bites","Food/Bakery & Bread/Brownie Bites" +"976759_976779_3465538","Brownies","Food/Bakery & Bread/Brownies" +"976759_976779_5829009","Buns","Food/Bakery & Bread/Buns" +"976759_976779_9997386","Cakes","Food/Bakery & Bread/Cakes" +"976759_976779_4725038","Carlo's Bakery","Food/Bakery & Bread/Carlo's Bakery" +"976759_976779_6127426","Conchas","Food/Bakery & Bread/Conchas" +"976759_976779_2408821","Cupcakes","Food/Bakery & Bread/Cupcakes" +"976759_976779_4520008","Curated browse shelves","Food/Bakery & Bread/Curated browse shelves" +"976759_976779_4184097","Custom Bakery Cakes","Food/Bakery & Bread/Custom Bakery Cakes" +"976759_976779_7654499","David's Cookies","Food/Bakery & Bread/David's Cookies" +"976759_976779_1688722","Ethel's Baking Co.","Food/Bakery & Bread/Ethel's Baking Co." +"976759_976779_5265124","Fall Desserts","Food/Bakery & Bread/Fall Desserts" +"976759_976779_9431063","Freshness Guaranteed Bakery","Food/Bakery & Bread/Freshness Guaranteed Bakery" +"976759_976779_8001722","From Our Bakery","Food/Bakery & Bread/From Our Bakery" +"976759_976779_2496410","Gingerbread houses","Food/Bakery & Bread/Gingerbread houses" +"976759_976779_7881290","Hispanic Baking & Bakery","Food/Bakery & Bread/Hispanic Baking & Bakery" +"976759_976779_7869763","Marketside Bakery","Food/Bakery & Bread/Marketside Bakery" +"976759_976779_8869529","Order Ahead Cakes","Food/Bakery & Bread/Order Ahead Cakes" +"976759_976779_1001456","Pastries","Food/Bakery & Bread/Pastries" +"976759_976779_2464018","Pies","Food/Bakery & Bread/Pies" +"976759_976779_1001464","Pizza Crust","Food/Bakery & Bread/Pizza Crust" +"976759_976779_1037480","Rolls","Food/Bakery & Bread/Rolls" +"976759_976779_6865499","Rubicon Bakers","Food/Bakery & Bread/Rubicon Bakers" +"976759_976779_5635644","Shop all Bakery","Food/Bakery & Bread/Shop all Bakery" +"976759_976779_7756634","Shop all Bakery & Bread","Food/Bakery & Bread/Shop all Bakery & Bread" +"976759_976779_3649607","Sweet Craft Dolceria","Food/Bakery & Bread/Sweet Craft Dolceria" +"976759_976779_9318357","Sweet Treats","Food/Bakery & Bread/Sweet Treats" +"976759_976779_2993335","Tortillas","Food/Bakery & Bread/Tortillas" +"976759_976780","Baking","Food/Baking" +"976759_976780_2020825","Bake some fall goodies kits","Food/Baking/Bake some fall goodies kits" +"976759_976780_6748087","Baking fall flavors","Food/Baking/Baking fall flavors" +"976759_976780_9959366","Baking Ingredients","Food/Baking/Baking Ingredients" +"976759_976780_3850379","Baking Pumpkin Flavors","Food/Baking/Baking Pumpkin Flavors" +"976759_976780_5920135","Baking Supplies","Food/Baking/Baking Supplies" +"976759_976780_2678327","Biscuit mixes","Food/Baking/Biscuit mixes" +"976759_976780_4930324","Butter, Oils, & Shortening","Food/Baking/Butter, Oils, & Shortening" +"976759_976780_2911883","Cinnamon","Food/Baking/Cinnamon" +"976759_976780_4389538","Cloves","Food/Baking/Cloves" +"976759_976780_2432872","Cornbread mixes","Food/Baking/Cornbread mixes" +"976759_976780_4421440","Easter baking cakes & cupcakes","Food/Baking/Easter baking cakes & cupcakes" +"976759_976780_5195984","Easter baking candy","Food/Baking/Easter baking candy" +"976759_976780_2230875","Easter baking cookies","Food/Baking/Easter baking cookies" +"976759_976780_6314071","Easy to Make","Food/Baking/Easy to Make" +"976759_976780_5837233","Everyday baking essentials","Food/Baking/Everyday baking essentials" +"976759_976780_9442036","Great Value Deals","Food/Baking/Great Value Deals" +"976759_976780_4741545","Halloween baking HQ","Food/Baking/Halloween baking HQ" +"976759_976780_6426006","Healthy baking","Food/Baking/Healthy baking" +"976759_976780_4621790","Holiday sprinkles","Food/Baking/Holiday sprinkles" +"976759_976780_6127550","Homemade Cinnamon Rolls","Food/Baking/Homemade Cinnamon Rolls" +"976759_976780_5078092","Jell-O","Food/Baking/Jell-O" +"976759_976780_5330333","Low ingredient baking","Food/Baking/Low ingredient baking" +"976759_976780_9801587","M&M's Holiday Bake Center","Food/Baking/M&M's Holiday Bake Center" +"976759_976780_2148843","More baking","Food/Baking/More baking" +"976759_976780_7642292","Nestle bake magic for every basket","Food/Baking/Nestle bake magic for every basket" +"976759_976780_9361981","New & trending baking","Food/Baking/New & trending baking" +"976759_976780_5972699","Oreo. Imagine, bake & decorate","Food/Baking/Oreo. Imagine, bake & decorate" +"976759_976780_9071370","Pumpkin Spice","Food/Baking/Pumpkin Spice" +"976759_976780_3695230","Seasonal Baking","Food/Baking/Seasonal Baking" +"976759_976780_4879413","Shop Top Brands","Food/Baking/Shop Top Brands" +"976759_976780_2385246","Sprinkles","Food/Baking/Sprinkles" +"976759_976780_8946476","St. Patrick's Day Baking","Food/Baking/St. Patrick's Day Baking" +"976759_976780_4770372","Stranger Things dessert mixes","Food/Baking/Stranger Things dessert mixes" +"976759_976780_1044129","Sugar & Sweeteners","Food/Baking/Sugar & Sweeteners" +"976759_976780_1343575","Vanilla Extract","Food/Baking/Vanilla Extract" +"976759_976782","Beverages","Food/Beverages" +"976759_976782_4559367","@ manual shelves beverages","Food/Beverages/@ manual shelves beverages" +"976759_976782_8840632","@Browse Shelf SEO Curated","Food/Beverages/@Browse Shelf SEO Curated" +"976759_976782_2661356","Alani Nu","Food/Beverages/Alani Nu" +"976759_976782_3457307","Caliwater Hydration","Food/Beverages/Caliwater Hydration" +"976759_976782_5364044","Chilled Beverages","Food/Beverages/Chilled Beverages" +"976759_976782_8783063","Coca-Cola","Food/Beverages/Coca-Cola" +"976759_976782_5533811","Cocktail Mixers","Food/Beverages/Cocktail Mixers" +"976759_976782_8978567","Drink Mixes & Water Enhancers","Food/Beverages/Drink Mixes & Water Enhancers" +"976759_976782_9357528","Energy Drinks","Food/Beverages/Energy Drinks" +"976759_976782_1760088","Every Day Heroes","Food/Beverages/Every Day Heroes" +"976759_976782_5795119","Functional & Enhanced Beverages","Food/Beverages/Functional & Enhanced Beverages" +"976759_976782_6366289","Functional Beverages","Food/Beverages/Functional Beverages" +"976759_976782_4955760","Gameday Pepsi","Food/Beverages/Gameday Pepsi" +"976759_976782_7956282","Gatorade Cans","Food/Beverages/Gatorade Cans" +"976759_976782_4308612","Gatorade Zero","Food/Beverages/Gatorade Zero" +"976759_976782_9883261","Gatorlyte","Food/Beverages/Gatorlyte" +"976759_976782_5730567","Health-Inspired Beverages","Food/Beverages/Health-Inspired Beverages" +"976759_976782_1044077","Hot Cocoa","Food/Beverages/Hot Cocoa" +"976759_976782_2403214","Hydration Drinks","Food/Beverages/Hydration Drinks" +"976759_976782_3681207","Ice","Food/Beverages/Ice" +"976759_976782_7106941","Juice & Chilled Beverages","Food/Beverages/Juice & Chilled Beverages" +"976759_976782_1001321","Juices","Food/Beverages/Juices" +"976759_976782_5512594","KDP Holiday Mixers","Food/Beverages/KDP Holiday Mixers" +"976759_976782_9166028","Latin Beverages","Food/Beverages/Latin Beverages" +"976759_976782_8649877","Milk","Food/Beverages/Milk" +"976759_976782_8167813","Multipack Beverages Shipped to You","Food/Beverages/Multipack Beverages Shipped to You" +"976759_976782_4998827","Non Alcoholic Beer","Food/Beverages/Non Alcoholic Beer" +"976759_976782_8673018","Pepsi Beverages","Food/Beverages/Pepsi Beverages" +"976759_976782_1001683","Powdered Drink Mixes","Food/Beverages/Powdered Drink Mixes" +"976759_976782_4798856","Shop All Beverages","Food/Beverages/Shop All Beverages" +"976759_976782_4321403","Soda Mini Cans","Food/Beverages/Soda Mini Cans" +"976759_976782_1001680","Soda Pop","Food/Beverages/Soda Pop" +"976759_976782_2498001","Soda Shop","Food/Beverages/Soda Shop" +"976759_976782_1001682","Sports Drinks","Food/Beverages/Sports Drinks" +"976759_976782_1001320","Tea","Food/Beverages/Tea" +"976759_976782_1001659","Water","Food/Beverages/Water" +"976759_976782_1228026","Water Flavoring","Food/Beverages/Water Flavoring" +"976759_5024778","Brands","Food/Brands" +"976759_5024778_6400050","5 Hour Energy","Food/Brands/5 Hour Energy" +"976759_5024778_9064348","Atkins","Food/Brands/Atkins" +"976759_5024778_9936705","Bella","Food/Brands/Bella" +"976759_5024778_5425011","Ben's Original","Food/Brands/Ben's Original" +"976759_5024778_2639767","Big G Brands","Food/Brands/Big G Brands" +"976759_5024778_3942024","Bucked Up","Food/Brands/Bucked Up" +"976759_5024778_7042509","Bucked Up Energy","Food/Brands/Bucked Up Energy" +"976759_5024778_9275861","Cafe All Day","Food/Brands/Cafe All Day" +"976759_5024778_9857555","Cafe Bustelo","Food/Brands/Cafe Bustelo" +"976759_5024778_3454319","Campbell's Joy Night In","Food/Brands/Campbell's Joy Night In" +"976759_5024778_8842154","Cap'n Crunch","Food/Brands/Cap'n Crunch" +"976759_5024778_7147676","Cargill Holiday","Food/Brands/Cargill Holiday" +"976759_5024778_1438889","Carl Buddig & Company","Food/Brands/Carl Buddig & Company" +"976759_5024778_4543141","Chameleon Coffee","Food/Brands/Chameleon Coffee" +"976759_5024778_8051816","Cheerios Hearts","Food/Brands/Cheerios Hearts" +"976759_5024778_4454920","Cheetos","Food/Brands/Cheetos" +"976759_5024778_8996365","Country Crock","Food/Brands/Country Crock" +"976759_5024778_3769640","Del Monte","Food/Brands/Del Monte" +"976759_5024778_4029052","Doggie Days of Summer","Food/Brands/Doggie Days of Summer" +"976759_5024778_9842705","Doritos","Food/Brands/Doritos" +"976759_5024778_9379103","Doumak","Food/Brands/Doumak" +"976759_5024778_5256077","Dunkin","Food/Brands/Dunkin" +"976759_5024778_4565595","Easter Magic","Food/Brands/Easter Magic" +"976759_5024778_4489417","Essentia Water","Food/Brands/Essentia Water" +"976759_5024778_1378859","Fall Tailgating","Food/Brands/Fall Tailgating" +"976759_5024778_4039389","Family Feeds Family","Food/Brands/Family Feeds Family" +"976759_5024778_9270381","Ferrara Candy","Food/Brands/Ferrara Candy" +"976759_5024778_9269348","Ferrara Cookies","Food/Brands/Ferrara Cookies" +"976759_5024778_3296254","Ferrara Fruit Snacks","Food/Brands/Ferrara Fruit Snacks" +"976759_5024778_5302177","Ferrero Chocolate Halloween","Food/Brands/Ferrero Chocolate Halloween" +"976759_5024778_3546667","FisherNuts","Food/Brands/FisherNuts" +"976759_5024778_6559691","FlaminHot","Food/Brands/FlaminHot" +"976759_5024778_7535488","Flavor For Everyone","Food/Brands/Flavor For Everyone" +"976759_5024778_1257684","Folgers","Food/Brands/Folgers" +"976759_5024778_9426671","Forto","Food/Brands/Forto" +"976759_5024778_9418218","French's Dipping Sauces","Food/Brands/French's Dipping Sauces" +"976759_5024778_8235195","French's Fried Onions","Food/Brands/French's Fried Onions" +"976759_5024778_2981238","Funnest Summer","Food/Brands/Funnest Summer" +"976759_5024778_8527323","Gatorade","Food/Brands/Gatorade" +"976759_5024778_6464798","General Mills","Food/Brands/General Mills" +"976759_5024778_6446154","General Mills Cereal","Food/Brands/General Mills Cereal" +"976759_5024778_4041385","General Mills Tailgate Nation","Food/Brands/General Mills Tailgate Nation" +"976759_5024778_5177358","Ghirardelli Smores","Food/Brands/Ghirardelli Smores" +"976759_5024778_4457749","Goldfish Snacks","Food/Brands/Goldfish Snacks" +"976759_5024778_7351211","Green Bean Casserole","Food/Brands/Green Bean Casserole" +"976759_5024778_3582485","GT's Living Foods","Food/Brands/GT's Living Foods" +"976759_5024778_8040036","Happy On Hand","Food/Brands/Happy On Hand" +"976759_5024778_7134192","Happy Thursday","Food/Brands/Happy Thursday" +"976759_5024778_6329398","Heinz","Food/Brands/Heinz" +"976759_5024778_4613637","Hellman's Food Waste","Food/Brands/Hellman's Food Waste" +"976759_5024778_3259770","Hellmann's","Food/Brands/Hellmann's" +"976759_5024778_4399390","Hershey Baking","Food/Brands/Hershey Baking" +"976759_5024778_2054857","Hershey Celebrate SHE","Food/Brands/Hershey Celebrate SHE" +"976759_5024778_4334348","Hershey Halloween","Food/Brands/Hershey Halloween" +"976759_5024778_8211645","Hershey Holiday","Food/Brands/Hershey Holiday" +"976759_5024778_1941177","Hershey S'mores","Food/Brands/Hershey S'mores" +"976759_5024778_9553420","Hershey Summer Sweets","Food/Brands/Hershey Summer Sweets" +"976759_5024778_1318842","Hersheys Easter","Food/Brands/Hersheys Easter" +"976759_5024778_5466507","Hidden Valley Ranch","Food/Brands/Hidden Valley Ranch" +"976759_5024778_8975154","Jason","Food/Brands/Jason" +"976759_5024778_4126667","Jennie-O","Food/Brands/Jennie-O" +"976759_5024778_5203051","Jimmy Dean","Food/Brands/Jimmy Dean" +"976759_5024778_1367004","Kellogg's Feeding Reading","Food/Brands/Kellogg's Feeding Reading" +"976759_5024778_4559445","Kellogg's Ingrained","Food/Brands/Kellogg's Ingrained" +"976759_5024778_9866682","KIND","Food/Brands/KIND" +"976759_5024778_9421767","Kinder Bueno","Food/Brands/Kinder Bueno" +"976759_5024778_6719753","Kit Kat","Food/Brands/Kit Kat" +"976759_5024778_2186445","Klass","Food/Brands/Klass" +"976759_5024778_4554482","Kool Aid","Food/Brands/Kool Aid" +"976759_5024778_8191847","Kraft","Food/Brands/Kraft" +"976759_5024778_5736135","Kraft Art of the Burger","Food/Brands/Kraft Art of the Burger" +"976759_5024778_8988475","Kraft Baking","Food/Brands/Kraft Baking" +"976759_5024778_4102326","Kraft Beverages","Food/Brands/Kraft Beverages" +"976759_5024778_6969793","Kraft Breakfast","Food/Brands/Kraft Breakfast" +"976759_5024778_7326658","Kraft Condiments","Food/Brands/Kraft Condiments" +"976759_5024778_9001959","Kraft Dinners","Food/Brands/Kraft Dinners" +"976759_5024778_9004736","Kraft Fall Coffee","Food/Brands/Kraft Fall Coffee" +"976759_5024778_7885412","Kraft Favorite Essentials","Food/Brands/Kraft Favorite Essentials" +"976759_5024778_1680857","Kraft Favorites","Food/Brands/Kraft Favorites" +"976759_5024778_6868622","Kraft Grilling","Food/Brands/Kraft Grilling" +"976759_5024778_3897943","Kraft Holiday Coffee Sale","Food/Brands/Kraft Holiday Coffee Sale" +"976759_5024778_9492474","Kraft Holiday Favorites","Food/Brands/Kraft Holiday Favorites" +"976759_5024778_5332588","Kraft Lunchbox","Food/Brands/Kraft Lunchbox" +"976759_5024778_3905915","Kraft Sandwiches","Food/Brands/Kraft Sandwiches" +"976759_5024778_5616136","Kraft Seasonal","Food/Brands/Kraft Seasonal" +"976759_5024778_4494635","Kraft Summer","Food/Brands/Kraft Summer" +"976759_5024778_2733845","Kraft Tailgate Homegate","Food/Brands/Kraft Tailgate Homegate" +"976759_5024778_1826565","LaCroix","Food/Brands/LaCroix" +"976759_5024778_6089814","Land O Frost","Food/Brands/Land O Frost" +"976759_5024778_7432091","Lays-Ruffles-Favorites","Food/Brands/Lays-Ruffles-Favorites" +"976759_5024778_8513423","LesserEvil","Food/Brands/LesserEvil" +"976759_5024778_8445270","Lindt Chocolate","Food/Brands/Lindt Chocolate" +"976759_5024778_2432393","Lindt Lindor","Food/Brands/Lindt Lindor" +"976759_5024778_6238873","Made Better","Food/Brands/Made Better" +"976759_5024778_1729826","Make It Home","Food/Brands/Make It Home" +"976759_5024778_8099834","Make It Home","Food/Brands/Make It Home" +"976759_5024778_4640920","Mama Marys","Food/Brands/Mama Marys" +"976759_5024778_9410706","Maxwell House","Food/Brands/Maxwell House" +"976759_5024778_6070636","McCormick","Food/Brands/McCormick" +"976759_5024778_4544151","McCormick Holiday","Food/Brands/McCormick Holiday" +"976759_5024778_5601273","Merry in the making","Food/Brands/Merry in the making" +"976759_5024778_9392277","Mondelez","Food/Brands/Mondelez" +"976759_5024778_8908532","Morton Salt","Food/Brands/Morton Salt" +"976759_5024778_7202272","National Coffee Month","Food/Brands/National Coffee Month" +"976759_5024778_5515352","National Ice Cream Month","Food/Brands/National Ice Cream Month" +"976759_5024778_9565586","Nature Valley","Food/Brands/Nature Valley" +"976759_5024778_2990490","Nature Valley Recycle","Food/Brands/Nature Valley Recycle" +"976759_5024778_4292340","Nesquick","Food/Brands/Nesquick" +"976759_5024778_4926538","Nestle Back to Routine","Food/Brands/Nestle Back to Routine" +"976759_5024778_2103574","Nestle Holiday","Food/Brands/Nestle Holiday" +"976759_5024778_9424659","Nestle holiday meal solutions","Food/Brands/Nestle holiday meal solutions" +"976759_5024778_3552288","Nestle-holiday-baking","Food/Brands/Nestle-holiday-baking" +"976759_5024778_3547129","Old El Paso","Food/Brands/Old El Paso" +"976759_5024778_9303613","Oreo","Food/Brands/Oreo" +"976759_5024778_4890446","Oreo Pride","Food/Brands/Oreo Pride" +"976759_5024778_5968931","Oscar Mayer","Food/Brands/Oscar Mayer" +"976759_5024778_3296546","Pace Taco Night","Food/Brands/Pace Taco Night" +"976759_5024778_6278121","Pearl Milling","Food/Brands/Pearl Milling" +"976759_5024778_5461032","Pepsi Game Day Picks","Food/Brands/Pepsi Game Day Picks" +"976759_5024778_8428704","Permissible Snacking","Food/Brands/Permissible Snacking" +"976759_5024778_2631520","Pillsbury Cookies","Food/Brands/Pillsbury Cookies" +"976759_5024778_7073908","Planters","Food/Brands/Planters" +"976759_5024778_1666231","Pompeian","Food/Brands/Pompeian" +"976759_5024778_8586091","Quaker","Food/Brands/Quaker" +"976759_5024778_5431931","Quaker School Foods","Food/Brands/Quaker School Foods" +"976759_5024778_3359221","RedBull Gaming","Food/Brands/RedBull Gaming" +"976759_5024778_4226980","Reese's","Food/Brands/Reese's" +"976759_5024778_7828716","REIGN Total Body Fuel","Food/Brands/REIGN Total Body Fuel" +"976759_5024778_1434803","Ritz","Food/Brands/Ritz" +"976759_5024778_1660638","Ritz Pair Up for Good","Food/Brands/Ritz Pair Up for Good" +"976759_5024778_4249193","Rockstar Energy","Food/Brands/Rockstar Energy" +"976759_5024778_2290596","Rumba Meats","Food/Brands/Rumba Meats" +"976759_5024778_7508556","Sabra","Food/Brands/Sabra" +"976759_5024778_3053056","Simple Mills","Food/Brands/Simple Mills" +"976759_5024778_2984863","Smithfield Foods Inc","Food/Brands/Smithfield Foods Inc" +"976759_5024778_1401926","Smuckers","Food/Brands/Smuckers" +"976759_5024778_1901586","Smuckers NYNYRTS","Food/Brands/Smuckers NYNYRTS" +"976759_5024778_6299540","Splenda","Food/Brands/Splenda" +"976759_5024778_2587501","Spooky Season","Food/Brands/Spooky Season" +"976759_5024778_1879261","Starbucks by Nespresso","Food/Brands/Starbucks by Nespresso" +"976759_5024778_5086660","Starbucks Flavors","Food/Brands/Starbucks Flavors" +"976759_5024778_6944066","Starbucks Seasons","Food/Brands/Starbucks Seasons" +"976759_5024778_3687838","Starbucks Summer","Food/Brands/Starbucks Summer" +"976759_5024778_2262368","Stranger Things","Food/Brands/Stranger Things" +"976759_5024778_3335011","SunMaidBacktoSchool","Food/Brands/SunMaidBacktoSchool" +"976759_5024778_2280393","Swedish Fish & Friends","Food/Brands/Swedish Fish & Friends" +"976759_5024778_4264825","Tazo Regenerative","Food/Brands/Tazo Regenerative" +"976759_5024778_8962010","Thomas Breakfast","Food/Brands/Thomas Breakfast" +"976759_5024778_8195010","Together Tastes Better","Food/Brands/Together Tastes Better" +"976759_5024778_8442905","Toll House","Food/Brands/Toll House" +"976759_5024778_6590084","Totino's","Food/Brands/Totino's" +"976759_5024778_5973203","Totino's NBA 2K22","Food/Brands/Totino's NBA 2K22" +"976759_5024778_4558531","Truvia","Food/Brands/Truvia" +"976759_5024778_1985197","Tyson Foods","Food/Brands/Tyson Foods" +"976759_5024778_9609814","Velveeta","Food/Brands/Velveeta" +"976759_5024778_4410318","We Fix Water","Food/Brands/We Fix Water" +"976759_2241441","Breadcrumbs","Food/Breadcrumbs" +"976759_2241441_6518138","Italian Style","Food/Breadcrumbs/Italian Style" +"976759_2241441_4146513","Panko","Food/Breadcrumbs/Panko" +"976759_2241441_8369700","Plain","Food/Breadcrumbs/Plain" +"976759_2241441_5604485","Seasoned","Food/Breadcrumbs/Seasoned" +"976759_2241441_9924060","Shop All Breadcrumbs","Food/Breadcrumbs/Shop All Breadcrumbs" +"976759_976783","Breakfast & Cereal","Food/Breakfast & Cereal" +"976759_9392773","Breakfast & Cereal","Food/Breakfast & Cereal" +"976759_976783_7381533","belVita","Food/Breakfast & Cereal/belVita" +"976759_976783_1231208","Breakfast Cereal","Food/Breakfast & Cereal/Breakfast Cereal" +"976759_976783_2716997","Breakfast finds","Food/Breakfast & Cereal/Breakfast finds" +"976759_976783_2453448","Breakfast foods from our brands","Food/Breakfast & Cereal/Breakfast foods from our brands" +"976759_976783_8092506","Breakfast Ideas","Food/Breakfast & Cereal/Breakfast Ideas" +"976759_976783_8102529","Cereal & Granola","Food/Breakfast & Cereal/Cereal & Granola" +"976759_976783_7968162","Fiber One Bars","Food/Breakfast & Cereal/Fiber One Bars" +"976759_976783_5504375","General Mills Cereal Treat Bars","Food/Breakfast & Cereal/General Mills Cereal Treat Bars" +"976759_976783_8438428","Grab & Go Bars & Toaster Pastries","Food/Breakfast & Cereal/Grab & Go Bars & Toaster Pastries" +"976759_976783_1231209","Granola & Muesli","Food/Breakfast & Cereal/Granola & Muesli" +"976759_976783_2919949","Great Value Breakfast","Food/Breakfast & Cereal/Great Value Breakfast" +"976759_9392773_9884559","Hot Breakfast","Food/Breakfast & Cereal/Hot Breakfast" +"976759_9392773_4596114","Hot Cereal","Food/Breakfast & Cereal/Hot Cereal" +"976759_976783_1831416","Kellogg's Nutri-Grain Soft Baked Breakfast Bars","Food/Breakfast & Cereal/Kellogg's Nutri-Grain Soft Baked Breakfast Bars" +"976759_976783_8832936","Kid Friendly Breakfast","Food/Breakfast & Cereal/Kid Friendly Breakfast" +"976759_9392773_8196081","Muffins & Pastries","Food/Breakfast & Cereal/Muffins & Pastries" +"976759_9392773_9671607","Oatmeal","Food/Breakfast & Cereal/Oatmeal" +"976759_976783_1231210","Oatmeal & Grits","Food/Breakfast & Cereal/Oatmeal & Grits" +"976759_976783_7830606","Oatmeal & Grits","Food/Breakfast & Cereal/Oatmeal & Grits" +"976759_976783_6212246","On the go breakfast","Food/Breakfast & Cereal/On the go breakfast" +"976759_9392773_9285289","Pancake and Waffle Toppings","Food/Breakfast & Cereal/Pancake and Waffle Toppings" +"976759_976783_2228922","Pancakes & Waffles","Food/Breakfast & Cereal/Pancakes & Waffles" +"976759_976783_9424911","Quaker Breakfast","Food/Breakfast & Cereal/Quaker Breakfast" +"976759_976783_4572072","Rice Krispies Treats","Food/Breakfast & Cereal/Rice Krispies Treats" +"976759_9392773_6009402","Syrup","Food/Breakfast & Cereal/Syrup" +"976759_3407478","Bring the Juice","Food/Bring the Juice" +"976759_1096070","Candy","Food/Candy" +"976759_1096070_2851671","Better for you","Food/Candy/Better for you" +"976759_1096070_4888541","Brittle, Caramel & Toffee","Food/Candy/Brittle, Caramel & Toffee" +"976759_1096070_9143353","Bulk Candy","Food/Candy/Bulk Candy" +"976759_1096070_1429102","Candy Bars","Food/Candy/Candy Bars" +"976759_1096070_1224976","Chocolate","Food/Candy/Chocolate" +"976759_1096070_5658771","Christmas Candy","Food/Candy/Christmas Candy" +"976759_1096070_9134702","Cotton Candy","Food/Candy/Cotton Candy" +"976759_1096070_4780634","Easter Candy","Food/Candy/Easter Candy" +"976759_1096070_8799356","Feastables","Food/Candy/Feastables" +"976759_1096070_6555134","Fruit Flavored & Sour Candy","Food/Candy/Fruit Flavored & Sour Candy" +"976759_1096070_1224977","Gum","Food/Candy/Gum" +"976759_1096070_5851594","Gum & mints","Food/Candy/Gum & mints" +"976759_1096070_1224975","Gummy & Chewy Candy","Food/Candy/Gummy & Chewy Candy" +"976759_1096070_6041305","Halloween Candy","Food/Candy/Halloween Candy" +"976759_1096070_1224979","Hard Candy & Lollipops","Food/Candy/Hard Candy & Lollipops" +"976759_1096070_3090206","Mexican Candy","Food/Candy/Mexican Candy" +"976759_1096070_1224978","Mints","Food/Candy/Mints" +"976759_1096070_1224980","Multipacks & Bags","Food/Candy/Multipacks & Bags" +"976759_1096070_6336392","New in Candy","Food/Candy/New in Candy" +"976759_1096070_7069014","On the Go","Food/Candy/On the Go" +"976759_1096070_1241359","Shop by Brand","Food/Candy/Shop by Brand" +"976759_1096070_5013550","Shop candy by occasion","Food/Candy/Shop candy by occasion" +"976759_1096070_1517562","Sugar Free Candy","Food/Candy/Sugar Free Candy" +"976759_1096070_9457805","Valentine's Candy","Food/Candy/Valentine's Candy" +"976759_1086446","Coffee","Food/Coffee" +"976759_9570853","Coffee & Tea Subscription","Food/Coffee & Tea Subscription" +"976759_1086446_1889967","Allegro Coffee","Food/Coffee/Allegro Coffee" +"976759_1086446_2559085","Arabica Coffee","Food/Coffee/Arabica Coffee" +"976759_1086446_5857329","Barista Prima Coffeehouse","Food/Coffee/Barista Prima Coffeehouse" +"976759_1086446_3508859","Black Rifle Coffee","Food/Coffee/Black Rifle Coffee" +"976759_1086446_7859290","Black Rifle Coffee Pods","Food/Coffee/Black Rifle Coffee Pods" +"976759_1086446_2922868","Black Rifle Ship To Home Coffee","Food/Coffee/Black Rifle Ship To Home Coffee" +"976759_1086446_7443436","Blue Bottle Coffee","Food/Coffee/Blue Bottle Coffee" +"976759_1086446_1229654","Bottled Coffee","Food/Coffee/Bottled Coffee" +"976759_1086446_2931262","Boyers Coffee","Food/Coffee/Boyers Coffee" +"976759_1086446_5480182","Brooklyn Bean Roastery","Food/Coffee/Brooklyn Bean Roastery" +"976759_1086446_9164946","Bulk pods","Food/Coffee/Bulk pods" +"976759_1086446_4288945","Bulletproof","Food/Coffee/Bulletproof" +"976759_1086446_7145434","Cafe Bustelo","Food/Coffee/Cafe Bustelo" +"976759_1086446_5337550","Cafe Bustelo Ship To Home Coffee","Food/Coffee/Cafe Bustelo Ship To Home Coffee" +"976759_1086446_3060393","Cafe Du Monde Coffee","Food/Coffee/Cafe Du Monde Coffee" +"976759_1086446_7595739","Cafe Escapes Ship To Home Coffee","Food/Coffee/Cafe Escapes Ship To Home Coffee" +"976759_1086446_3775336","Cafe La Llave Coffee","Food/Coffee/Cafe La Llave Coffee" +"976759_1086446_2589844","Cameron's Coffee","Food/Coffee/Cameron's Coffee" +"976759_1086446_4163341","Cappuccino Coffee","Food/Coffee/Cappuccino Coffee" +"976759_1086446_5204146","Caribou Coffee","Food/Coffee/Caribou Coffee" +"976759_1086446_2894761","Chock full o'Nuts Coffee","Food/Coffee/Chock full o'Nuts Coffee" +"976759_1086446_9009206","Christopher Bean Coffee","Food/Coffee/Christopher Bean Coffee" +"976759_1086446_8753286","Coffee","Food/Coffee/Coffee" +"976759_1086446_7238690","Coffee & Coffee Pods","Food/Coffee/Coffee & Coffee Pods" +"976759_1086446_2310301","Coffee Additives","Food/Coffee/Coffee Additives" +"976759_1086446_5588831","Coffee and Tea","Food/Coffee/Coffee and Tea" +"976759_1086446_5475394","Coffee Bean and Tea Leaf","Food/Coffee/Coffee Bean and Tea Leaf" +"976759_1086446_1100007","Coffee Creamers","Food/Coffee/Coffee Creamers" +"976759_1086446_4542956","Coffee Drinks & Mix","Food/Coffee/Coffee Drinks & Mix" +"976759_1086446_1229655","Coffee Filters","Food/Coffee/Coffee Filters" +"976759_1086446_5228608","Coffee Flavors","Food/Coffee/Coffee Flavors" +"976759_1086446_6173211","Coffee Roast to Order","Food/Coffee/Coffee Roast to Order" +"976759_1086446_9241711","Coffee Syrups","Food/Coffee/Coffee Syrups" +"976759_1086446_5471454","Coffee With Chicory","Food/Coffee/Coffee With Chicory" +"976759_1086446_5484987","Cold Brew Ground Coffee","Food/Coffee/Cold Brew Ground Coffee" +"976759_1086446_3908418","Colombian Coffee","Food/Coffee/Colombian Coffee" +"976759_1086446_2425858","Community Coffee","Food/Coffee/Community Coffee" +"976759_1086446_1636748","Community Coffee Ship To Home","Food/Coffee/Community Coffee Ship To Home" +"976759_1086446_3387116","Crazy Cups","Food/Coffee/Crazy Cups" +"976759_1086446_7609659","Crazy Cups Coffee","Food/Coffee/Crazy Cups Coffee" +"976759_1086446_5303199","Cuban Coffee","Food/Coffee/Cuban Coffee" +"976759_1086446_3754266","Cuvee Coffee","Food/Coffee/Cuvee Coffee" +"976759_1086446_2469472","Dark Roast Coffee","Food/Coffee/Dark Roast Coffee" +"976759_1086446_3292988","Death Wish Coffee","Food/Coffee/Death Wish Coffee" +"976759_1086446_4286760","Death Wish Ship To Home Coffee","Food/Coffee/Death Wish Ship To Home Coffee" +"976759_1086446_2901896","Decaf Coffee","Food/Coffee/Decaf Coffee" +"976759_1086446_7310118","Dios Mio Coffee by Sofia Vergara","Food/Coffee/Dios Mio Coffee by Sofia Vergara" +"976759_1086446_2666670","Don Francisco's Coffee","Food/Coffee/Don Francisco's Coffee" +"976759_1086446_8067726","Double Donut Coffee","Food/Coffee/Double Donut Coffee" +"976759_1086446_7630289","Dunkin' Donuts","Food/Coffee/Dunkin' Donuts" +"976759_1086446_9091132","Dunkin' Ship To Home Coffee","Food/Coffee/Dunkin' Ship To Home Coffee" +"976759_1086446_1371544","Eight O'Clock Coffee","Food/Coffee/Eight O'Clock Coffee" +"976759_1086446_7224029","Eight O'Clock Ship To Home Coffee","Food/Coffee/Eight O'Clock Ship To Home Coffee" +"976759_1086446_4366064","Espresso","Food/Coffee/Espresso" +"976759_1086446_7775574","Espresso Pods & Capsules","Food/Coffee/Espresso Pods & Capsules" +"976759_1086446_9679850","Ethical Bean Coffee","Food/Coffee/Ethical Bean Coffee" +"976759_1086446_9426621","Fire department coffee","Food/Coffee/Fire department coffee" +"976759_1086446_8200909","Flavored Ground Coffee","Food/Coffee/Flavored Ground Coffee" +"976759_1086446_5919970","Folgers 1850 Coffee","Food/Coffee/Folgers 1850 Coffee" +"976759_1086446_9393075","Folgers Black Silk Coffee","Food/Coffee/Folgers Black Silk Coffee" +"976759_1086446_3100047","Folgers Coffee","Food/Coffee/Folgers Coffee" +"976759_1086446_6279310","Folgers Ship To Home Coffee","Food/Coffee/Folgers Ship To Home Coffee" +"976759_1086446_6460509","Four Sigmatic","Food/Coffee/Four Sigmatic" +"976759_1086446_9185846","Free rein","Food/Coffee/Free rein" +"976759_1086446_7463372","Free Rein Coffee","Food/Coffee/Free Rein Coffee" +"976759_1086446_9494964","French Market Coffee","Food/Coffee/French Market Coffee" +"976759_1086446_6833316","Frozen Bean Coffee","Food/Coffee/Frozen Bean Coffee" +"976759_1086446_3529850","Functional Coffee","Food/Coffee/Functional Coffee" +"976759_1086446_9208550","Gevalia","Food/Coffee/Gevalia" +"976759_1086446_6917621","Gloria Jean's Coffees","Food/Coffee/Gloria Jean's Coffees" +"976759_1086446_3653954","Great Value Coffee","Food/Coffee/Great Value Coffee" +"976759_1086446_5875478","Great Value Coffee Pods","Food/Coffee/Great Value Coffee Pods" +"976759_1086446_6490624","Green Mountain Coffee","Food/Coffee/Green Mountain Coffee" +"976759_1086446_6349793","Green Mountain Ship To Home Coffee","Food/Coffee/Green Mountain Ship To Home Coffee" +"976759_1086446_1229651","Ground Coffee","Food/Coffee/Ground Coffee" +"976759_1086446_2174088","Ground Coffee","Food/Coffee/Ground Coffee" +"976759_1086446_7002469","Hills Bros Coffee","Food/Coffee/Hills Bros Coffee" +"976759_1086446_3510432","Hot Beverages","Food/Coffee/Hot Beverages" +"976759_1086446_8601015","Iced Coffee","Food/Coffee/Iced Coffee" +"976759_1086446_7207956","illy Coffee","Food/Coffee/illy Coffee" +"976759_1086446_1229650","Instant Coffee","Food/Coffee/Instant Coffee" +"976759_1086446_7541069","Instant Coffee","Food/Coffee/Instant Coffee" +"976759_1086446_3896713","Javy Coffee","Food/Coffee/Javy Coffee" +"976759_1086446_3844694","Juan Valdez Coffee","Food/Coffee/Juan Valdez Coffee" +"976759_1086446_4490488","Kahawa 1893 Coffee","Food/Coffee/Kahawa 1893 Coffee" +"976759_1086446_9041445","Kauai Coffee","Food/Coffee/Kauai Coffee" +"976759_1086446_8135897","Keurig K-Cups & Coffee Pods","Food/Coffee/Keurig K-Cups & Coffee Pods" +"976759_1086446_5169965","Kicking Horse Coffee","Food/Coffee/Kicking Horse Coffee" +"976759_1086446_3763734","Krispy Kreme Coffee","Food/Coffee/Krispy Kreme Coffee" +"976759_1086446_2186660","La Colombe Coffee","Food/Coffee/La Colombe Coffee" +"976759_1086446_3345140","Lavazza Coffee","Food/Coffee/Lavazza Coffee" +"976759_1086446_7715337","Light Roast Coffee","Food/Coffee/Light Roast Coffee" +"976759_1086446_4029061","Lion Coffee","Food/Coffee/Lion Coffee" +"976759_1086446_4168978","Manual Shelf","Food/Coffee/Manual Shelf" +"976759_1086446_3591735","MAUD'S Ship To Home Coffee","Food/Coffee/MAUD'S Ship To Home Coffee" +"976759_1086446_8082858","MAUDS Coffee","Food/Coffee/MAUDS Coffee" +"976759_1086446_9154767","Maxwell House Coffee","Food/Coffee/Maxwell House Coffee" +"976759_1086446_2952758","McCafe","Food/Coffee/McCafe" +"976759_1086446_8054840","McCafe Ship To Home Coffee","Food/Coffee/McCafe Ship To Home Coffee" +"976759_1086446_2272924","Medium Roast Coffee","Food/Coffee/Medium Roast Coffee" +"976759_1086446_8415600","Mocha Mix","Food/Coffee/Mocha Mix" +"976759_1086446_4812120","National coffee month","Food/Coffee/National coffee month" +"976759_1086446_1801480","Nespresso Pods & Capsules","Food/Coffee/Nespresso Pods & Capsules" +"976759_1086446_1995978","New Coffee","Food/Coffee/New Coffee" +"976759_1086446_8218446","New England Coffee","Food/Coffee/New England Coffee" +"976759_1086446_4236581","Newman's Own Coffee","Food/Coffee/Newman's Own Coffee" +"976759_1086446_8551808","Organic Coffee","Food/Coffee/Organic Coffee" +"976759_1086446_5434583","Peet's Coffee","Food/Coffee/Peet's Coffee" +"976759_1086446_7853986","Peet's Ship To Home Coffee","Food/Coffee/Peet's Ship To Home Coffee" +"976759_1086446_5432700","Perfect Samplers Coffee","Food/Coffee/Perfect Samplers Coffee" +"976759_1086446_1394665","Postum Coffee","Food/Coffee/Postum Coffee" +"976759_1086446_9904732","Premium Ground Coffee","Food/Coffee/Premium Ground Coffee" +"976759_1086446_5248805","Rapid Fire Coffee","Food/Coffee/Rapid Fire Coffee" +"976759_1086446_1416772","Raven's Brew Coffee","Food/Coffee/Raven's Brew Coffee" +"976759_1086446_8320520","REVV Coffee","Food/Coffee/REVV Coffee" +"976759_1086446_3313187","San Francisco Bay Coffee","Food/Coffee/San Francisco Bay Coffee" +"976759_1086446_3520530","Seattle's Best Coffee","Food/Coffee/Seattle's Best Coffee" +"976759_1086446_2955086","Ship To Home Coffee","Food/Coffee/Ship To Home Coffee" +"976759_1086446_6683788","Ship To Home Coffee","Food/Coffee/Ship To Home Coffee" +"976759_1086446_3143145","Single-Serve Cups & Pods","Food/Coffee/Single-Serve Cups & Pods" +"976759_1086446_1229653","Single-Serve Cups & Pods","Food/Coffee/Single-Serve Cups & Pods" +"976759_1086446_2986178","Starbucks","Food/Coffee/Starbucks" +"976759_1086446_4252159","Starbucks Ship To Home Coffee","Food/Coffee/Starbucks Ship To Home Coffee" +"976759_1086446_5397338","Stone Street Coffee","Food/Coffee/Stone Street Coffee" +"976759_1086446_4754103","Strong & High Caffeine Coffee","Food/Coffee/Strong & High Caffeine Coffee" +"976759_1086446_5772849","Stumptown Coffee","Food/Coffee/Stumptown Coffee" +"976759_1086446_6202182","Super Coffee","Food/Coffee/Super Coffee" +"976759_1086446_9902997","Sustainably Sourced Coffee and Tea","Food/Coffee/Sustainably Sourced Coffee and Tea" +"976759_1086446_1587610","The Original Donut Shop","Food/Coffee/The Original Donut Shop" +"976759_1086446_1247843","The Original Donut Shop Ship To Home Coffee","Food/Coffee/The Original Donut Shop Ship To Home Coffee" +"976759_1086446_5550920","Tim Hortons Coffee","Food/Coffee/Tim Hortons Coffee" +"976759_1086446_2353747","Two Rivers Coffee","Food/Coffee/Two Rivers Coffee" +"976759_1086446_6364451","Victor Allen's","Food/Coffee/Victor Allen's" +"976759_1086446_9232806","Victor Allen's Ship To Home Coffee","Food/Coffee/Victor Allen's Ship To Home Coffee" +"976759_1086446_6427827","VitaCup","Food/Coffee/VitaCup" +"976759_1086446_7311495","Wake The Hell Up! Coffee","Food/Coffee/Wake The Hell Up! Coffee" +"976759_1086446_1229652","Whole Bean Coffee","Food/Coffee/Whole Bean Coffee" +"976759_1086446_6346545","Yuban Coffee","Food/Coffee/Yuban Coffee" +"976759_8149667","Comfort food","Food/Comfort food" +"976759_8149667_9003533","Chili","Food/Comfort food/Chili" +"976759_8149667_7475123","Comfort food","Food/Comfort food/Comfort food" +"976759_8149667_3415119","St. Patrick's day stews & chili","Food/Comfort food/St. Patrick's day stews & chili" +"976759_976786","Condiments, Sauces & Spices","Food/Condiments, Sauces & Spices" +"976759_976786_9696846","Condiments","Food/Condiments, Sauces & Spices/Condiments" +"976759_976786_4439815","Jams, Jellies and Preserves","Food/Condiments, Sauces & Spices/Jams, Jellies and Preserves" +"976759_976786_4515492","Smash Kitchen","Food/Condiments, Sauces & Spices/Smash Kitchen" +"976759_9176907","Dairy & Eggs","Food/Dairy & Eggs" +"976759_9176907_7545972","Biscuits, Cookies, Doughs & Crusts","Food/Dairy & Eggs/Biscuits, Cookies, Doughs & Crusts" +"976759_9176907_1001467","Butter & Margarine","Food/Dairy & Eggs/Butter & Margarine" +"976759_9176907_1001468","Cheese","Food/Dairy & Eggs/Cheese" +"976759_9176907_6336565","Chilled Snacks & Beverages","Food/Dairy & Eggs/Chilled Snacks & Beverages" +"976759_9176907_1341992","Cookie Dough","Food/Dairy & Eggs/Cookie Dough" +"976759_9176907_9550303","Cream & Creamers","Food/Dairy & Eggs/Cream & Creamers" +"976759_9176907_4752344","Dairy Brands","Food/Dairy & Eggs/Dairy Brands" +"976759_9176907_6053481","Dairy Essentials","Food/Dairy & Eggs/Dairy Essentials" +"976759_9176907_9527865","Dairy Recipe Food Trends","Food/Dairy & Eggs/Dairy Recipe Food Trends" +"976759_9176907_4504952","Doughs","Food/Dairy & Eggs/Doughs" +"976759_9176907_1001469","Eggs","Food/Dairy & Eggs/Eggs" +"976759_9176907_9413955","Great Value","Food/Dairy & Eggs/Great Value" +"976759_9176907_4405816","Milk","Food/Dairy & Eggs/Milk" +"976759_9176907_2427118","Non dairy milk buying guide","Food/Dairy & Eggs/Non dairy milk buying guide" +"976759_9176907_9893113","Plant-Based Dairy","Food/Dairy & Eggs/Plant-Based Dairy" +"976759_9176907_4899814","Protein Dairy","Food/Dairy & Eggs/Protein Dairy" +"976759_9176907_3733198","Pudding & Gelatin","Food/Dairy & Eggs/Pudding & Gelatin" +"976759_9176907_7287191","Sour Cream & Chilled Dips","Food/Dairy & Eggs/Sour Cream & Chilled Dips" +"976759_9176907_1001470","Yogurt","Food/Dairy & Eggs/Yogurt" +"976759_976789","Deli","Food/Deli" +"976759_976789_3827156","Budget Friendly Picks","Food/Deli/Budget Friendly Picks" +"976759_976789_4740967","Create Your Charcuterie Board","Food/Deli/Create Your Charcuterie Board" +"976759_976789_7155371","Deli Hot Case","Food/Deli/Deli Hot Case" +"976759_976789_8252357","Deli Meal Solutions","Food/Deli/Deli Meal Solutions" +"976759_976789_5428795","Deli Meat & Cheese","Food/Deli/Deli Meat & Cheese" +"976759_976789_3714576","Deli Nutrition Facts","Food/Deli/Deli Nutrition Facts" +"976759_976789_7419699","Deli Prepared Soups & Salads","Food/Deli/Deli Prepared Soups & Salads" +"976759_976789_7498848","Deli Private Brands","Food/Deli/Deli Private Brands" +"976759_976789_4194487","Deli Shop All","Food/Deli/Deli Shop All" +"976759_976789_2300191","Dinner Tonight","Food/Deli/Dinner Tonight" +"976759_976789_3251337","Fresh Meals","Food/Deli/Fresh Meals" +"976759_976789_7056897","Hummus, Dips & Salsa","Food/Deli/Hummus, Dips & Salsa" +"976759_976789_4237931","Kids Lunches & Snacks","Food/Deli/Kids Lunches & Snacks" +"976759_976789_9355377","Lunch Buying Guide","Food/Deli/Lunch Buying Guide" +"976759_976789_9449858","Lunch Combos","Food/Deli/Lunch Combos" +"976759_976789_8979491","Prepared Meals & Sides","Food/Deli/Prepared Meals & Sides" +"976759_976789_2985474","Sandwiches","Food/Deli/Sandwiches" +"976759_976789_1462139","Shop All Lunch","Food/Deli/Shop All Lunch" +"976759_976789_7852529","Soup and Sandwiches","Food/Deli/Soup and Sandwiches" +"976759_9801466","Delicious December","Food/Delicious December" +"976759_5004481","Dietary & Lifestyle Shop","Food/Dietary & Lifestyle Shop" +"976759_5004481_2475799","Alcohol Alternatives","Food/Dietary & Lifestyle Shop/Alcohol Alternatives" +"976759_5004481_7941405","Dairy Free Foods","Food/Dietary & Lifestyle Shop/Dairy Free Foods" +"976759_5004481_6339646","Feel Good Foods","Food/Dietary & Lifestyle Shop/Feel Good Foods" +"976759_5004481_9118701","Feel Good Meals","Food/Dietary & Lifestyle Shop/Feel Good Meals" +"976759_5004481_2536743","Feel Good Sides","Food/Dietary & Lifestyle Shop/Feel Good Sides" +"976759_5004481_9769485","Feel Good Snacks","Food/Dietary & Lifestyle Shop/Feel Good Snacks" +"976759_5004481_7089431","Gluten Free Meals and more","Food/Dietary & Lifestyle Shop/Gluten Free Meals and more" +"976759_5004481_1457133","Grab & Go Deli","Food/Dietary & Lifestyle Shop/Grab & Go Deli" +"976759_5004481_9114854","Health Inspired Breakfast","Food/Dietary & Lifestyle Shop/Health Inspired Breakfast" +"976759_5004481_3908039","Health Inspired Gut Foods","Food/Dietary & Lifestyle Shop/Health Inspired Gut Foods" +"976759_5004481_8465428","Health Inspired Lunch","Food/Dietary & Lifestyle Shop/Health Inspired Lunch" +"976759_5004481_4551059","Health Inspired Smoothies & Shakes","Food/Dietary & Lifestyle Shop/Health Inspired Smoothies & Shakes" +"976759_5004481_7963094","Healthy Eating","Food/Dietary & Lifestyle Shop/Healthy Eating" +"976759_5004481_4803116","Healthy Lifestyle","Food/Dietary & Lifestyle Shop/Healthy Lifestyle" +"976759_5004481_9339140","High Fiber Foods","Food/Dietary & Lifestyle Shop/High Fiber Foods" +"976759_5004481_8602597","High Protein Foods","Food/Dietary & Lifestyle Shop/High Protein Foods" +"976759_5004481_9418254","Keto Diet","Food/Dietary & Lifestyle Shop/Keto Diet" +"976759_5004481_7715306","Kosher","Food/Dietary & Lifestyle Shop/Kosher" +"976759_5004481_6036545","Low Calorie Foods","Food/Dietary & Lifestyle Shop/Low Calorie Foods" +"976759_5004481_8377127","Low sodium bacon","Food/Dietary & Lifestyle Shop/Low sodium bacon" +"976759_5004481_4632743","Low sodium broth","Food/Dietary & Lifestyle Shop/Low sodium broth" +"976759_5004481_6733659","Low Sodium Foods","Food/Dietary & Lifestyle Shop/Low Sodium Foods" +"976759_5004481_6518517","Low sodium meat","Food/Dietary & Lifestyle Shop/Low sodium meat" +"976759_5004481_8237330","Low Sugar Desserts","Food/Dietary & Lifestyle Shop/Low Sugar Desserts" +"976759_5004481_9198948","Mediterranean Diet","Food/Dietary & Lifestyle Shop/Mediterranean Diet" +"976759_5004481_1858214","No Sugar Foods","Food/Dietary & Lifestyle Shop/No Sugar Foods" +"976759_5004481_5915711","Paleo Diet","Food/Dietary & Lifestyle Shop/Paleo Diet" +"976759_5004481_6794259","Plant Based","Food/Dietary & Lifestyle Shop/Plant Based" +"976759_5004481_2468673","Plant Based Foods","Food/Dietary & Lifestyle Shop/Plant Based Foods" +"976759_5004481_1478340","Reduced Sugar","Food/Dietary & Lifestyle Shop/Reduced Sugar" +"976759_5004481_6169922","Salads, Dressings, & Toppings","Food/Dietary & Lifestyle Shop/Salads, Dressings, & Toppings" +"976759_5004481_6205394","Sugar Free Juice","Food/Dietary & Lifestyle Shop/Sugar Free Juice" +"976759_5004481_3986436","Vegan","Food/Dietary & Lifestyle Shop/Vegan" +"976759_5004481_7552486","Vegetarian","Food/Dietary & Lifestyle Shop/Vegetarian" +"976759_5004481_3122144","Whole Grain","Food/Dietary & Lifestyle Shop/Whole Grain" +"976759_6880042","Events","Food/Events" +"976759_6880042_9410871","7Up Canada Dry","Food/Events/7Up Canada Dry" +"976759_6880042_6725633","Airly","Food/Events/Airly" +"976759_6880042_9204345","Back To Routine","Food/Events/Back To Routine" +"976759_6880042_1330992","Back To School Feeding Reading","Food/Events/Back To School Feeding Reading" +"976759_6880042_3323756","Beneful Mainline","Food/Events/Beneful Mainline" +"976759_6880042_7415681","Big Game Food","Food/Events/Big Game Food" +"976759_6880042_8872455","Blue Buffalo Best Friends","Food/Events/Blue Buffalo Best Friends" +"976759_6880042_7404510","Blue Buffalo True Solutions","Food/Events/Blue Buffalo True Solutions" +"976759_6880042_4543687","Bumble Bee Foods","Food/Events/Bumble Bee Foods" +"976759_6880042_1729581","Bushschilibeans","Food/Events/Bushschilibeans" +"976759_6880042_9277567","Campbells Holiday Hauls","Food/Events/Campbells Holiday Hauls" +"976759_6880042_2917313","Campbells Snacks","Food/Events/Campbells Snacks" +"976759_6880042_7318177","Celsius","Food/Events/Celsius" +"976759_6880042_3111498","CELSIUS MLS Experience","Food/Events/CELSIUS MLS Experience" +"976759_6880042_9661163","Chex Holiday","Food/Events/Chex Holiday" +"976759_6880042_9699826","Chobani Coffee Creamer","Food/Events/Chobani Coffee Creamer" +"976759_6880042_4941827","Chobani High Protein","Food/Events/Chobani High Protein" +"976759_6880042_1851122","Chobani Recipes","Food/Events/Chobani Recipes" +"976759_6880042_6990598","Chobani Snack Smarter","Food/Events/Chobani Snack Smarter" +"976759_6880042_3241495","Chobanixpost","Food/Events/Chobanixpost" +"976759_6880042_1823875","Coca Cola Add Magic To Mealtime","Food/Events/Coca Cola Add Magic To Mealtime" +"976759_6880042_5437748","Coca Cola Spiced","Food/Events/Coca Cola Spiced" +"976759_6880042_7609123","Coca Cola Star Wars","Food/Events/Coca Cola Star Wars" +"976759_6880042_9494944","Coca Cola Y3000","Food/Events/Coca Cola Y3000" +"976759_6880042_2487708","CocaCola Olympic","Food/Events/CocaCola Olympic" +"976759_6880042_3088391","Contadina","Food/Events/Contadina" +"976759_6880042_8473562","Danone Happy Family","Food/Events/Danone Happy Family" +"976759_6880042_7667925","Delicious Wishes","Food/Events/Delicious Wishes" +"976759_6880042_2119415","DrPepperFootball","Food/Events/DrPepperFootball" +"976759_6880042_6636956","Duracell F1","Food/Events/Duracell F1" +"976759_6880042_9974125","Eight O Clock Coffee","Food/Events/Eight O Clock Coffee" +"976759_6880042_9602046","Energizer AC Pro","Food/Events/Energizer AC Pro" +"976759_6880042_7006146","Everyday Victories","Food/Events/Everyday Victories" +"976759_6880042_2099337","Familia Favorites","Food/Events/Familia Favorites" +"976759_6880042_4040262","Favorite Chips and Dip","Food/Events/Favorite Chips and Dip" +"976759_6880042_3715736","Ferrero Keebler El Fudge","Food/Events/Ferrero Keebler El Fudge" +"976759_6880042_9693458","Ferrero Keebler Superman","Food/Events/Ferrero Keebler Superman" +"976759_6880042_6926574","Fight Hunger","Food/Events/Fight Hunger" +"976759_6880042_6237437","Folgers1850","Food/Events/Folgers1850" +"976759_6880042_5974379","Frito Lay Official U.S.A Snacks of the FIFA World Cup 2022","Food/Events/Frito Lay Official U.S.A Snacks of the FIFA World Cup 2022" +"976759_6880042_9989982","Frito Lay's Snacksgiving","Food/Events/Frito Lay's Snacksgiving" +"976759_6880042_3038456","Fruit Roll Up Sour","Food/Events/Fruit Roll Up Sour" +"976759_6880042_3002751","Game Day","Food/Events/Game Day" +"976759_6880042_3903426","Get Your Grill On","Food/Events/Get Your Grill On" +"976759_6880042_8588436","Get Your Grill On Event","Food/Events/Get Your Grill On Event" +"976759_6880042_7767993","Get Your Grill On Week 1","Food/Events/Get Your Grill On Week 1" +"976759_6880042_3961639","Get Your Grill On Week 2","Food/Events/Get Your Grill On Week 2" +"976759_6880042_4552824","Get Your Grill On Week 3","Food/Events/Get Your Grill On Week 3" +"976759_6880042_9880435","Get Your Grill On Week 4","Food/Events/Get Your Grill On Week 4" +"976759_6880042_5220366","Get Your Grill On Week 5","Food/Events/Get Your Grill On Week 5" +"976759_6880042_5308043","Go Go Squeez","Food/Events/Go Go Squeez" +"976759_6880042_2517313","Goldfish","Food/Events/Goldfish" +"976759_6880042_6740781","Grow for Good","Food/Events/Grow for Good" +"976759_6880042_8525559","Hershey She Is","Food/Events/Hershey She Is" +"976759_6880042_1708308","Hershey's Halloween","Food/Events/Hershey's Halloween" +"976759_6880042_5215568","Hershey's Holiday","Food/Events/Hershey's Holiday" +"976759_6880042_4483105","Hidden Valley Ranch Marketside Pizza","Food/Events/Hidden Valley Ranch Marketside Pizza" +"976759_6880042_8320848","Holder 15","Food/Events/Holder 15" +"976759_6880042_4016549","Holder 2","Food/Events/Holder 2" +"976759_6880042_1749292","holder16","Food/Events/holder16" +"976759_6880042_6205832","Horizon Organic","Food/Events/Horizon Organic" +"976759_6880042_7178399","Hormel Back To School","Food/Events/Hormel Back To School" +"976759_6880042_4366685","Hydration Favorites","Food/Events/Hydration Favorites" +"976759_6880042_6072092","IAMS Checkup Challenge","Food/Events/IAMS Checkup Challenge" +"976759_6880042_3206318","International Delight","Food/Events/International Delight" +"976759_6880042_6700708","Jif Peanut Butter","Food/Events/Jif Peanut Butter" +"976759_6880042_3102111","Knorr Recipes","Food/Events/Knorr Recipes" +"976759_6880042_9530267","Kraft Easter","Food/Events/Kraft Easter" +"976759_6880042_7444397","Kraft Fight Hunger","Food/Events/Kraft Fight Hunger" +"976759_6880042_5934720","Kraft Funexpected","Food/Events/Kraft Funexpected" +"976759_6880042_9444397","Kraft Heinz Big Game","Food/Events/Kraft Heinz Big Game" +"976759_6880042_4587077","Kraft Summer Grilling","Food/Events/Kraft Summer Grilling" +"976759_6880042_3351800","Kraftheinz School Years Eve","Food/Events/Kraftheinz School Years Eve" +"976759_6880042_2408417","Love Made Fresh","Food/Events/Love Made Fresh" +"976759_6880042_7349374","Love Made Fresh Eventhub","Food/Events/Love Made Fresh Eventhub" +"976759_6880042_5929903","M&M's Purple","Food/Events/M&M's Purple" +"976759_6880042_6300689","Make New Traditions","Food/Events/Make New Traditions" +"976759_6880042_7210574","Marketplace Food Gifting","Food/Events/Marketplace Food Gifting" +"976759_6880042_3806935","Mars MMS","Food/Events/Mars MMS" +"976759_6880042_3181917","Mars Wrigley Valentine","Food/Events/Mars Wrigley Valentine" +"976759_6880042_4850282","MLBTRIVIA","Food/Events/MLBTRIVIA" +"976759_6880042_4744327","Mondelez Halloween","Food/Events/Mondelez Halloween" +"976759_6880042_5635927","Mondelez Holiday","Food/Events/Mondelez Holiday" +"976759_6880042_4560262","Mr Beast Feastables","Food/Events/Mr Beast Feastables" +"976759_6880042_4059112","National Candy Month June","Food/Events/National Candy Month June" +"976759_6880042_2258783","National Chocolate Month","Food/Events/National Chocolate Month" +"976759_6880042_3925062","National Grilled Cheese Month","Food/Events/National Grilled Cheese Month" +"976759_6880042_1663805","National Salad Month","Food/Events/National Salad Month" +"976759_6880042_7134408","Natures own back to school","Food/Events/Natures own back to school" +"976759_6880042_3980033","Natures Own Bread","Food/Events/Natures Own Bread" +"976759_6880042_6085385","natureseats","Food/Events/natureseats" +"976759_6880042_5165547","Nescafe","Food/Events/Nescafe" +"976759_6880042_4636682","Nespresso Machines","Food/Events/Nespresso Machines" +"976759_6880042_2435207","Nestle Summer Sparklers","Food/Events/Nestle Summer Sparklers" +"976759_6880042_8616455","New at Walmart","Food/Events/New at Walmart" +"976759_6880042_3317724","New Year Hydration","Food/Events/New Year Hydration" +"976759_6880042_1281851","New Year Reset","Food/Events/New Year Reset" +"976759_6880042_5542617","New Year's Survival Guide","Food/Events/New Year's Survival Guide" +"976759_6880042_2932278","Noosa Yoghurt","Food/Events/Noosa Yoghurt" +"976759_6880042_9667645","Ocean Spray Holidays","Food/Events/Ocean Spray Holidays" +"976759_6880042_1877880","Oikos","Food/Events/Oikos" +"976759_6880042_5147147","Once Upon a Fright","Food/Events/Once Upon a Fright" +"976759_6880042_9676449","Oreo Super Mario","Food/Events/Oreo Super Mario" +"976759_6880042_6923840","OreoSpace","Food/Events/OreoSpace" +"976759_6880042_4475163","OREOStarWars","Food/Events/OREOStarWars" +"976759_6880042_3885987","Pepsi Grills Night Out","Food/Events/Pepsi Grills Night Out" +"976759_6880042_6845429","Pepsi Meal Time","Food/Events/Pepsi Meal Time" +"976759_6880042_6420285","Pepsi Super Bowl","Food/Events/Pepsi Super Bowl" +"976759_6880042_5346825","Pepsi Zero Sugar","Food/Events/Pepsi Zero Sugar" +"976759_6880042_6955012","Peter Pan","Food/Events/Peter Pan" +"976759_6880042_3597782","Pilk","Food/Events/Pilk" +"976759_6880042_4058016","Planters Holiday","Food/Events/Planters Holiday" +"976759_6880042_4302521","Power up with Duracell","Food/Events/Power up with Duracell" +"976759_6880042_5695859","Pride It Forward","Food/Events/Pride It Forward" +"976759_6880042_9404714","Prime","Food/Events/Prime" +"976759_6880042_5684833","Propel Run Clubs","Food/Events/Propel Run Clubs" +"976759_6880042_3141538","Pure Life Hydration","Food/Events/Pure Life Hydration" +"976759_6880042_5991742","Pure Life Water Gold","Food/Events/Pure Life Water Gold" +"976759_6880042_6361455","Back to School","Food/Events/Pure Life/Back to School" +"976759_6880042_2963178","Quakermaplebacon","Food/Events/Quakermaplebacon" +"976759_6880042_1304504","quakermaplebacon-test","Food/Events/quakermaplebacon-test" +"976759_6880042_5379924","Regional Spring Water","Food/Events/Regional Spring Water" +"976759_6880042_1994622","Russell Stover 100th Anniversary","Food/Events/Russell Stover 100th Anniversary" +"976759_6880042_6388392","Share a Coke","Food/Events/Share a Coke" +"976759_6880042_9478572","Skippy Natures Own Back to School","Food/Events/Skippy Natures Own Back to School" +"976759_6880042_9875154","Skittles Popd","Food/Events/Skittles Popd" +"976759_6880042_2917613","Smartwater Alkaline","Food/Events/Smartwater Alkaline" +"976759_6880042_7029977","Smuckers Uncrustables","Food/Events/Smuckers Uncrustables" +"976759_6880042_4890344","Soup Meats Beer","Food/Events/Soup Meats Beer" +"976759_6880042_3581184","Sour Patch Kids Lemonade","Food/Events/Sour Patch Kids Lemonade" +"976759_6880042_8010671","Sparkling Ice","Food/Events/Sparkling Ice" +"976759_6880042_2683930","Spooky Fleet","Food/Events/Spooky Fleet" +"976759_6880042_8400671","Spring Ready","Food/Events/Spring Ready" +"976759_6880042_3229781","Starbucks Seasonal Flavors","Food/Events/Starbucks Seasonal Flavors" +"976759_6880042_6176670","Starbucks Sunsera","Food/Events/Starbucks Sunsera" +"976759_6880042_4208837","Starbucks Vertuo Line","Food/Events/Starbucks Vertuo Line" +"976759_6880042_7105659","Steakumm","Food/Events/Steakumm" +"976759_6880042_3685989","Stuffed Puffs Summer Smores","Food/Events/Stuffed Puffs Summer Smores" +"976759_6880042_9850140","Summer’s Sweet Soundtrack","Food/Events/Summer’s Sweet Soundtrack" +"976759_6880042_7018437","Sunkist Summer","Food/Events/Sunkist Summer" +"976759_6880042_4274131","Sweet Dreams Cereal","Food/Events/Sweet Dreams Cereal" +"976759_6880042_6500917","Taste of the NFL","Food/Events/Taste of the NFL" +"976759_6880042_1966432","Tea Favorites","Food/Events/Tea Favorites" +"976759_6880042_3454308","Tidy Care","Food/Events/Tidy Care" +"976759_6880042_9808343","TJIF","Food/Events/TJIF" +"976759_6880042_2872016","Tyson back to school","Food/Events/Tyson back to school" +"976759_6880042_2231545","Tyson Holiday","Food/Events/Tyson Holiday" +"976759_6880042_5140493","Tyson Tailgating","Food/Events/Tyson Tailgating" +"976759_6880042_5978999","ugly sundaes","Food/Events/ugly sundaes" +"976759_6880042_4409958","Werthers Merci Toffifay Mamba","Food/Events/Werthers Merci Toffifay Mamba" +"976759_6880042_9935922","Whisps","Food/Events/Whisps" +"976759_6880042_1659731","Your cup made simple","Food/Events/Your cup made simple" +"976759_1760124","Express Bundles","Food/Express Bundles" +"976759_1760124_4797708","Knorr Taste Combos","Food/Express Bundles/Knorr Taste Combos" +"976759_5098771","Flower Shop","Food/Flower Shop" +"976759_5098771_6211901","All Flowers","Food/Flower Shop/All Flowers" +"976759_1089004","Food Gifts","Food/Food Gifts" +"976759_1089004_4687507","Alcohol Gift Sets","Food/Food Gifts/Alcohol Gift Sets" +"976759_1089004_9419891","All Food Gifts","Food/Food Gifts/All Food Gifts" +"976759_1089004_2606831","Bakery Food Gifts","Food/Food Gifts/Bakery Food Gifts" +"976759_1089004_9826991","Baking Gift Sets","Food/Food Gifts/Baking Gift Sets" +"976759_1089004_8458568","Birthday food gifts","Food/Food Gifts/Birthday food gifts" +"976759_1089004_5102585","Cheryl's Cookies","Food/Food Gifts/Cheryl's Cookies" +"976759_1089004_3881850","Chocolates & Candies Food Gifts","Food/Food Gifts/Chocolates & Candies Food Gifts" +"976759_1089004_3332380","Christmas Cookies","Food/Food Gifts/Christmas Cookies" +"976759_1089004_3993317","Coffee, Cocoa, & Tea Gifts","Food/Food Gifts/Coffee, Cocoa, & Tea Gifts" +"976759_1089004_4904268","Congratulations food gifts","Food/Food Gifts/Congratulations food gifts" +"976759_1089004_4920203","Cookies Food Gifts","Food/Food Gifts/Cookies Food Gifts" +"976759_1089004_2441036","Dips & Sauces Food Gifts","Food/Food Gifts/Dips & Sauces Food Gifts" +"976759_1089004_9951830","Drink Gift Sets","Food/Food Gifts/Drink Gift Sets" +"976759_1089004_5514629","Easter Food Gifts","Food/Food Gifts/Easter Food Gifts" +"976759_1089004_6109961","Family fun gifts","Food/Food Gifts/Family fun gifts" +"976759_1089004_2424807","Flowers","Food/Food Gifts/Flowers" +"976759_1089004_5154746","Food gift baskets","Food/Food Gifts/Food gift baskets" +"976759_1089004_5921853","Fruit Food Gifts","Food/Food Gifts/Fruit Food Gifts" +"976759_1089004_8749065","Get well food gifts","Food/Food Gifts/Get well food gifts" +"976759_1089004_2320550","Giant candy","Food/Food Gifts/Giant candy" +"976759_1089004_4606677","Gift sets under $15","Food/Food Gifts/Gift sets under $15" +"976759_1089004_9926587","Graduation Food Gifts","Food/Food Gifts/Graduation Food Gifts" +"976759_1089004_9764589","Halloween food gifts","Food/Food Gifts/Halloween food gifts" +"976759_1089004_3182456","Harry & David","Food/Food Gifts/Harry & David" +"976759_1089004_4083698","Holiday food gift","Food/Food Gifts/Holiday food gift" +"976759_1089004_5093401","Hot Sauce Gift Sets","Food/Food Gifts/Hot Sauce Gift Sets" +"976759_1089004_8849619","Meat & Cheeses Food Gifts","Food/Food Gifts/Meat & Cheeses Food Gifts" +"976759_1089004_7604997","New years eve food gifts","Food/Food Gifts/New years eve food gifts" +"976759_1089004_6908381","Popcorn Tins","Food/Food Gifts/Popcorn Tins" +"976759_1089004_4290642","Premium gifts under $40","Food/Food Gifts/Premium gifts under $40" +"976759_1089004_8253593","Shop all 1800 Flowers Brands","Food/Food Gifts/Shop all 1800 Flowers Brands" +"976759_1089004_9064083","Shop by recipient","Food/Food Gifts/Shop by recipient" +"976759_1089004_7193935","Snacks Food Gifts","Food/Food Gifts/Snacks Food Gifts" +"976759_1089004_1838504","Thank you Food Gifts","Food/Food Gifts/Thank you Food Gifts" +"976759_1089004_2256714","Thanksgiving food gifts","Food/Food Gifts/Thanksgiving food gifts" +"976759_1089004_3039928","The Popcorn Factory","Food/Food Gifts/The Popcorn Factory" +"976759_1089004_3811104","The Swiss Colony","Food/Food Gifts/The Swiss Colony" +"976759_1089004_9676770","Valentine food gifts","Food/Food Gifts/Valentine food gifts" +"976759_1089004_6976753","White Elephant Food Gifts","Food/Food Gifts/White Elephant Food Gifts" +"976759_7206944","Food Immunity Boosters & Remedies","Food/Food Immunity Boosters & Remedies" +"976759_2191820","Food Workpage","Food/Food Workpage" +"976759_2709924","Fresh Prepared Foods","Food/Fresh Prepared Foods" +"976759_976793","Fresh Produce","Food/Fresh Produce" +"976759_976793_7495549","Apple Buying Guide","Food/Fresh Produce/Apple Buying Guide" +"976759_976793_2398120","Back to School Fruits & Vegetables","Food/Fresh Produce/Back to School Fruits & Vegetables" +"976759_976793_2377593","Chocolate dips for strawberries & fruit","Food/Fresh Produce/Chocolate dips for strawberries & fruit" +"976759_976793_8402496","Cut Fruits & Vegetables","Food/Fresh Produce/Cut Fruits & Vegetables" +"976759_976793_2766916","Easter Produce","Food/Fresh Produce/Easter Produce" +"976759_976793_4655469","Fall Produce","Food/Fresh Produce/Fall Produce" +"976759_976793_2741843","Feel Good Produce","Food/Fresh Produce/Feel Good Produce" +"976759_976793_9756351","Fresh Fruits","Food/Fresh Produce/Fresh Fruits" +"976759_976793_3513831","Fresh Herbs","Food/Fresh Produce/Fresh Herbs" +"976759_976793_3624746","Fresh rollbacks & more","Food/Fresh Produce/Fresh rollbacks & more" +"976759_976793_8910423","Fresh Vegetables","Food/Fresh Produce/Fresh Vegetables" +"976759_976793_7083253","Game Time Produce","Food/Fresh Produce/Game Time Produce" +"976759_976793_3527553","Indoor Grown Produce","Food/Fresh Produce/Indoor Grown Produce" +"976759_976793_7080049","Leafy Greens","Food/Fresh Produce/Leafy Greens" +"976759_976793_2741468","Lettuce","Food/Fresh Produce/Lettuce" +"976759_976793_1401552","Mother's Day & Graduation Fresh Flowers & Food","Food/Fresh Produce/Mother's Day & Graduation Fresh Flowers & Food" +"976759_976793_1913529","Organic Produce","Food/Fresh Produce/Organic Produce" +"976759_976793_9538337","Packaged Salads, Dressings & Dips","Food/Fresh Produce/Packaged Salads, Dressings & Dips" +"976759_976793_6919650","Plant Based Protein & Tofu","Food/Fresh Produce/Plant Based Protein & Tofu" +"976759_976793_5306523","Salad Shop","Food/Fresh Produce/Salad Shop" +"976759_976793_3379628","Salad Shop","Food/Fresh Produce/Salad Shop" +"976759_976793_5346472","Spring Produce","Food/Fresh Produce/Spring Produce" +"976759_976793_5988105","Summer Produce","Food/Fresh Produce/Summer Produce" +"976759_7128585","From Our Brands","Food/From Our Brands" +"976759_7128585_5705317","Back to school from our brands","Food/From Our Brands/Back to school from our brands" +"976759_7128585_8911633","bettergoods","Food/From Our Brands/bettergoods" +"976759_7128585_8451673","Beverages","Food/From Our Brands/Beverages" +"976759_7128585_3237507","Clear American Beverages","Food/From Our Brands/Clear American Beverages" +"976759_7128585_8107226","Everyday Favorites","Food/From Our Brands/Everyday Favorites" +"976759_7128585_7241748","For your goals","Food/From Our Brands/For your goals" +"976759_7128585_7700021","Freshness Guaranteed Dinner under $6","Food/From Our Brands/Freshness Guaranteed Dinner under $6" +"976759_7128585_7269273","Freshness Guaranteed Food","Food/From Our Brands/Freshness Guaranteed Food" +"976759_7128585_1453712","From our brands bakery","Food/From Our Brands/From our brands bakery" +"976759_7128585_7037616","From our brands baking","Food/From Our Brands/From our brands baking" +"976759_7128585_3780465","From our brands grilling","Food/From Our Brands/From our brands grilling" +"976759_7128585_9834661","Great Value Food","Food/From Our Brands/Great Value Food" +"976759_7128585_2270849","Manual Shelves","Food/From Our Brands/Manual Shelves" +"976759_7128585_8382924","Marketside","Food/From Our Brands/Marketside" +"976759_7128585_4993620","Marketside Food","Food/From Our Brands/Marketside Food" +"976759_7128585_3070377","New from our food brands","Food/From Our Brands/New from our food brands" +"976759_7128585_8268373","Pantry from our brands","Food/From Our Brands/Pantry from our brands" +"976759_7128585_4364629","Prima Della Food","Food/From Our Brands/Prima Della Food" +"976759_7128585_1478350","Private Label Beverages","Food/From Our Brands/Private Label Beverages" +"976759_7128585_2981759","Private Label Fresh Food","Food/From Our Brands/Private Label Fresh Food" +"976759_7128585_8934463","Private Label Frozen Food","Food/From Our Brands/Private Label Frozen Food" +"976759_7128585_3996130","Private Label Snacks","Food/From Our Brands/Private Label Snacks" +"976759_7128585_6898270","Sam's Choice Food","Food/From Our Brands/Sam's Choice Food" +"976759_7128585_3963101","Shop All Private Brands","Food/From Our Brands/Shop All Private Brands" +"976759_7128585_4483648","Tailgating from our brands","Food/From Our Brands/Tailgating from our brands" +"976759_7128585_5237296","Terrifying Treats","Food/From Our Brands/Terrifying Treats" +"976759_976791","Frozen Foods","Food/Frozen Foods" +"976759_976791_9554867","Asian Meals & Appetizers","Food/Frozen Foods/Asian Meals & Appetizers" +"976759_976791_1272219","Frozen Appetizers & Snacks","Food/Frozen Foods/Frozen Appetizers & Snacks" +"976759_976791_2211243","Frozen Beverages & Ice","Food/Frozen Foods/Frozen Beverages & Ice" +"976759_976791_5477020","Frozen Bread","Food/Frozen Foods/Frozen Bread" +"976759_976791_1001417","Frozen Breakfast Food","Food/Frozen Foods/Frozen Breakfast Food" +"976759_976791_9551235","Frozen Desserts","Food/Frozen Foods/Frozen Desserts" +"976759_976791_8386772","Frozen Dumplings","Food/Frozen Foods/Frozen Dumplings" +"976759_976791_5624760","Frozen Fruits & Vegetables","Food/Frozen Foods/Frozen Fruits & Vegetables" +"976759_976791_8450834","Frozen International Meals","Food/Frozen Foods/Frozen International Meals" +"976759_976791_3486654","Frozen Kids Meals","Food/Frozen Foods/Frozen Kids Meals" +"976759_976791_6259087","Frozen Meals","Food/Frozen Foods/Frozen Meals" +"976759_976791_5295075","Frozen Meat, Seafood, & Vegetarian","Food/Frozen Foods/Frozen Meat, Seafood, & Vegetarian" +"976759_976791_7460341","Frozen Pasta","Food/Frozen Foods/Frozen Pasta" +"976759_976791_2072073","Frozen Pizza","Food/Frozen Foods/Frozen Pizza" +"976759_976791_6170090","Frozen Potatoes","Food/Frozen Foods/Frozen Potatoes" +"976759_976791_4874456","Frozen Side Dishes","Food/Frozen Foods/Frozen Side Dishes" +"976759_976791_9621049","Holiday Meal & Entertaining Essentials","Food/Frozen Foods/Holiday Meal & Entertaining Essentials" +"976759_976791_1518625","Ice Cream & Novelties","Food/Frozen Foods/Ice Cream & Novelties" +"976759_976791_1439236","Ice Cream Shop","Food/Frozen Foods/Ice Cream Shop" +"976759_976791_9875366","Manual Shelves","Food/Frozen Foods/Manual Shelves" +"976759_976791_8717684","New in Frozen","Food/Frozen Foods/New in Frozen" +"976759_4039609","Game Time Food","Food/Game Time Food" +"976759_3701649","Grab & Go","Food/Grab & Go" +"976759_3701649_2386763","Beverages Singles","Food/Grab & Go/Beverages Singles" +"976759_3701649_9074834","Single serve candy","Food/Grab & Go/Single serve candy" +"976759_3701649_1389057","Single serve gum","Food/Grab & Go/Single serve gum" +"976759_3701649_8653665","Single serve snacks","Food/Grab & Go/Single serve snacks" +"976759_2191683","Hawaiian food & beverage","Food/Hawaiian food & beverage" +"976759_2191683_1477680","Frozen food","Food/Hawaiian food & beverage/Frozen food" +"976759_3063079","Healthy Food Benefits","Food/Healthy Food Benefits" +"976759_3063079_8391853","Healthy Benefits All Food","Food/Healthy Food Benefits/Healthy Benefits All Food" +"976759_3063079_1850880","OTC Network Healthy Foods","Food/Healthy Food Benefits/OTC Network Healthy Foods" +"976759_3063079_3930756","UHC Food Benefit","Food/Healthy Food Benefits/UHC Food Benefit" +"976759_3934653","Holiday baked goods","Food/Holiday baked goods" +"976759_7404240","International Food","Food/International Food" +"976759_7404240_1868664","AAPI Owned","Food/International Food/AAPI Owned" +"976759_7404240_1228102","Asian Foods","Food/International Food/Asian Foods" +"976759_7404240_7048976","Bachan's","Food/International Food/Bachan's" +"976759_7404240_8604552","Cajun","Food/International Food/Cajun" +"976759_7404240_2497056","European & Mediterranean","Food/International Food/European & Mediterranean" +"976759_7404240_8361972","Global Game Time Food","Food/International Food/Global Game Time Food" +"976759_7404240_8419886","Global Sauces & Spices","Food/International Food/Global Sauces & Spices" +"976759_7404240_9002484","Global Sweets & Candies","Food/International Food/Global Sweets & Candies" +"976759_7404240_2694309","Hispanic food","Food/International Food/Hispanic food" +"976759_7404240_3710367","Hispanic-Owned Food Brands","Food/International Food/Hispanic-Owned Food Brands" +"976759_7404240_7666074","Indian Foods","Food/International Food/Indian Foods" +"976759_7404240_2559136","International beverages","Food/International Food/International beverages" +"976759_7404240_1644664","International Picnic Favorites","Food/International Food/International Picnic Favorites" +"976759_7404240_5880939","International sauces","Food/International Food/International sauces" +"976759_7404240_1341357","International snacks & candy","Food/International Food/International snacks & candy" +"976759_7404240_6371570","Latin and Hispanic Foods","Food/International Food/Latin and Hispanic Foods" +"976759_7404240_9281017","Latin brands","Food/International Food/Latin brands" +"976759_7404240_4553385","Manual Shelves","Food/International Food/Manual Shelves" +"976759_7404240_5427632","Ocean's Halo","Food/International Food/Ocean's Halo" +"976759_7404240_3843722","Tamales","Food/International Food/Tamales" +"976759_5593013","LocalFinds Food","Food/LocalFinds Food" +"976759_5593013_9102530","LF Bakery","Food/LocalFinds Food/LF Bakery" +"976759_5593013_1745509","LocalFInds 99 Ranch Market","Food/LocalFinds Food/LocalFInds 99 Ranch Market" +"976759_5593013_8664922","LocalFinds Alcohol","Food/LocalFinds Food/LocalFinds Alcohol" +"976759_5593013_6558596","LocalFinds Bakery","Food/LocalFinds Food/LocalFinds Bakery" +"976759_5593013_4242268","LocalFinds International Food","Food/LocalFinds Food/LocalFinds International Food" +"976759_5593013_8412834","LocalFinds Specialty Food","Food/LocalFinds Food/LocalFinds Specialty Food" +"976759_8175310","Louisiana foods","Food/Louisiana foods" +"976759_7123943","Meal Delivery Services","Food/Meal Delivery Services" +"976759_7123943_1279068","All Meal Delivery Services","Food/Meal Delivery Services/All Meal Delivery Services" +"976759_7123943_6655570","Farm Crates","Food/Meal Delivery Services/Farm Crates" +"976759_9569500","Meat & Seafood","Food/Meat & Seafood" +"976759_9569500_3865404","$10 - $15","Food/Meat & Seafood/$10 - $15" +"976759_9569500_3827508","$15 - $20","Food/Meat & Seafood/$15 - $20" +"976759_9569500_2941132","Bacon, Hot Dogs, & Sausages","Food/Meat & Seafood/Bacon, Hot Dogs, & Sausages" +"976759_9569500_5889208","Baked Cod with Tomato & Basil","Food/Meat & Seafood/Baked Cod with Tomato & Basil" +"976759_9569500_1730435","Beef & Lamb","Food/Meat & Seafood/Beef & Lamb" +"976759_9569500_1001443","Chicken","Food/Meat & Seafood/Chicken" +"976759_9569500_7656626","Easter Main Meals","Food/Meat & Seafood/Easter Main Meals" +"976759_9569500_3315474","Easy Chili Meals","Food/Meat & Seafood/Easy Chili Meals" +"976759_9569500_4281241","Easy Taco Meals","Food/Meat & Seafood/Easy Taco Meals" +"976759_9569500_9764881","Easy Weeknight Dinners","Food/Meat & Seafood/Easy Weeknight Dinners" +"976759_9569500_2449072","EBT eligible items","Food/Meat & Seafood/EBT eligible items" +"976759_9569500_7038330","Fresh Seafood","Food/Meat & Seafood/Fresh Seafood" +"976759_9569500_4788736","Frozen Fish","Food/Meat & Seafood/Frozen Fish" +"976759_9569500_2105015","Get Your Grill On","Food/Meat & Seafood/Get Your Grill On" +"976759_9569500_3284566","Great Low Prices","Food/Meat & Seafood/Great Low Prices" +"976759_9569500_7599413","Grill it","Food/Meat & Seafood/Grill it" +"976759_9569500_7188777","Grilling Mains","Food/Meat & Seafood/Grilling Mains" +"976759_9569500_7144474","Health Inspired Meal Prep","Food/Meat & Seafood/Health Inspired Meal Prep" +"976759_9569500_7227878","Hearty Meat & Seafood","Food/Meat & Seafood/Hearty Meat & Seafood" +"976759_9569500_7651244","Hispanic Meat & Seafood","Food/Meat & Seafood/Hispanic Meat & Seafood" +"976759_9569500_9448605","Holiday Mains Buying Guide","Food/Meat & Seafood/Holiday Mains Buying Guide" +"976759_9569500_7630660","Lean Proteins","Food/Meat & Seafood/Lean Proteins" +"976759_9569500_2291850","Lobster and Crab","Food/Meat & Seafood/Lobster and Crab" +"976759_9569500_7460246","Lunar New Year Top Picks","Food/Meat & Seafood/Lunar New Year Top Picks" +"976759_9569500_2859606","Main Meals for Mom","Food/Meat & Seafood/Main Meals for Mom" +"976759_9569500_3501677","Mains for mom","Food/Meat & Seafood/Mains for mom" +"976759_9569500_4611327","Manual Shelves Meat & Seafood","Food/Meat & Seafood/Manual Shelves Meat & Seafood" +"976759_9569500_5667623","Meat & Seafood","Food/Meat & Seafood/Meat & Seafood" +"976759_9569500_6677247","Meat & Seafood Buying Guide","Food/Meat & Seafood/Meat & Seafood Buying Guide" +"976759_9569500_2907173","Meat and Seafood Ship to Home","Food/Meat & Seafood/Meat and Seafood Ship to Home" +"976759_9569500_7166541","New Year's Eve Apps","Food/Meat & Seafood/New Year's Eve Apps" +"976759_9569500_2603901","Oktoberfest Meat & Seafood","Food/Meat & Seafood/Oktoberfest Meat & Seafood" +"976759_9569500_5574987","Organic & Plant-Based","Food/Meat & Seafood/Organic & Plant-Based" +"976759_9569500_8154340","Plant Based Meat Options","Food/Meat & Seafood/Plant Based Meat Options" +"976759_9569500_1044143","Pork","Food/Meat & Seafood/Pork" +"976759_9569500_2543738","Pork Buying Guide","Food/Meat & Seafood/Pork Buying Guide" +"976759_9569500_6747100","Private Brand Grilling","Food/Meat & Seafood/Private Brand Grilling" +"976759_9569500_1001442","Seafood","Food/Meat & Seafood/Seafood" +"976759_9569500_1765164","Seafood Buying Guide","Food/Meat & Seafood/Seafood Buying Guide" +"976759_9569500_3410728","Seafood Meal Options","Food/Meat & Seafood/Seafood Meal Options" +"976759_9569500_4121939","Slow Cooking Meals","Food/Meat & Seafood/Slow Cooking Meals" +"976759_9569500_9352731","St. Patrick's Day Mains","Food/Meat & Seafood/St. Patrick's Day Mains" +"976759_9569500_7530377","Surf & Turf","Food/Meat & Seafood/Surf & Turf" +"976759_9569500_5826277","Sustainable Seafood","Food/Meat & Seafood/Sustainable Seafood" +"976759_9569500_7109525","Top Lent Picks","Food/Meat & Seafood/Top Lent Picks" +"976759_9569500_3765252","Turkey","Food/Meat & Seafood/Turkey" +"976759_9569500_8361663","Under $10","Food/Meat & Seafood/Under $10" +"976759_4143264","New Food Items","Food/New Food Items" +"976759_4143264_4136709","New in Beverages","Food/New Food Items/New in Beverages" +"976759_4143264_3215491","New in Snacks & Candy","Food/New Food Items/New in Snacks & Candy" +"976759_1228024","Organic Shop","Food/Organic Shop" +"976759_1228024_4995581","Organic Baby Food","Food/Organic Shop/Organic Baby Food" +"976759_1228024_3864282","Organic Beverages","Food/Organic Shop/Organic Beverages" +"976759_1228024_4985135","Organic Bread & Bakery","Food/Organic Shop/Organic Bread & Bakery" +"976759_1228024_3963019","Organic Dairy & Eggs","Food/Organic Shop/Organic Dairy & Eggs" +"976759_1228024_3042563","Organic Frozen","Food/Organic Shop/Organic Frozen" +"976759_1228024_1544474","Organic Fruits & Vegetables","Food/Organic Shop/Organic Fruits & Vegetables" +"976759_1228024_9713209","Organic Meat","Food/Organic Shop/Organic Meat" +"976759_1228024_2121347","Organic Pantry","Food/Organic Shop/Organic Pantry" +"976759_1228024_9181234","Organic Snacks","Food/Organic Shop/Organic Snacks" +"976759_1228024_9522882","Organic Supplements","Food/Organic Shop/Organic Supplements" +"976759_976794","Pantry","Food/Pantry" +"976759_1344638","Pantry, Snacks & Beverages","Food/Pantry, Snacks & Beverages" +"976759_976794_3398981","A Dozen Cousins","Food/Pantry/A Dozen Cousins" +"976759_976794_8370750","Back to routines","Food/Pantry/Back to routines" +"976759_976794_5437393","BBQ Sauces, Seasonings, and Marinades","Food/Pantry/BBQ Sauces, Seasonings, and Marinades" +"976759_976794_3758847","Beans and Rice","Food/Pantry/Beans and Rice" +"976759_976794_8259339","Beef stew","Food/Pantry/Beef stew" +"976759_976794_6289444","Blue Apron","Food/Pantry/Blue Apron" +"976759_976794_1358283","Buffalo chicken dip","Food/Pantry/Buffalo chicken dip" +"976759_976794_7062283","Bulk food","Food/Pantry/Bulk food" +"976759_976794_6094019","Burger and hot dog toppings","Food/Pantry/Burger and hot dog toppings" +"976759_976794_5856360","Cajun","Food/Pantry/Cajun" +"976759_976794_7433209","Canned goods","Food/Pantry/Canned goods" +"976759_976794_5245470","Chicken and tuna salads","Food/Pantry/Chicken and tuna salads" +"976759_976794_7975063","Chicken Parmesan","Food/Pantry/Chicken Parmesan" +"976759_976794_4718013","Chicken pot pie","Food/Pantry/Chicken pot pie" +"976759_976794_3751927","Cinco de Mayo Pantry","Food/Pantry/Cinco de Mayo Pantry" +"976759_976794_3534276","Classic soups","Food/Pantry/Classic soups" +"976759_976794_4525172","Comfort food","Food/Pantry/Comfort food" +"976759_976794_6025364","Conagra brands pantry","Food/Pantry/Conagra brands pantry" +"976759_976794_7981173","Condiments","Food/Pantry/Condiments" +"976759_976794_4649724","Cooking oils & vinegar","Food/Pantry/Cooking oils & vinegar" +"976759_976794_6172240","Date night picks","Food/Pantry/Date night picks" +"976759_976794_9242245","Dinner sides","Food/Pantry/Dinner sides" +"976759_976794_9474424","Dips","Food/Pantry/Dips" +"976759_976794_9565459","DIY Bowl Bases","Food/Pantry/DIY Bowl Bases" +"976759_976794_3229044","DIY Bowl Proteins & Produce","Food/Pantry/DIY Bowl Proteins & Produce" +"976759_976794_5871261","DIY Bowl Sauces and Spices","Food/Pantry/DIY Bowl Sauces and Spices" +"976759_976794_7262359","DIY Pizza","Food/Pantry/DIY Pizza" +"976759_976794_1001478","Dried Beans","Food/Pantry/Dried Beans" +"976759_976794_2816733","Enchiladas and Tamales","Food/Pantry/Enchiladas and Tamales" +"976759_976794_3736000","Feel Good Pasta","Food/Pantry/Feel Good Pasta" +"976759_976794_3881801","Food Essentials","Food/Pantry/Food Essentials" +"976759_976794_4207761","Fruit butters","Food/Pantry/Fruit butters" +"976759_976794_5687054","Game day dips","Food/Pantry/Game day dips" +"976759_976794_8041107","Game day wings & nachos","Food/Pantry/Game day wings & nachos" +"976759_976794_6311318","Gametime Pantry Essentials","Food/Pantry/Gametime Pantry Essentials" +"976759_976794_2002490","Great Value pantry deals","Food/Pantry/Great Value pantry deals" +"976759_976794_2802466","Grilling sides","Food/Pantry/Grilling sides" +"976759_976794_5877916","Gumbo and Jambalaya","Food/Pantry/Gumbo and Jambalaya" +"976759_976794_3029941","Herbs, spices & seasoning mixes","Food/Pantry/Herbs, spices & seasoning mixes" +"976759_976794_5459197","Honey","Food/Pantry/Honey" +"976759_976794_3781457","Hurricane food","Food/Pantry/Hurricane food" +"976759_976794_3854465","International foods","Food/Pantry/International foods" +"976759_976794_7295171","Jams, jellies & preserves","Food/Pantry/Jams, jellies & preserves" +"976759_976794_5354284","Jarred, Spreads, and Canned","Food/Pantry/Jarred, Spreads, and Canned" +"976759_976794_5737430","Kid approved dinners","Food/Pantry/Kid approved dinners" +"976759_976794_9050520","Kids heat and eat","Food/Pantry/Kids heat and eat" +"976759_976794_2074160","Lasagna","Food/Pantry/Lasagna" +"976759_976794_9657226","Mac & cheese mix-ins","Food/Pantry/Mac & cheese mix-ins" +"976759_976794_9113228","Manual Shelves","Food/Pantry/Manual Shelves" +"976759_976794_3981898","Meal starters","Food/Pantry/Meal starters" +"976759_976794_2945881","Microwave in minutes","Food/Pantry/Microwave in minutes" +"976759_976794_6601527","Mix-ins","Food/Pantry/Mix-ins" +"976759_976794_3438184","New in pantry","Food/Pantry/New in pantry" +"976759_976794_1834331","New soups","Food/Pantry/New soups" +"976759_976794_5614446","Packaged meals & Side dishes","Food/Pantry/Packaged meals & Side dishes" +"976759_976794_4252947","Pantry Basics","Food/Pantry/Pantry Basics" +"976759_976794_3338831","Pantry Brands","Food/Pantry/Pantry Brands" +"976759_976794_5176385","Pantry Essentials","Food/Pantry/Pantry Essentials" +"976759_976794_5728616","Pantry holiday stock up","Food/Pantry/Pantry holiday stock up" +"976759_976794_2807108","Pantry meal essentials","Food/Pantry/Pantry meal essentials" +"976759_976794_6130000","Pantry staples","Food/Pantry/Pantry staples" +"976759_976794_9527734","Pantry stock up","Food/Pantry/Pantry stock up" +"976759_976794_8772952","Party spreads","Food/Pantry/Party spreads" +"976759_976794_9940868","Pasta","Food/Pantry/Pasta" +"976759_976794_3246797","Pasta","Food/Pantry/Pasta" +"976759_976794_5403011","Pasta & pizza","Food/Pantry/Pasta & pizza" +"976759_976794_3642122","Peanut butter & spreads","Food/Pantry/Peanut butter & spreads" +"976759_976794_2441188","Pillsbury pizza night","Food/Pantry/Pillsbury pizza night" +"976759_976794_4308762","Pizza & burgers","Food/Pantry/Pizza & burgers" +"976759_976794_1262947","Pizzadilla","Food/Pantry/Pizzadilla" +"976759_976794_4918223","Precooked Pasta","Food/Pantry/Precooked Pasta" +"976759_976794_6576992","Proper Good Pasta","Food/Pantry/Proper Good Pasta" +"976759_976794_1001474","Rice","Food/Pantry/Rice" +"976759_976794_4879140","Rice, grains & dried beans","Food/Pantry/Rice, grains & dried beans" +"976759_976794_5580286","Salad dressings & toppings","Food/Pantry/Salad dressings & toppings" +"976759_976794_5883323","Salmon burgers","Food/Pantry/Salmon burgers" +"976759_976794_2223973","Sauces & marinades","Food/Pantry/Sauces & marinades" +"976759_976794_4283634","Sauces, mixes and more","Food/Pantry/Sauces, mixes and more" +"976759_976794_8010416","Seafood Boils","Food/Pantry/Seafood Boils" +"976759_976794_2469576","Siete Foods","Food/Pantry/Siete Foods" +"976759_976794_9125716","Simple Seafood","Food/Pantry/Simple Seafood" +"976759_976794_8248961","Soup","Food/Pantry/Soup" +"976759_976794_4851034","Soup & Chili","Food/Pantry/Soup & Chili" +"976759_976794_4284865","Souptober","Food/Pantry/Souptober" +"976759_976794_9451190","Spinach artichoke dip","Food/Pantry/Spinach artichoke dip" +"976759_976794_1522698","Stir fry rice and noodles","Food/Pantry/Stir fry rice and noodles" +"976759_976794_7882772","Taco's","Food/Pantry/Taco's" +"976759_976794_7250697","Tex Mex","Food/Pantry/Tex Mex" +"976759_976794_7654113","Tex Mex, Latin Seasonings and Sauces","Food/Pantry/Tex Mex, Latin Seasonings and Sauces" +"976759_976794_4610650","Thanksgiving Pantry Stock Up","Food/Pantry/Thanksgiving Pantry Stock Up" +"976759_976794_3068348","Tostadas","Food/Pantry/Tostadas" +"976759_976794_6413040","Tuna dishes","Food/Pantry/Tuna dishes" +"976759_976794_7534725","Wings & Nachos","Food/Pantry/Wings & Nachos" +"976759_8635300","Pasta Meals","Food/Pasta Meals" +"976759_1863726","Pringles & Cheez-It","Food/Pringles & Cheez-It" +"976759_3626943","S'mores","Food/S'mores" +"976759_1567409","Seasonal Grocery","Food/Seasonal Grocery" +"976759_1567409_7980092","Back to College Food","Food/Seasonal Grocery/Back to College Food" +"976759_1567409_8349567","Boil","Food/Seasonal Grocery/Boil" +"976759_1567409_2114017","Breakfast","Food/Seasonal Grocery/Breakfast" +"976759_1567409_2686773","Christmas Foods","Food/Seasonal Grocery/Christmas Foods" +"976759_1567409_8961483","Cinco de Mayo Food","Food/Seasonal Grocery/Cinco de Mayo Food" +"976759_1567409_3591080","College & Beyond Snacks & Beverages","Food/Seasonal Grocery/College & Beyond Snacks & Beverages" +"976759_1567409_3543723","Dinner","Food/Seasonal Grocery/Dinner" +"976759_1567409_6014885","Easter Foods","Food/Seasonal Grocery/Easter Foods" +"976759_1567409_6592518","Fall Foods","Food/Seasonal Grocery/Fall Foods" +"976759_1567409_5738183","Family movie night","Food/Seasonal Grocery/Family movie night" +"976759_1567409_2533414","Fathers Day Food","Food/Seasonal Grocery/Fathers Day Food" +"976759_1567409_6037937","Food Grilling Savings","Food/Seasonal Grocery/Food Grilling Savings" +"976759_1567409_2240892","Food Guides","Food/Seasonal Grocery/Food Guides" +"976759_1567409_3809225","Fresh Fall Pumpkins & Flowers","Food/Seasonal Grocery/Fresh Fall Pumpkins & Flowers" +"976759_1567409_3282877","Gametime Food","Food/Seasonal Grocery/Gametime Food" +"976759_1567409_8808777","Grilling Foods","Food/Seasonal Grocery/Grilling Foods" +"976759_1567409_2107086","Halloween Food","Food/Seasonal Grocery/Halloween Food" +"976759_1567409_6741138","Hanukkah Food","Food/Seasonal Grocery/Hanukkah Food" +"976759_1567409_3786819","Health Inspired Weeknight Dinner","Food/Seasonal Grocery/Health Inspired Weeknight Dinner" +"976759_1567409_5449716","Holiday Breakfast Essentials","Food/Seasonal Grocery/Holiday Breakfast Essentials" +"976759_1567409_6637513","Holiday Desserts","Food/Seasonal Grocery/Holiday Desserts" +"976759_1567409_7998220","Holiday Food","Food/Seasonal Grocery/Holiday Food" +"976759_1567409_4687377","Keto Desserts","Food/Seasonal Grocery/Keto Desserts" +"976759_1567409_7966149","Kids' Snacks & Lunches","Food/Seasonal Grocery/Kids' Snacks & Lunches" +"976759_1567409_3866200","Lunar New Year Foods","Food/Seasonal Grocery/Lunar New Year Foods" +"976759_1567409_4434825","Mardi Gras Party Food","Food/Seasonal Grocery/Mardi Gras Party Food" +"976759_1567409_7397770","Me & The Bees","Food/Seasonal Grocery/Me & The Bees" +"976759_1567409_5702155","Mother's Day Food","Food/Seasonal Grocery/Mother's Day Food" +"976759_1567409_6196875","National Heat Safety Coalition","Food/Seasonal Grocery/National Heat Safety Coalition" +"976759_1567409_4757643","Neilly's","Food/Seasonal Grocery/Neilly's" +"976759_1567409_3170630","New Year New You","Food/Seasonal Grocery/New Year New You" +"976759_1567409_9050139","New Year's Eve Food","Food/Seasonal Grocery/New Year's Eve Food" +"976759_1567409_2168938","Pantry Seasonal","Food/Seasonal Grocery/Pantry Seasonal" +"976759_1567409_3120670","Passover Foods","Food/Seasonal Grocery/Passover Foods" +"976759_1567409_4021557","Passover Seder","Food/Seasonal Grocery/Passover Seder" +"976759_1567409_6818540","Pepsico Back to School","Food/Seasonal Grocery/Pepsico Back to School" +"976759_1567409_8293700","Pi Day","Food/Seasonal Grocery/Pi Day" +"976759_1567409_7412754","Plant-Based Sides","Food/Seasonal Grocery/Plant-Based Sides" +"976759_1567409_7591100","PRIDE Party","Food/Seasonal Grocery/PRIDE Party" +"976759_1567409_9760211","Ramadan Food","Food/Seasonal Grocery/Ramadan Food" +"976759_1567409_9524483","Rosh Hashanah","Food/Seasonal Grocery/Rosh Hashanah" +"976759_1567409_7356816","S'mores","Food/Seasonal Grocery/S'mores" +"976759_1567409_6270627","Slow Cooker Essentials","Food/Seasonal Grocery/Slow Cooker Essentials" +"976759_1567409_5202257","Solar Eclipse Food","Food/Seasonal Grocery/Solar Eclipse Food" +"976759_1567409_1302668","Spring flavors food","Food/Seasonal Grocery/Spring flavors food" +"976759_1567409_5200930","Spring Flavors Food","Food/Seasonal Grocery/Spring Flavors Food" +"976759_1567409_9279251","Spring Grilling Foods","Food/Seasonal Grocery/Spring Grilling Foods" +"976759_1567409_7139732","St. Patrick's Day Food","Food/Seasonal Grocery/St. Patrick's Day Food" +"976759_1567409_3534625","Summer Flavors","Food/Seasonal Grocery/Summer Flavors" +"976759_1567409_6175095","Summer Grilling Food","Food/Seasonal Grocery/Summer Grilling Food" +"976759_1567409_6287342","Thanksgiving Foods","Food/Seasonal Grocery/Thanksgiving Foods" +"976759_1567409_6237396","Valentine's Day Food","Food/Seasonal Grocery/Valentine's Day Food" +"976759_1567409_8913642","Yom Kippur","Food/Seasonal Grocery/Yom Kippur" +"976759_1731677","Shop All Baking","Food/Shop All Baking" +"976759_1959090","Shop All Bread and Bakery","Food/Shop All Bread and Bakery" +"976759_9508401","Shop All Breakfast","Food/Shop All Breakfast" +"976759_5465032","Shop All Candy","Food/Shop All Candy" +"976759_9113477","Shop All Coffee","Food/Shop All Coffee" +"976759_7581029","Shop All Dairy","Food/Shop All Dairy" +"976759_5596430","Shop All Deli","Food/Shop All Deli" +"976759_1996374","Shop All Frozen","Food/Shop All Frozen" +"976759_3499685","Shop All Meat and Seafood","Food/Shop All Meat and Seafood" +"976759_2840383","Shop All Pantry","Food/Shop All Pantry" +"976759_8373901","Shop All Produce","Food/Shop All Produce" +"976759_5892971","Shop by Brand","Food/Shop by Brand" +"976759_5892971_6443712","Badia Spices","Food/Shop by Brand/Badia Spices" +"976759_5892971_9111954","F. Gaviña & Sons","Food/Shop by Brand/F. Gaviña & Sons" +"976759_7786229","Shop Kellogg's","Food/Shop Kellogg's" +"976759_7485418","Shop More Than Your Store","Food/Shop More Than Your Store" +"976759_8249800","Smart Suggestion","Food/Smart Suggestion" +"976759_3226996","Smart Suggestions OG Food","Food/Smart Suggestions OG Food" +"976759_2101546","Smoothies & Shakes","Food/Smoothies & Shakes" +"976759_976787","Snacks, Cookies & Chips","Food/Snacks, Cookies & Chips" +"976759_976787_9180367","@Manual Shelves Snacks","Food/Snacks, Cookies & Chips/@Manual Shelves Snacks" +"976759_976787_4480897","Be Happy Snacks","Food/Snacks, Cookies & Chips/Be Happy Snacks" +"976759_976787_1001405","Beef Jerky and Dried Meats","Food/Snacks, Cookies & Chips/Beef Jerky and Dried Meats" +"976759_976787_6167552","Bimbo","Food/Snacks, Cookies & Chips/Bimbo" +"976759_976787_7419236","Buffalo Flavored Snacks","Food/Snacks, Cookies & Chips/Buffalo Flavored Snacks" +"976759_976787_1001390","Chips","Food/Snacks, Cookies & Chips/Chips" +"976759_976787_1001391","Cookies","Food/Snacks, Cookies & Chips/Cookies" +"976759_976787_1001392","Crackers","Food/Snacks, Cookies & Chips/Crackers" +"976759_976787_1001393","Dips & Spreads","Food/Snacks, Cookies & Chips/Dips & Spreads" +"976759_976787_3585494","Doritos Roulette","Food/Snacks, Cookies & Chips/Doritos Roulette" +"976759_976787_4962467","Dried Fruits","Food/Snacks, Cookies & Chips/Dried Fruits" +"976759_976787_2058748","Frito Lay Variety Packs","Food/Snacks, Cookies & Chips/Frito Lay Variety Packs" +"976759_976787_1044133","Fruit Cups","Food/Snacks, Cookies & Chips/Fruit Cups" +"976759_976787_2667401","Fruit Pouches","Food/Snacks, Cookies & Chips/Fruit Pouches" +"976759_976787_1001395","Fruit Snacks","Food/Snacks, Cookies & Chips/Fruit Snacks" +"976759_976787_4507832","Great Value Applesauce","Food/Snacks, Cookies & Chips/Great Value Applesauce" +"976759_976787_9721503","Great Value Beef Jerky","Food/Snacks, Cookies & Chips/Great Value Beef Jerky" +"976759_976787_4336918","Great Value Fruit Cups","Food/Snacks, Cookies & Chips/Great Value Fruit Cups" +"976759_976787_2011342","Great Value Pudding","Food/Snacks, Cookies & Chips/Great Value Pudding" +"976759_976787_7023550","Great Value Snack Cakes","Food/Snacks, Cookies & Chips/Great Value Snack Cakes" +"976759_976787_7711625","Great Value Snacks","Food/Snacks, Cookies & Chips/Great Value Snacks" +"976759_976787_9773837","Great Value Trail Mix","Food/Snacks, Cookies & Chips/Great Value Trail Mix" +"976759_976787_9830353","Health-inspired Snacks","Food/Snacks, Cookies & Chips/Health-inspired Snacks" +"976759_976787_8970841","Little Bites","Food/Snacks, Cookies & Chips/Little Bites" +"976759_976787_1585364","Little Debbie Snacks","Food/Snacks, Cookies & Chips/Little Debbie Snacks" +"976759_976787_8698150","Marinela","Food/Snacks, Cookies & Chips/Marinela" +"976759_976787_1970158","Mexican Snack Cakes","Food/Snacks, Cookies & Chips/Mexican Snack Cakes" +"976759_976787_6543342","Multipack Snacks","Food/Snacks, Cookies & Chips/Multipack Snacks" +"976759_976787_9175273","Multipack Snacks Shipped to You","Food/Snacks, Cookies & Chips/Multipack Snacks Shipped to You" +"976759_976787_1001406","Nuts, Trail Mix & Seeds","Food/Snacks, Cookies & Chips/Nuts, Trail Mix & Seeds" +"976759_976787_1841284","Pepsi Super Bowl Place Holder","Food/Snacks, Cookies & Chips/Pepsi Super Bowl Place Holder" +"976759_976787_1400598","Pop-tarts","Food/Snacks, Cookies & Chips/Pop-tarts" +"976759_976787_1001407","Popcorn","Food/Snacks, Cookies & Chips/Popcorn" +"976759_976787_1044156","Pretzels","Food/Snacks, Cookies & Chips/Pretzels" +"976759_976787_9523882","Pudding & Gelatin","Food/Snacks, Cookies & Chips/Pudding & Gelatin" +"976759_976787_5433270","Puffed Snacks","Food/Snacks, Cookies & Chips/Puffed Snacks" +"976759_976787_5472713","Ruffles and LeBron James Family Foundation","Food/Snacks, Cookies & Chips/Ruffles and LeBron James Family Foundation" +"976759_976787_7672832","Salsa & Dips","Food/Snacks, Cookies & Chips/Salsa & Dips" +"976759_976787_1983636","Shop All Snacks","Food/Snacks, Cookies & Chips/Shop All Snacks" +"976759_976787_3225216","Snack & Sip Deals","Food/Snacks, Cookies & Chips/Snack & Sip Deals" +"976759_976787_1044154","Snack Bars","Food/Snacks, Cookies & Chips/Snack Bars" +"976759_976787_1001398","Snack Cakes","Food/Snacks, Cookies & Chips/Snack Cakes" +"976759_976787_2452884","Snack Mixes","Food/Snacks, Cookies & Chips/Snack Mixes" +"976759_976787_8191884","Snacks and Beverages $1","Food/Snacks, Cookies & Chips/Snacks and Beverages $1" +"976759_976787_3455839","Sugar-Free Snacks","Food/Snacks, Cookies & Chips/Sugar-Free Snacks" +"976759_976787_2353756","Summer Pepsi","Food/Snacks, Cookies & Chips/Summer Pepsi" +"976759_976787_7289509","Tastykake","Food/Snacks, Cookies & Chips/Tastykake" +"976759_976787_4929293","Trail Mix","Food/Snacks, Cookies & Chips/Trail Mix" +"976759_976787_6190886","Variety Pack Snacks","Food/Snacks, Cookies & Chips/Variety Pack Snacks" +"976759_976787_7951322","Wonder Snack Cakes","Food/Snacks, Cookies & Chips/Wonder Snack Cakes" +"976759_8040315","SNAP EBT Grocery Delivery and Pickup","Food/SNAP EBT Grocery Delivery and Pickup" +"976759_5148628","Specialty Shops","Food/Specialty Shops" +"976759_5148628_1228025","International Foods","Food/Specialty Shops/International Foods" +"976759_5148628_8049640","Party Food Shop","Food/Specialty Shops/Party Food Shop" +"976759_5148628_4569562","Premium Chocolate Shop","Food/Specialty Shops/Premium Chocolate Shop" +"976759_5148628_5831001","Premium Coffee Shop","Food/Specialty Shops/Premium Coffee Shop" +"976759_5148628_4583057","Wellness Foods","Food/Specialty Shops/Wellness Foods" +"976759_1511546","Super Bowl LII Starts Here","Food/Super Bowl LII Starts Here" +"976759_4321481","Testing Season","Food/Testing Season" +"976759_4321481_5471594","Fueling Beverages","Food/Testing Season/Fueling Beverages" +"976759_3544642","Texas foods","Food/Texas foods" +"976759_8757347","Thanksgiving food","Food/Thanksgiving food" +"976759_9630120","Trident Vibes with Sour Patch Kids","Food/Trident Vibes with Sour Patch Kids" +"976759_5283635","Value packs","Food/Value packs" +"976759_5283635_8482223","Baking","Food/Value packs/Baking" +"976759_5283635_7212622","Beverages","Food/Value packs/Beverages" +"976759_5283635_9409101","Canned & jarred","Food/Value packs/Canned & jarred" +"976759_5283635_5117494","Cereals & toaster pastries","Food/Value packs/Cereals & toaster pastries" +"976759_5283635_3000295","Coffee & tea multi-packs","Food/Value packs/Coffee & tea multi-packs" +"976759_5283635_4188257","Condiments & seasonings","Food/Value packs/Condiments & seasonings" +"976759_5283635_7855286","Packaged meals & sides","Food/Value packs/Packaged meals & sides" +"976759_5283635_6464562","Pantry","Food/Value packs/Pantry" +"976759_5283635_8130611","Snacks","Food/Value packs/Snacks" +"976759_5283635_9706814","Soups & broths","Food/Value packs/Soups & broths" +"976759_6298690","Weekly Trips","Food/Weekly Trips" +"976759_6298690_5681029","Dinner tonight","Food/Weekly Trips/Dinner tonight" +"976759_6298690_1735450","Groceries & Essentials","Food/Weekly Trips/Groceries & Essentials" +"976759_6298690_2366673","Recipe Ideas","Food/Weekly Trips/Recipe Ideas" +"976759_6298690_4186908","Weekly Ad","Food/Weekly Trips/Weekly Ad" diff --git a/WalmartPipeline/TaxonomyBrowsing/Note.txt b/WalmartPipeline/TaxonomyBrowsing/Note.txt new file mode 100644 index 0000000..1a3ea75 --- /dev/null +++ b/WalmartPipeline/TaxonomyBrowsing/Note.txt @@ -0,0 +1,2 @@ +Run generateTaxonomy.js to create a taxonomy.json file. +Then run browseTaxonomyExport.js and use that to output all subcategories under Food and Food_Grocery. \ No newline at end of file diff --git a/WalmartPipeline/TaxonomyBrowsing/browseTaxonomyExport.js b/WalmartPipeline/TaxonomyBrowsing/browseTaxonomyExport.js new file mode 100644 index 0000000..0928e98 --- /dev/null +++ b/WalmartPipeline/TaxonomyBrowsing/browseTaxonomyExport.js @@ -0,0 +1,251 @@ +import fs from 'fs'; +import readline from 'readline'; + +/* ---------- UX helpers ---------- */ +const sleep = (ms) => new Promise((res) => setTimeout(res, ms)); + +/* ---------- Load taxonomy ---------- */ +function loadTaxonomy(filepath) { + const text = fs.readFileSync(filepath, 'utf8'); + let data = JSON.parse(text); + if (typeof data === 'string') data = JSON.parse(data); // double-encoded + return data; +} + +function escapeCSV(v) { + const s = String(v ?? ''); + return `"${s.replaceAll('"', '""')}"`; +} + +function sanitizeFilename(s) { + return ( + String(s ?? 'export') + .trim() + .replaceAll(/[^\w\-]+/g, '_') + .replaceAll(/_+/g, '_') + .replaceAll(/^_+|_+$/g, '') + .slice(0, 80) || 'export' + ); +} + +/* ---------- Tree utilities ---------- */ +function walkCollect(node, out) { + out.push({ + id: node.id ?? '', + name: node.name ?? '', + path: node.path ?? node.name ?? '', + }); + for (const child of node.children ?? []) walkCollect(child, out); +} + +function exportSubtreeToCSV(node, filename) { + const rows = []; + walkCollect(node, rows); + + rows.sort((a, b) => a.path.localeCompare(b.path)); + + const header = 'id,name,path\n'; + const body = rows + .map((r) => `${escapeCSV(r.id)},${escapeCSV(r.name)},${escapeCSV(r.path)}`) + .join('\n'); + + fs.writeFileSync(filename, header + body + '\n', 'utf8'); +} + +/* ---------- Index ---------- */ +function buildIndex(roots) { + const byId = new Map(); + const byName = new Map(); + + function index(node) { + byId.set(String(node.id), node); + const key = String(node.name ?? '').toLowerCase(); + if (key) { + if (!byName.has(key)) byName.set(key, []); + byName.get(key).push(node); + } + for (const c of node.children ?? []) index(c); + } + + roots.forEach(index); + return { byId, byName }; +} + +/* ---------- Printing ---------- */ +async function printTopLevel(roots) { + console.log('\nTop-level categories:'); + await sleep(400); + roots.forEach((r, i) => { + console.log(` ${i + 1}. ${r.name} [id=${r.id}]`); + }); +} + +async function printChildren(node) { + const children = node.children ?? []; + if (!children.length) { + console.log('(No children under this node.)'); + return; + } + console.log('\nChildren:'); + await sleep(400); + children.forEach((c, i) => { + console.log(` ${i + 1}. ${c.name} [id=${c.id}]`); + }); +} + +/* ---------- Main ---------- */ +async function main() { + console.log('Loading taxonomy...'); + await sleep(500); + + const taxonomy = loadTaxonomy('./taxonomy.json'); + const roots = Array.isArray(taxonomy) + ? taxonomy + : (taxonomy.categories ?? []); + + if (!roots.length) { + console.error('No root categories found.'); + process.exit(1); + } + + const { byId, byName } = buildIndex(roots); + + console.log(`Loaded ${roots.length} top-level categories.`); + await sleep(800); + + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); + const ask = (q) => new Promise((res) => rl.question(q, res)); + + const virtualRoot = { id: '__ROOT__', name: 'ROOT', children: roots }; + const stack = [virtualRoot]; + + let exportsDone = 0; + const maxExports = 2; + + console.log('\nTaxonomy Browser + CSV Export'); + console.log('Navigate, export subtrees, or quit.'); + await sleep(800); + + while (true) { + const current = stack[stack.length - 1]; + + if (current === virtualRoot) { + await printTopLevel(roots); + } else { + console.log(`\nCurrent category: ${current.name} [id=${current.id}]`); + await sleep(300); + await printChildren(current); + } + + await sleep(300); + console.log('\nOptions:'); + console.log(' [s] Select / search category'); + console.log(' [e] Export this subtree to CSV'); + console.log(' [u] Go up one level'); + console.log(' [q] Quit'); + + const choice = (await ask('\nChoice: ')).trim().toLowerCase(); + + if (choice === 'q') { + console.log('\nExiting...'); + await sleep(500); + rl.close(); + return; + } + + if (choice === 'u') { + if (stack.length > 1) { + stack.pop(); + console.log('Moved up one level.'); + } else { + console.log('Already at top level.'); + } + await sleep(600); + continue; + } + + if (choice === 'e') { + if (exportsDone >= maxExports) { + console.log('Export limit reached.'); + await sleep(600); + continue; + } + + const base = sanitizeFilename( + current === virtualRoot ? 'top_level' : current.name, + ); + const file = `${base}_subtree.csv`; + + const exportNode = + current === virtualRoot + ? { name: 'Top Level', children: roots } + : current; + + console.log('Exporting subtree...'); + await sleep(500); + + exportSubtreeToCSV(exportNode, file); + exportsDone++; + + console.log(`Export complete → ${file}`); + console.log(`Exports used: ${exportsDone}/${maxExports}`); + await sleep(800); + continue; + } + + if (choice === 's') { + const children = current.children ?? []; + if (!children.length) { + console.log('No children to select here.'); + await sleep(600); + continue; + } + + const input = ( + await ask('Enter child NUMBER, or NAME/ID (direct child only): ') + ).trim(); + + const num = Number(input); + if (Number.isInteger(num) && num >= 1 && num <= children.length) { + const selected = children[num - 1]; + console.log(`Selected: ${selected.name}`); + await sleep(600); + stack.push(selected); + continue; + } + + const idMatch = children.find((c) => String(c.id) === input); + if (idMatch) { + console.log(`Selected: ${idMatch.name}`); + await sleep(600); + stack.push(idMatch); + continue; + } + + const nameMatch = children.find( + (c) => String(c.name).toLowerCase() === input.toLowerCase(), + ); + if (nameMatch) { + console.log(`Selected: ${nameMatch.name}`); + await sleep(600); + stack.push(nameMatch); + continue; + } + + console.log('No matching direct child found.'); + await sleep(700); + continue; + } + + console.log('Invalid option.'); + await sleep(600); + } +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/WalmartPipeline/TaxonomyBrowsing/generateTaxonomy.js b/WalmartPipeline/TaxonomyBrowsing/generateTaxonomy.js new file mode 100644 index 0000000..c5191c3 --- /dev/null +++ b/WalmartPipeline/TaxonomyBrowsing/generateTaxonomy.js @@ -0,0 +1,126 @@ +import crypto from 'crypto'; +import fs from 'fs'; +import path from 'path'; + +// Walmart base +const BASE = 'https://developer.api.walmart.com'; + +// Taxonomy endpoint (Affiliates v1 taxonomy docs) +// If your earlier working script used a different path, swap it here. +const TAXONOMY_PATH = '/api-proxy/service/affil/product/v2/taxonomy'; + +// Output files +const OUT_PRETTY = path.resolve(process.cwd(), 'taxonomy.json'); +const OUT_RAW = path.resolve(process.cwd(), 'taxonomy_raw.json'); + +/* -------------------- AUTH / HEADERS -------------------- */ + +const keyData = { + consumerId: '39d025f8-e575-48cf-aa4e-22f89da4c16f', + keyVer: '5', // keep as STRING; must match walmart.io key version exactly + privateKeyPem: `-----BEGIN RSA PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC1hpiZMh1pyN6k +oDO95qK3L+/uY3M+sUpcnQkuNdFPBChh3jxEjn3zQLm88rdBTKQVqDD8E7g2KBHX +wYaSiKqqXcBkMkPfEEyTE/I//BjDF5dS+sgR6uIJmfsNVIVkY7laxo0STFCO3G+V +gkHTp8u/lJ5Aa8NSxu4BYlR0wBpze40aHYBeQw/+QuPvZzNeUf5YNC3rs5eId2f5 +N0rA2mZfY1myzE6UarW+5+WrWbkR0Bwrvs+8B/S8Jh4QFmh2EDaucisx96MXSH5S +3BuzBxqE9Txo4TKGu0y/aDmRU1Ij5WP88VnURU3vna1UF5n/pPw6InzvcQkeGS1o +thpyvCvtAgMBAAECggEABFOmXm5twvqOQpRa0/Gxo9YX/0iJoZPPdcPhLdF5N/lU +bqdUGeyojxoD41rkHviDXpXH9x9YxwevQp7QcrygjsU6Xv2YuekC3j69ycjcHKqf +UlygHdc3O2r/tHOr1G2RFhITIIbHEqSpqqY9ke7paxtaOQKojqpL/F1jdr8WduM9 +WQqbpgk+Hc6PIYVdUeALMX+IGNWbZiX6zqm85IKUdAA4/V0RCMl/j9ySBP6TsT06 +5IXK63urXl+AOJh1tHV79GP/waETEc6rQ8Ntn9p3HsUtsx6qiLSky7E2m2L3rdVd +LOzM2vVQDKr0SMGfx4/ZA79OJbLvJnwon9l4WdxmeQKBgQDb4L7sI4FnnD7uAaV5 +NTxt6ELJIpgxalTXbGiD6BoGN7LPbRfLJmKP4pGbNkfxtLZKsrTXOE1z5bTurRzY +dsH9pEmhBf7SdYtNrnPZCfOwpZaK/PyVdIggnaAiVYD6Q5urNcTltOA9SLdxGJyE +Ny8GpdB/ItmRCUkru4uk8L3KFQKBgQDTWOaBQRPvrL7sl4nVrTlfaxDTYulFgqSx +j3ag+RBhCwvFVNxb710moIEtThpDnaLNJCc6JQ+QebrsDP7Q49eOxqKbbbLOHGrt +akkeMROg6+MaL7HMAMsjCj7hBnpSjCg94ldHuJ0d8/PB60amIES/TTOyTsssxIlD +HcoX4JsIeQKBgDVHF/wP/mMksPrq2zWreKEJDmW+RDJ1GWm5kvmjW+r1xBYO0R0g +h/FlbPK3DGe86g7fjoI32kyi9FyBBeRNomPbUxv5X+2PHdoM03Vbu/ippvi2pF1y +hymgCBVJsp7xkt7BgJxIX6152TlGRWakGHj75LFpuF40ac52+zdUPiihAoGASmQU +XpKljctkOKruXUPn2eo5te4u5cSia81vmCGS3lWhAwhnuAR86Ue9sFC5detajpKX +LCQ3Ykc2wDeiyawpB5xrSAJI2buu93pd2j60BgSBn4oCLyhoWCEXGOXK0Jt83qt4 +xUn6I7zmo+9Iotjg2eU2uSB663sSRYmKxPTOHSECgYEAr9GDqLgORkKWwXhMAe3h +R0tYdGzWqpOiVNi1hcNMGfNwQekfIAM9NVarIib5JYPkSQQQWJZVXcTlR2YZbf9/ +P5VgNbNkV23Nq7j926cpbSlgb+UsZOCC5zTaJ0L6oePnK5R38v54y2XC9ccqW6FP +sVP5T4Vx30thw2cpbOY227Q= +-----END RSA PRIVATE KEY-----`, +}; + +function canonicalizeForSignature({ consumerId, ts, keyVer }) { + const map = { + 'WM_CONSUMER.ID': String(consumerId).trim(), + 'WM_CONSUMER.INTIMESTAMP': String(ts).trim(), + 'WM_SEC.KEY_VERSION': String(keyVer).trim(), + }; + + const sortedKeys = Object.keys(map).sort(); + return sortedKeys.map((k) => map[k]).join('\n') + '\n'; +} + +function buildAuthHeaders() { + const id = String(keyData.consumerId).trim(); + const kv = String(keyData.keyVer).trim(); + const ts = String(Date.now()).trim(); + + const toSign = canonicalizeForSignature({ consumerId: id, ts, keyVer: kv }); + + const signature = crypto + .sign('RSA-SHA256', Buffer.from(toSign, 'utf8'), { + key: keyData.privateKeyPem, + padding: crypto.constants.RSA_PKCS1_PADDING, + }) + .toString('base64'); + + return { + 'WM_CONSUMER.ID': id, + 'WM_CONSUMER.INTIMESTAMP': ts, + 'WM_SEC.TIMESTAMP': ts, + 'WM_SEC.KEY_VERSION': kv, + 'WM_SEC.AUTH_SIGNATURE': signature, + Accept: 'application/json', + }; +} + +/* -------------------- MAIN -------------------- */ + +async function main() { + const url = new URL(BASE + TAXONOMY_PATH); + url.searchParams.set('format', 'json'); + + console.log('Requesting taxonomy:'); + console.log(url.toString(), '\n'); + + const headers = buildAuthHeaders(); + + const res = await fetch(url.toString(), { headers }); + const text = await res.text(); + + // Always save raw response for debugging + fs.writeFileSync(OUT_RAW, text, 'utf8'); + console.log(`Saved raw response to: ${OUT_RAW}`); + + if (!res.ok) { + throw new Error(`HTTP ${res.status} ${res.statusText}\n${text}`); + } + + // Parse + pretty print + let data; + try { + data = JSON.parse(text); + } catch (e) { + throw new Error( + `Response was not valid JSON. Raw response saved to taxonomy_raw.json.\nParse error: ${e.message}`, + ); + } + + fs.writeFileSync(OUT_PRETTY, JSON.stringify(data, null, 4), 'utf8'); + console.log(`Saved pretty taxonomy to: ${OUT_PRETTY}`); +} + +main().catch((e) => { + console.error('\nFailed to download taxonomy:'); + console.error(e.message); + process.exit(1); +}); diff --git a/WalmartPipeline/classify_ingredients.py b/WalmartPipeline/classify_ingredients.py new file mode 100644 index 0000000..b679053 --- /dev/null +++ b/WalmartPipeline/classify_ingredients.py @@ -0,0 +1,693 @@ +#!/usr/bin/env python3 +""" +Food Product Ingredient Classifier — Hybrid Edition (M4 Optimised) + +Three-pass strategy: + Pass 1 — Explicit keyword rules (~65% of products, instant) + Pass 2 — Food-category default (~25% more, instant, no LLM) + Pass 3 — LLM for true unknowns (~10% or less) + +Recommended for Apple Silicon M4: + ollama pull llama3.2:1b + python classify_ingredients.py /path/to/folder -m llama3.2:1b -w 8 -b 25 + +Setup: + 1. Install Ollama: https://ollama.com/download + 2. Pull model: ollama pull llama3.2:1b + 3. Run: python classify_ingredients.py /path/to/csv/folder -m llama3.2:1b -w 8 +""" + +import csv +import json +import time +import argparse +import urllib.request +import urllib.error +from pathlib import Path +from concurrent.futures import ThreadPoolExecutor, as_completed +from threading import Lock + +# ── Configuration ───────────────────────────────────────────────────────────── + +DEFAULT_MODEL = "llama3.2:1b" # fastest model; still accurate for classification +DEFAULT_WORKERS = 8 # M4 unified memory handles this easily +DEFAULT_BATCH = 25 +OLLAMA_BASE_URL = "http://localhost:11434" + +# ══════════════════════════════════════════════════════════════════════════════ +# PASS 1 — EXPLICIT KEYWORD RULES +# ══════════════════════════════════════════════════════════════════════════════ + +NON_INGREDIENT_KEYWORDS = { + # Prepared / frozen meals + "frozen meal", "frozen dinner", "frozen entree", "frozen pizza", + "tv dinner", "microwave meal", "microwave popcorn", "heat and serve", + "ready to eat", "ready-to-eat", "meal kit", "dinner kit", "lunch kit", + "skillet meal", "hamburger helper", "tuna helper", + "mac and cheese dinner", "boxed dinner", + # Snack foods + "potato chip", "tortilla chip", "corn chip", "pita chip", + "cheese puff", "cheese curl", "veggie straw", "veggie chip", + "rice cake", "popcorn", "pork rind", "pork skin", + "pretzel bag", "snack pretzel", "snack mix", + "snack bar", "granola bar", "cereal bar", "protein bar", "energy bar", + "fruit snack", "fruit roll", "fruit leather", "fruit gummy", + "gummy bear", "gummy worm", "gummy candy", + "candy bar", "chocolate bar", "candy bag", "hard candy", + "lollipop", "jawbreaker", "licorice", "taffy", "cotton candy", + # Beverages + "soda", " cola", "ginger ale", "root beer", "cream soda", + "energy drink", "sports drink", "electrolyte drink", + "fruit juice", "orange juice", "apple juice", "grape juice", + "cranberry juice", "pineapple juice", "tomato juice", + "lemonade", "limeade", "fruit punch", + "iced tea", "sweet tea", "kombucha", + "coffee drink", "bottled coffee", "cold brew bottle", "frappuccino", + "smoothie bottle", "juice smoothie", "drinkable yogurt", + "protein shake", "meal replacement shake", + "sparkling water", "mineral water", "bottled water", "distilled water", + "flavored water", "vitamin water", "coconut water bottle", + "beer ", " beer", "wine bottle", "spirits bottle", "whiskey bottle", + "vodka bottle", "rum bottle", "gin bottle", "tequila bottle", + "hard seltzer", "hard cider", + # Candy / confections + "candy", "confection", "breath mint", "chewing gum", " gum ", "bubble gum", + # Breakfast cereals + "breakfast cereal", "corn flakes", "frosted flakes", "fruit loops", + "froot loops", "lucky charms", "cocoa puffs", "cap'n crunch", + "cheerios", "wheaties", "grape nuts", "honey smacks", + "rice krispies", "special k cereal", "raisin bran", + # Ice cream / frozen desserts + "ice cream", "gelato", "sorbet", "sherbet", "frozen yogurt", + "popsicle", "ice pop", "fudge bar", "ice cream bar", "ice cream sandwich", + "drumstick cone", "klondike", + # Pre-made bakery / desserts + "birthday cake", "wedding cake", "sheet cake", + "cupcake", "donut", "doughnut", "muffin pack", "danish pastry", + "croissant pack", "cinnamon roll pack", + "brownie pack", "cookie pack", "cookie assortment", + "pudding cup", "jello cup", "gelatin cup", "snack pudding", + # Supplements / vitamins + "vitamin c", "vitamin d", "vitamin e", "vitamin a", "vitamin b", + "multivitamin", "supplement", "probiotic", "prebiotic", + "fish oil capsule", "omega-3 capsule", + "protein powder", "whey protein", "casein protein", + "plant protein powder", "creatine", "bcaa", "pre-workout", + "melatonin", "sleep aid", "fiber supplement", "metamucil", + "ensure bottle", "boost bottle", "pediasure", + # Baby / infant + "baby formula", "infant formula", "toddler formula", + "baby food", "baby puree", "baby cereal", "gerber", + # Pet food + "dog food", "cat food", "puppy food", "kitten food", + "dog treat", "cat treat", "bird seed", "fish food", + "pet food", "pet treat", + # Paper / cleaning / household + "paper towel", "paper plate", "napkin pack", + "plastic wrap", "aluminum foil", + "zip bag", "storage bag", "freezer bag", "sandwich bag", + "trash bag", "garbage bag", + "dish soap", "laundry detergent", "cleaning spray", "bleach", + # Kitchen equipment + "cutting board", "mixing bowl", "baking sheet", "baking pan", + "cast iron pan", "skillet pan", "saute pan", "sauce pan", + "dutch oven", "roasting pan", "muffin tin", "loaf pan", + "measuring cup", "measuring spoon", "spatula", "whisk", + "can opener", "vegetable peeler", +} + +NON_INGREDIENT_CATEGORIES = { + "beverage", "drinks", "soda", "juice", "water", + "snacks", "chips", "crackers", "popcorn", + "candy", "confectionery", "gum", + "ice cream", "frozen dessert", "frozen novelty", + "frozen meals", "frozen entrees", "prepared meals", + "breakfast cereal", "cereal", + "supplement", "vitamins", "health supplement", + "protein powder", "sports nutrition", + "baby food", "baby formula", "infant", + "pet food", "dog", "cat", "pet", + "paper goods", "cleaning supplies", "household", + "cookware", "bakeware", "kitchen tools", + "personal care", "beauty", "cosmetic", + "deli prepared", "deli meals", +} + +INGREDIENT_RULES: list[tuple[set[str], list[str]]] = [ + # PRODUCE + ({"fresh vegetable", "fresh fruit", "organic vegetable", "organic fruit", + "frozen vegetable", "frozen fruit", + "broccoli", "cauliflower", "spinach", "kale", "arugula", "romaine", + "iceberg lettuce", "butter lettuce", "mixed greens", "collard greens", + "brussels sprout", "cabbage", "bok choy", "napa cabbage", + "carrot", "celery", "cucumber", "zucchini", "squash", + "bell pepper", "jalapeño", "serrano pepper", "habanero", + "poblano", "anaheim pepper", "banana pepper", + "cherry tomato", "grape tomato", "roma tomato", + "red onion", "yellow onion", "white onion", "shallot", + "scallion", "green onion", "leek", + "garlic bulb", "garlic clove", "garlic head", + "portobello", "shiitake", "cremini", "button mushroom", + "oyster mushroom", "enoki", "chanterelle", + "asparagus", "artichoke", "beet", "turnip", "parsnip", + "sweet potato", "yam", "russet potato", "red potato", "yukon gold", + "fingerling potato", "corn on the cob", "fresh corn", + "green bean", "snap pea", "sugar snap", "snow pea", + "eggplant", "okra", "fennel bulb", "radish", "jicama", + "apple", "pear", "orange", "lemon", "lime", "grapefruit", + "banana", "mango", "pineapple", "papaya", "kiwi", + "strawberry", "blueberry", "raspberry", "blackberry", + "watermelon", "cantaloupe", "honeydew", + "peach", "nectarine", "plum", "apricot", "cherry", + "avocado", "fig", "pomegranate", "passion fruit", + }, ["PRODUCE"]), + # FRESH HERBS + ({"fresh basil", "fresh parsley", "fresh cilantro", "fresh thyme", + "fresh rosemary", "fresh mint", "fresh dill", "fresh chives", + "fresh tarragon", "fresh oregano", "fresh sage", + "fresh lemongrass", "fresh ginger root", "fresh turmeric root", + "herb bunch", "herb packet", + }, ["FRESH_HERB"]), + # PROTEIN + ({"chicken breast", "chicken thigh", "chicken wing", "chicken leg", + "chicken tender", "whole chicken", "chicken drumstick", + "ground chicken", "ground turkey", "turkey breast", "whole turkey", + "ground beef", "beef chuck", "beef brisket", "beef rib", + "flank steak", "skirt steak", "ribeye", "sirloin", "tenderloin", + "beef roast", "beef stew meat", "beef short rib", + "pork chop", "pork loin", "pork belly", "pork shoulder", + "pork tenderloin", "baby back rib", "pork rib", "spare rib", + "ham steak", "uncured ham", "spiral ham", + "lamb chop", "lamb leg", "ground lamb", "rack of lamb", + "salmon fillet", "salmon steak", "whole salmon", + "tuna steak", "tuna fillet", "tilapia", "cod fillet", "halibut", + "mahi mahi", "sea bass", "snapper", "trout", "catfish", + "shrimp", "scallop", "lobster tail", "crab leg", "crab meat", + "clam", "mussel", "oyster", "squid", "octopus", + "bacon", "pancetta", "prosciutto", "salami", "pepperoni", + "chorizo", "andouille", "bratwurst", "italian sausage", + "breakfast sausage", "sausage link", "sausage patty", + "deli turkey", "deli ham", "deli roast beef", "deli chicken", + "lunch meat", "deli meat", "sliced meat", + "tofu", "extra firm tofu", "silken tofu", "firm tofu", + "tempeh", "seitan", "textured vegetable protein", + "edamame", "black bean", "pinto bean", "kidney bean", + "chickpea", "lentil", "split pea", "navy bean", + "great northern bean", "cannellini bean", "fava bean", + "dozen eggs", "large eggs", "medium eggs", "free range egg", + "cage free egg", "organic egg", "egg whites", "liquid egg", + }, ["PROTEIN"]), + # DAIRY + ({"whole milk", "skim milk", "2% milk", "1% milk", "nonfat milk", + "reduced fat milk", "lactose free milk", "organic milk", + "buttermilk", "evaporated milk", "condensed milk", "dry milk", + "powdered milk", + "heavy cream", "heavy whipping cream", "whipping cream", + "half and half", "light cream", + "sour cream", "creme fraiche", + "cream cheese", "neufchatel", "mascarpone", "ricotta", + "cottage cheese", "farmers cheese", + "fresh mozzarella", "burrata", + "cheddar cheese", "cheddar block", "shredded cheddar", + "parmesan", "parmigiano", "romano cheese", "asiago", + "gruyere", "emmental", "swiss cheese", + "gouda", "edam", "havarti", "fontina", "provolone", + "brie", "camembert", "gorgonzola", "roquefort", "stilton", + "blue cheese", "feta cheese", "queso fresco", "queso blanco", + "monterey jack", "colby", "pepper jack", + "butter stick", "unsalted butter", "salted butter", "european butter", + "ghee jar", "clarified butter", + "greek yogurt", "plain yogurt", "whole milk yogurt", "nonfat yogurt", + "skyr", "kefir", "whipped cream can", + }, ["DAIRY"]), + # GRAIN + ({"all purpose flour", "bread flour", "whole wheat flour", + "cake flour", "pastry flour", "self rising flour", + "almond flour", "coconut flour", "oat flour", "rye flour", + "spelt flour", "cassava flour", "chickpea flour", "rice flour", + "white rice", "brown rice", "jasmine rice", "basmati rice", + "arborio rice", "wild rice", "instant rice", + "spaghetti", "penne", "rigatoni", "fusilli", "rotini", + "farfalle", "linguine", "fettuccine", "tagliatelle", + "angel hair", "orzo", "macaroni", "lasagna noodle", + "egg noodle", "ramen noodle", "soba noodle", "udon noodle", + "rice noodle", "vermicelli noodle", "glass noodle", + "rolled oat", "quick oat", "steel cut oat", "instant oat", + "cornmeal", "polenta", "grits", "semolina", + "breadcrumb", "panko", "plain breadcrumb", "italian breadcrumb", + "bread loaf", "sandwich bread", "whole wheat bread", "white bread", + "sourdough bread", "french bread", "baguette", "ciabatta", + "pita bread", "naan", "flatbread", + "flour tortilla", "corn tortilla", + "quinoa", "farro", "bulgur", "couscous", "barley", "millet", + "amaranth", "teff", "freekeh", "crouton", "stuffing mix", + }, ["GRAIN"]), + # BAKING + ({"baking soda", "baking powder", "cream of tartar", + "active dry yeast", "instant yeast", "rapid rise yeast", + "vanilla extract", "almond extract", "peppermint extract", + "lemon extract", "orange extract", + "food coloring", "gel food color", + "cocoa powder", "dutch process cocoa", "unsweetened cocoa", + "chocolate chip", "mini chocolate chip", "white chocolate chip", + "dark chocolate chip", "baking chocolate", "unsweetened chocolate", + "bittersweet chocolate", "semisweet chocolate", + "sprinkle", "nonpareil", "decorating sugar", "sanding sugar", + "cake mix", "brownie mix", "cookie mix", "muffin mix", + "pancake mix", "waffle mix", "biscuit mix", + "powdered sugar", "confectioners sugar", "icing sugar", + "granulated sugar", "cane sugar", + "brown sugar", "dark brown sugar", "light brown sugar", + "turbinado sugar", "raw sugar", "demerara sugar", + "corn syrup", "light corn syrup", "dark corn syrup", "molasses", + }, ["BAKING"]), + # SPICE + ({"black pepper", "white pepper", "peppercorn", + "sea salt", "kosher salt", "table salt", "himalayan salt", + "fleur de sel", "smoked salt", "celery salt", "garlic salt", + "garlic powder", "onion powder", + "cumin", "ground cumin", "cumin seed", + "paprika", "smoked paprika", "sweet paprika", "hot paprika", + "chili powder", "ancho chili", "chipotle powder", + "cayenne", "red pepper flake", "crushed red pepper", + "cinnamon", "ground cinnamon", "cinnamon stick", + "nutmeg", "ground nutmeg", + "oregano", "dried oregano", "thyme", "dried thyme", + "rosemary", "dried rosemary", "basil", "dried basil", + "bay leaf", "turmeric", "ground turmeric", + "coriander", "ground coriander", "fennel seed", "caraway seed", + "cardamom", "clove", "allspice", "ginger", "ground ginger", + "mustard seed", "ground mustard", "fenugreek", "nigella seed", + "sumac", "za'atar", "herbs de provence", "italian seasoning", + "old bay", "cajun seasoning", "creole seasoning", + "taco seasoning", "fajita seasoning", "ranch seasoning", + "curry powder", "garam masala", "ras el hanout", + "five spice", "everything bagel seasoning", + "lemon pepper", "steak seasoning", "bbq rub", "dry rub", + "vanilla bean", "saffron", "annatto", "achiote", + "dill weed", "dried dill", "marjoram", "dried sage", + }, ["SPICE"]), + # OIL_FAT + ({"olive oil", "extra virgin olive oil", + "vegetable oil", "canola oil", "sunflower oil", "safflower oil", + "corn oil", "soybean oil", "peanut oil", "grapeseed oil", + "avocado oil", "coconut oil", "palm oil", + "sesame oil", "toasted sesame oil", + "walnut oil", "flaxseed oil", "truffle oil", + "cooking spray", "nonstick spray", "baking spray", + "shortening", "vegetable shortening", "crisco", + "lard", "rendered lard", "duck fat", + "beef tallow", "margarine stick", "vegan butter", + }, ["OIL_FAT"]), + # CONDIMENT + ({"soy sauce", "tamari", "liquid aminos", "coconut aminos", + "fish sauce", "oyster sauce", "hoisin sauce", + "worcestershire sauce", + "hot sauce", "sriracha", "tabasco", "cholula", + "chili garlic sauce", "sambal oelek", "gochujang", + "apple cider vinegar", "white vinegar", "distilled vinegar", + "red wine vinegar", "white wine vinegar", "balsamic vinegar", + "sherry vinegar", "rice vinegar", "malt vinegar", + "dijon mustard", "whole grain mustard", "yellow mustard", + "ketchup", "mayonnaise", "light mayonnaise", + "relish", "sweet relish", "dill relish", + "bbq sauce", "barbecue sauce", "steak sauce", + "buffalo sauce", "wing sauce", + "teriyaki sauce", "ponzu sauce", "sweet chili sauce", + "pad thai sauce", "stir fry sauce", + "tahini", "miso paste", "red miso", "white miso", + "tomato paste", "marinara sauce", "pasta sauce", + "alfredo sauce", "pesto sauce", + "enchilada sauce", "salsa verde", "mole sauce", + "salsa jar", "chunky salsa", + "pickle", "dill pickle", "bread and butter pickle", + "pickled jalapeno", "giardiniera", + "capers", "anchovy paste", "anchovy fillet", + "sun dried tomato", "roasted red pepper", + "horseradish prepared", "wasabi paste", + }, ["CONDIMENT"]), + # CANNED_GOOD + ({"canned tomato", "diced tomato", "crushed tomato", "stewed tomato", + "whole peeled tomato", "san marzano", "fire roasted tomato", + "canned bean", "canned black bean", "canned chickpea", + "canned kidney bean", "canned pinto bean", "canned navy bean", + "canned lentil", "canned white bean", "canned cannellini", + "canned corn", "canned pumpkin", "canned yam", + "canned artichoke", "canned beet", "canned mushroom", + "canned water chestnut", "canned bamboo", + "canned green bean", "canned pea", "canned spinach", + "coconut milk can", "coconut cream can", "lite coconut milk", + "chicken broth", "beef broth", "vegetable broth", + "chicken stock", "beef stock", "bone broth", + "canned tuna", "canned salmon", "canned sardine", + "canned anchovy", "canned crab", "canned clam", + "rotel", "green chili can", "chipotle in adobo", + }, ["CANNED_GOOD"]), + # SWEETENER + ({"honey", "raw honey", "manuka honey", "clover honey", + "maple syrup", "pure maple syrup", + "agave", "agave nectar", "date syrup", "date sugar", + "stevia", "monk fruit sweetener", "erythritol", + "brown rice syrup", + }, ["SWEETENER"]), + # NUT_SEED + ({"almonds", "raw almonds", "roasted almonds", "sliced almonds", + "slivered almonds", "almond meal", + "walnuts", "walnut halves", "pecans", "cashews", + "pistachios", "pine nuts", "hazelnuts", "macadamia nut", + "brazil nut", "peanut", "raw peanut", "roasted peanut", + "peanut butter", "almond butter", "cashew butter", + "sunflower seed", "pumpkin seed", "pepita", + "sesame seed", "chia seed", "flaxseed", "ground flax", + "hemp seed", "poppy seed", + }, ["NUT_SEED"]), + # THICKENER + ({"cornstarch", "corn starch", "arrowroot", "arrowroot powder", + "tapioca starch", "tapioca pearl", "potato starch", + "unflavored gelatin", "agar agar", "agar powder", + "xanthan gum", "guar gum", "pectin", + }, ["THICKENER"]), + # ALCOHOL (cooking) + ({"cooking wine", "dry sherry", "mirin", "sake cooking", + "rice wine", "shaoxing wine", + }, ["ALCOHOL"]), + # OTHER_INGR (catch-all pantry) + ({"nutritional yeast", "dried mushroom", "porcini dried", + "seaweed", "nori sheet", "kombu", "wakame", + "dashi", "bonito flake", "matcha powder", + "rose water", "orange blossom water", "liquid smoke", + "raisin", "currant", "sultana", + "dried cranberry", "dried cherry", "dried apricot", "dried fig", + "dried date", "dried mango", "dried blueberry", "dried tomato", + "canned fruit", "canned peach", "canned pear", "canned pineapple", + "maraschino cherry", + "lemon juice bottle", "lime juice bottle", + "jam", "jelly", "preserves", "fruit spread", "marmalade", + "chutney", + "caramel sauce", "caramel topping", + "sweetened condensed milk", + "cream of mushroom soup", "cream of chicken soup", + "french onion soup can", + "harissa", "curry paste", "red curry paste", "green curry paste", + "yellow curry paste", "massaman paste", + "coconut butter", "cacao nib", "carob powder", + "vital wheat gluten", "citric acid", + "meat tenderizer", + "vinegar", + }, ["OTHER_INGR"]), +] + +# ══════════════════════════════════════════════════════════════════════════════ +# PASS 2 — FOOD-CATEGORY DEFAULT +# If a product's category looks like a food/grocery category (and wasn't +# caught by explicit non-ingredient rules), assume it IS an ingredient. +# This eliminates most of the LLM queue. +# ══════════════════════════════════════════════════════════════════════════════ + +FOOD_CATEGORY_KEYWORDS = { + "food", "grocery", "groceries", "pantry", "cooking", "baking", + "ingredient", "produce", "meat", "seafood", "poultry", "dairy", + "deli", "bakery", "spice", "herb", "condiment", "sauce", "oil", + "flour", "grain", "pasta", "rice", "canned", "jarred", "dry good", + "bulk", "organic", "natural food", "gourmet", "specialty food", + "international food", "ethnic food", "asian food", "mexican food", + "italian food", "middle eastern", "latin food", + "frozen food", "refrigerated", "chilled", + "nut", "seed", "nut butter", "sweetener", "sugar", "honey", + "vinegar", "dressing", "marinade", "seasoning", "rub", "blend", + "broth", "stock", "soup base", + "cheese", "butter", "egg", "milk", "cream", "yogurt", + "bread", "tortilla", "wrap", + "breakfast", "cereal grain", # NOTE: cereal grain ≠ "cereal" (covered by non-ingredient) +} + + +def normalise(text: str) -> str: + return text.lower().strip() + + +def is_food_category(category: str) -> bool: + """Return True if the category string looks like a food/grocery category.""" + cat = normalise(category) + for kw in FOOD_CATEGORY_KEYWORDS: + if kw in cat: + return True + return False + + +def rule_classify(row: dict) -> dict | None: + name = normalise(row.get("name", "")) + category = normalise(row.get("category_name", "")) + combined = name + " " + category + + # Pass 1a: explicit non-ingredient keywords + for kw in NON_INGREDIENT_KEYWORDS: + if kw in combined: + return {"ingredient": False, "classifiers": []} + for cat_kw in NON_INGREDIENT_CATEGORIES: + if cat_kw in category: + return {"ingredient": False, "classifiers": []} + + # Pass 1b: explicit ingredient keywords + for keywords, tags in INGREDIENT_RULES: + for kw in keywords: + if kw in combined: + return {"ingredient": True, "classifiers": tags} + + # Pass 2: food-category default + if is_food_category(category): + return {"ingredient": True, "classifiers": ["OTHER_INGR"]} + + return None # truly ambiguous → LLM + + +# ── Ollama helpers ───────────────────────────────────────────────────────────── + +def check_ollama_running(): + try: + req = urllib.request.urlopen(f"{OLLAMA_BASE_URL}/api/tags", timeout=5) + data = json.loads(req.read()) + return [m["name"].split(":")[0] for m in data.get("models", [])] + except (urllib.error.URLError, OSError): + return None + + +SYSTEM_PROMPT = """You are a food product classifier. For each product determine: +1. Is it an INGREDIENT a home cook would use in a recipe? +2. If yes, assign 1-3 tags: PROTEIN, DAIRY, PRODUCE, GRAIN, BAKING, SPICE, OIL_FAT, + CONDIMENT, CANNED_GOOD, SWEETENER, NUT_SEED, ALCOHOL, THICKENER, FRESH_HERB, OTHER_INGR + +Respond ONLY with a JSON array — one object per product in the same order. +Each: {"ingredient": true/false, "classifiers": ["TAG"]} +No explanation. No markdown. Only the JSON array.""" + + +def ollama_chat(model: str, system: str, user: str) -> str: + payload = json.dumps({ + "model": model, "stream": False, + "messages": [ + {"role": "system", "content": system}, + {"role": "user", "content": user}, + ], + "options": {"temperature": 0.0}, + }).encode() + req = urllib.request.Request( + f"{OLLAMA_BASE_URL}/api/chat", data=payload, + headers={"Content-Type": "application/json"}, method="POST", + ) + with urllib.request.urlopen(req, timeout=300) as resp: + return json.loads(resp.read())["message"]["content"].strip() + + +def parse_json_array(text: str, expected: int) -> list[dict]: + text = text.strip() + if "```" in text: + for part in text.split("```")[1:]: + part = part.lstrip("json").strip() + if part: + text = part + break + start, end = text.find("["), text.rfind("]") + 1 + if start != -1 and end > start: + try: + r = json.loads(text[start:end]) + if isinstance(r, list) and len(r) == expected: + return r + except json.JSONDecodeError: + pass + return [{"ingredient": False, "classifiers": []} for _ in range(expected)] + + +def build_prompt(row: dict) -> str: + parts = [f"Name: {row.get('name','').strip()}"] + if cat := row.get("category_name","").strip(): + parts.append(f"Category: {cat}") + if sd := row.get("shortDescription","").strip()[:200]: + parts.append(f"Desc: {sd}") + return " | ".join(parts) + + +def classify_batch_llm(model: str, batch: list[dict], retries: int = 2) -> list[dict]: + numbered = "\n".join(f"{i+1}. {build_prompt(r)}" for i, r in enumerate(batch)) + user_msg = ( + f"Classify these {len(batch)} food products. " + f"Return a JSON array with exactly {len(batch)} objects.\n\n" + numbered + ) + for attempt in range(retries + 1): + try: + raw = ollama_chat(model, SYSTEM_PROMPT, user_msg) + return parse_json_array(raw, len(batch)) + except Exception: + if attempt == retries: + return [{"ingredient": False, "classifiers": []} for _ in batch] + time.sleep(1) + + +# ── CSV I/O ─────────────────────────────────────────────────────────────────── + +def read_csvs(folder: str) -> list[dict]: + csv.field_size_limit(10_000_000) + rows = [] + for csv_file in Path(folder).glob("*.csv"): + print(f" Reading {csv_file.name} …") + with open(csv_file, newline="", encoding="utf-8-sig") as f: + for row in csv.DictReader(f): + rows.append(row) + print(f" Total rows: {len(rows):,}") + return rows + + +def write_output(classified: list[dict], output_path: str): + fieldnames = ["name", "ingredient", "classifiers", "retail_price", + "thumbnailImage", "mediumImage", "largeImage", "color"] + with open(output_path, "w", newline="", encoding="utf-8") as f: + writer = csv.DictWriter(f, fieldnames=fieldnames) + writer.writeheader() + writer.writerows(classified) + n_ingr = sum(1 for r in classified if r["ingredient"]) + print(f"\nSaved → {output_path}") + print(f" {n_ingr:,} ingredients / {len(classified):,} total products") + + +def to_output_row(row: dict, result: dict) -> dict: + return { + "name": row.get("name", ""), + "ingredient": result.get("ingredient", False), + "classifiers": "|".join(result.get("classifiers", [])), + "retail_price": row.get("retail_price", ""), + "thumbnailImage": row.get("thumbnailImage", ""), + "mediumImage": row.get("mediumImage", ""), + "largeImage": row.get("largeImage", ""), + "color": row.get("color", ""), + } + + +# ── Main ────────────────────────────────────────────────────────────────────── + +def main(): + parser = argparse.ArgumentParser( + description="Hybrid rule+LLM ingredient classifier — M4 optimised." + ) + parser.add_argument("input_folder") + parser.add_argument("-o", "--output", default="classified_ingredients.csv") + parser.add_argument("-m", "--model", default=DEFAULT_MODEL, + help=f"Ollama model (default: {DEFAULT_MODEL})") + parser.add_argument("-w", "--workers", type=int, default=DEFAULT_WORKERS, + help=f"Parallel workers (default: {DEFAULT_WORKERS})") + parser.add_argument("-b", "--batch", type=int, default=DEFAULT_BATCH, + help=f"Products per LLM call (default: {DEFAULT_BATCH})") + parser.add_argument("--no-llm", action="store_true", + help="Skip LLM pass — output rules + category-default only (fast)") + args = parser.parse_args() + + print(f"\n📂 Reading CSVs from: {args.input_folder}") + rows = read_csvs(args.input_folder) + if not rows: + print("⚠ No rows found.") + return + + # ── Pass 1 + 2: Rule-based + category default (instant) ────────────────── + print("\nPass 1+2: Rule-based + food-category default ...") + t0 = time.time() + + results = [None] * len(rows) + llm_queue = [] + + for i, row in enumerate(rows): + r = rule_classify(row) + if r is not None: + results[i] = r + else: + llm_queue.append((i, row)) + + rule_count = len(rows) - len(llm_queue) + rule_pct = 100 * rule_count / len(rows) + print(f" Rule-classified: {rule_count:,} ({rule_pct:.1f}%)") + print(f" Needs LLM: {len(llm_queue):,} ({100-rule_pct:.1f}%)") + print(f" Time: {time.time()-t0:.1f}s") + + if args.no_llm: + print(f"\n--no-llm: outputting rule-classified rows only.") + print(f" Skipping {len(llm_queue):,} unclassified products entirely.") + classified = [to_output_row(row, results[i]) for i, row in enumerate(rows) if results[i] is not None] + write_output(classified, args.output) + print(f" Total wall time: {(time.time()-t0)/60:.1f} min") + return + + # ── Pass 3: LLM for true unknowns ───────────────────────────────────────── + if llm_queue: + print(f"\nPass 3: LLM classification for {len(llm_queue):,} products …") + print(f" Model: {args.model} | Workers: {args.workers} | Batch: {args.batch}") + print(f" 💡 Tip: make sure you ran ollama pull {args.model}\n") + + available = check_ollama_running() + if available is None: + print("⚠ Ollama not reachable — marking unknowns as non-ingredient.") + for orig_idx, _ in llm_queue: + results[orig_idx] = {"ingredient": False, "classifiers": []} + elif args.model.split(":")[0] not in available: + print(f"WARN Model '{args.model}' not found. Run: ollama pull {args.model}") + for orig_idx, _ in llm_queue: + results[orig_idx] = {"ingredient": False, "classifiers": []} + else: + only_rows = [r for _, r in llm_queue] + batches = [ + (llm_queue[i : i + args.batch], only_rows[i : i + args.batch]) + for i in range(0, len(llm_queue), args.batch) + ] + total_b = len(batches) + completed = 0 + lock = Lock() + t1 = time.time() + + def process(b_idx, idx_row_pairs, row_batch): + return b_idx, idx_row_pairs, classify_batch_llm(args.model, row_batch) + + with ThreadPoolExecutor(max_workers=args.workers) as pool: + futures = { + pool.submit(process, bi, idxs, rws): bi + for bi, (idxs, rws) in enumerate(batches) + } + for future in as_completed(futures): + b_idx, idx_row_pairs, llm_results = future.result() + for (orig_idx, _), res in zip(idx_row_pairs, llm_results): + results[orig_idx] = res + with lock: + completed += 1 + elapsed = time.time() - t1 + rate = completed / elapsed + eta = (total_b - completed) / rate if rate > 0 else 0 + print( + f" LLM batch {completed:>5}/{total_b} " + f"ETA: {eta/60:>5.1f} min", + end="\r", + ) + print() + + classified = [to_output_row(row, results[i]) for i, row in enumerate(rows)] + write_output(classified, args.output) + print(f" Total wall time: {(time.time()-t0)/60:.1f} min") + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/deleteEmptyCSVs.js b/WalmartPipeline/deleteEmptyCSVs.js similarity index 96% rename from deleteEmptyCSVs.js rename to WalmartPipeline/deleteEmptyCSVs.js index fc44beb..bfea238 100644 --- a/deleteEmptyCSVs.js +++ b/WalmartPipeline/deleteEmptyCSVs.js @@ -1,7 +1,7 @@ import fs from 'fs'; import path from 'path'; -const TARGET_DIR = 'walmart_CSVs'; +const TARGET_DIR = 'WalmartPipeline/walmart_CSVs'; /* -------------------- helpers -------------------- */ diff --git a/fetchProducts.js b/WalmartPipeline/fetchProducts.js similarity index 97% rename from fetchProducts.js rename to WalmartPipeline/fetchProducts.js index 2f9bd11..9178e86 100644 --- a/fetchProducts.js +++ b/WalmartPipeline/fetchProducts.js @@ -2,8 +2,8 @@ import crypto from 'crypto'; import fs from 'fs'; import path from 'path'; -const CATEGORIES_DIR = 'Categories'; -const OUT_DIR = 'walmart_CSVs'; +const CATEGORIES_DIR = 'WalmartPipeline/Categories'; +const OUT_DIR = 'WalmartPipeline/walmart_CSVs'; // Walmart endpoint const BASE = 'https://developer.api.walmart.com'; @@ -11,12 +11,12 @@ const PAGINATED_PATH = '/api-proxy/service/affil/product/v2/paginated/items'; // Page and Category Ping Delay const COUNT_PER_PAGE = 500; -const REQUEST_DELAY_MS = 200; // between pages -const CATEGORY_DELAY_MS = 150; // between categories +const REQUEST_DELAY_MS = 25; // between pages +const CATEGORY_DELAY_MS = 25; // between categories // Retry Attempt Tuning const FETCH_ATTEMPTS = 5; -const RETRY_BASE_DELAY_MS = 500; +const RETRY_BASE_DELAY_MS = 50; // Output behavior const EXPORT_PARENT_ROWS_TOO = false; // false = leaf-ish only @@ -644,9 +644,11 @@ async function main() { await new Promise((resolve) => categoryStream.end(resolve)); - console.log( - `Wrote category CSV: ${path.basename(categoryFile)} (${categoryCount} rows)`, - ); + if (categoryCount != 0) { + console.log( + `Wrote category CSV: ${path.basename(categoryFile)} (${categoryCount} rows)`, + ); + } } await new Promise((resolve) => subtreeAggStream.end(resolve)); diff --git a/WalmartPipeline/runningClassifyIngredients.md b/WalmartPipeline/runningClassifyIngredients.md new file mode 100644 index 0000000..d8edd50 --- /dev/null +++ b/WalmartPipeline/runningClassifyIngredients.md @@ -0,0 +1,102 @@ +# Food Product Ingredient Classifier — Ollama Edition + +Classifies food products as cooking ingredients using a **local LLM via Ollama**. +No API key, no subscription, no data leaves your machine. + +--- + +## 1. Install Ollama + +Download from **https://ollama.com/download** (macOS, Windows, Linux). + +After installing, Ollama runs automatically in the background. +If it isn't running, start it with: + +```bash +ollama serve +``` + +--- + +## 2. Pull a model + +```bash +ollama pull llama3.2 # recommended — fast, accurate, ~2 GB +# alternatives: +ollama pull mistral +ollama pull gemma3 +``` + +--- + +## 3. Run the classifier + +```bash +python classify_ingredients.py /path/to/csv/folder +``` + +**Options:** + +| Flag | Default | Description | +| --------------- | ---------------------------- | ------------------------------- | +| `-o / --output` | `classified_ingredients.csv` | Output file path | +| `-m / --model` | `llama3.2` | Any model you've pulled locally | + +**Examples:** + +```bash +# Use default model +python classify_ingredients.py ./data + +# Use a different model, custom output file +python classify_ingredients.py ./data -m mistral -o results.csv +``` + +--- + +## Output columns + +| Column | Description | +| ---------------- | ------------------------------------------------ | +| `name` | Product name (from source CSV) | +| `ingredient` | `True` / `False` | +| `classifiers` | Pipe-separated tags, e.g. `PROTEIN\|CANNED_GOOD` | +| `retail_price` | From source CSV | +| `thumbnailImage` | From source CSV | +| `mediumImage` | From source CSV | +| `largeImage` | From source CSV | +| `color` | From source CSV | + +--- + +## Classifier tags + +| Tag | What it covers | +| ------------- | ----------------------------------------------- | +| `PROTEIN` | Meat, poultry, seafood, eggs, tofu, legumes | +| `DAIRY` | Milk, cheese, butter, cream, yogurt | +| `PRODUCE` | Fresh/frozen vegetables and fruits | +| `GRAIN` | Flour, rice, pasta, bread, oats | +| `BAKING` | Leavening, sugar, chocolate chips, extracts | +| `SPICE` | Dried spices, herbs, seasoning blends, salt | +| `OIL_FAT` | Oils, lard, shortening, ghee | +| `CONDIMENT` | Sauces, vinegars, mustard, ketchup, soy sauce | +| `CANNED_GOOD` | Canned/jarred veg, beans, broth, tomatoes | +| `SWEETENER` | Honey, maple syrup, agave, sugar (as sweetener) | +| `NUT_SEED` | Nuts, seeds, nut butters | +| `ALCOHOL` | Wine, beer, spirits used in cooking | +| `THICKENER` | Cornstarch, arrowroot, gelatin, agar | +| `FRESH_HERB` | Fresh basil, parsley, cilantro, etc. | +| `OTHER_INGR` | Genuine ingredient not fitting above | + +**Not classified as ingredients:** prepared meals, beverages, supplements, +kitchen equipment, or standalone snack foods. + +--- + +## Performance notes + +- The script processes one row at a time for reliability with local models. +- Speed depends on your hardware. On a modern laptop with `llama3.2`: + ~2–4 seconds per product on CPU, ~0.5–1s with a GPU. +- No internet connection required after the initial model pull. diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index 155f436..9e1f017 100644 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -215,6 +215,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -406,6 +407,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", diff --git a/package-lock.json b/package-lock.json index 95d888a..8451d6c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -233,6 +233,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -424,6 +425,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", diff --git a/private_key.pem b/private_key.pem deleted file mode 100644 index 3723644..0000000 --- a/private_key.pem +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC1hpiZMh1pyN6k -oDO95qK3L+/uY3M+sUpcnQkuNdFPBChh3jxEjn3zQLm88rdBTKQVqDD8E7g2KBHX -wYaSiKqqXcBkMkPfEEyTE/I//BjDF5dS+sgR6uIJmfsNVIVkY7laxo0STFCO3G+V -gkHTp8u/lJ5Aa8NSxu4BYlR0wBpze40aHYBeQw/+QuPvZzNeUf5YNC3rs5eId2f5 -N0rA2mZfY1myzE6UarW+5+WrWbkR0Bwrvs+8B/S8Jh4QFmh2EDaucisx96MXSH5S -3BuzBxqE9Txo4TKGu0y/aDmRU1Ij5WP88VnURU3vna1UF5n/pPw6InzvcQkeGS1o -thpyvCvtAgMBAAECggEABFOmXm5twvqOQpRa0/Gxo9YX/0iJoZPPdcPhLdF5N/lU -bqdUGeyojxoD41rkHviDXpXH9x9YxwevQp7QcrygjsU6Xv2YuekC3j69ycjcHKqf -UlygHdc3O2r/tHOr1G2RFhITIIbHEqSpqqY9ke7paxtaOQKojqpL/F1jdr8WduM9 -WQqbpgk+Hc6PIYVdUeALMX+IGNWbZiX6zqm85IKUdAA4/V0RCMl/j9ySBP6TsT06 -5IXK63urXl+AOJh1tHV79GP/waETEc6rQ8Ntn9p3HsUtsx6qiLSky7E2m2L3rdVd -LOzM2vVQDKr0SMGfx4/ZA79OJbLvJnwon9l4WdxmeQKBgQDb4L7sI4FnnD7uAaV5 -NTxt6ELJIpgxalTXbGiD6BoGN7LPbRfLJmKP4pGbNkfxtLZKsrTXOE1z5bTurRzY -dsH9pEmhBf7SdYtNrnPZCfOwpZaK/PyVdIggnaAiVYD6Q5urNcTltOA9SLdxGJyE -Ny8GpdB/ItmRCUkru4uk8L3KFQKBgQDTWOaBQRPvrL7sl4nVrTlfaxDTYulFgqSx -j3ag+RBhCwvFVNxb710moIEtThpDnaLNJCc6JQ+QebrsDP7Q49eOxqKbbbLOHGrt -akkeMROg6+MaL7HMAMsjCj7hBnpSjCg94ldHuJ0d8/PB60amIES/TTOyTsssxIlD -HcoX4JsIeQKBgDVHF/wP/mMksPrq2zWreKEJDmW+RDJ1GWm5kvmjW+r1xBYO0R0g -h/FlbPK3DGe86g7fjoI32kyi9FyBBeRNomPbUxv5X+2PHdoM03Vbu/ippvi2pF1y -hymgCBVJsp7xkt7BgJxIX6152TlGRWakGHj75LFpuF40ac52+zdUPiihAoGASmQU -XpKljctkOKruXUPn2eo5te4u5cSia81vmCGS3lWhAwhnuAR86Ue9sFC5detajpKX -LCQ3Ykc2wDeiyawpB5xrSAJI2buu93pd2j60BgSBn4oCLyhoWCEXGOXK0Jt83qt4 -xUn6I7zmo+9Iotjg2eU2uSB663sSRYmKxPTOHSECgYEAr9GDqLgORkKWwXhMAe3h -R0tYdGzWqpOiVNi1hcNMGfNwQekfIAM9NVarIib5JYPkSQQQWJZVXcTlR2YZbf9/ -P5VgNbNkV23Nq7j926cpbSlgb+UsZOCC5zTaJ0L6oePnK5R38v54y2XC9ccqW6FP -sVP5T4Vx30thw2cpbOY227Q= ------END PRIVATE KEY----- diff --git a/public_key.pem b/public_key.pem deleted file mode 100644 index f2afa40..0000000 --- a/public_key.pem +++ /dev/null @@ -1,9 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtYaYmTIdacjepKAzveai -ty/v7mNzPrFKXJ0JLjXRTwQoYd48RI5980C5vPK3QUykFagw/BO4NigR18GGkoiq -ql3AZDJD3xBMkxPyP/wYwxeXUvrIEeriCZn7DVSFZGO5WsaNEkxQjtxvlYJB06fL -v5SeQGvDUsbuAWJUdMAac3uNGh2AXkMP/kLj72czXlH+WDQt67OXiHdn+TdKwNpm -X2NZssxOlGq1vuflq1m5EdAcK77PvAf0vCYeEBZodhA2rnIrMfejF0h+Utwbswca -hPU8aOEyhrtMv2g5kVNSI+Vj/PFZ1EVN752tVBeZ/6T8OiJ873EJHhktaLYacrwr -7QIDAQAB ------END PUBLIC KEY-----