Skip to content
Back to Blog
Case StudyE-commerceRetail

Grocery Delivery: How Agents Handle Product Catalogues

Agent Checker5 min read

Grocery shopping is one of the most promising use cases for AI agents. It is repetitive, preference-driven, and involves comparing hundreds of products across attributes like price, dietary suitability, brand, and unit size. Yet on most grocery delivery sites, agents are almost completely unable to interact with the catalogue.

Why Grocery Sites Are Particularly Difficult

Grocery catalogues have specific characteristics that make agent interaction fail.

Product names are inconsistent. The same product appears under different naming conventions depending on the supplier feed. "Semi-Skimmed Milk 2L" and "Milk, Semi Skimmed (2 Litre)" and "Fresh Semi-Skimmed Milk 2000ml" can all be the same item. Agents attempting to find a specific product or compare options across brands struggle with the inconsistency.

Dietary and allergen information is trapped in images. Each product often has a small allergen icon strip (contains milk, contains gluten, suitable for vegetarians, etc.) rendered as a single composite image. There are no text alternatives, no structured data, and no filterable attributes in the HTML. An agent asked to build a shopping list for someone with a dairy allergy cannot identify safe products.

Pricing lacks unit comparison data. Products show a total price but often not a unit price (price per litre, price per kilogram). This makes it impossible for agents to do meaningful price comparison across different product sizes.

The basket system is session-dependent. Adding items to the basket requires maintaining a browser session with cookies. There is no API, no way to construct a basket from a list of product IDs, and no shareable basket URL. An agent that identifies the right products cannot add them to a basket for the user.

The Changes

Normalise product names. Establish a naming convention and apply it across the catalogue: Brand, Product Type, Variant, Size. So a consistent "Brand Semi-Skimmed Milk, 2L" instead of a dozen variations. Apply the normalisation at the data layer, so the website, search, and any future API all use the same names. This is usually the most time-consuming change, because it means reviewing naming across thousands of products.

Add structured dietary and allergen data. Give every product structured data attributes for common dietary categories: vegetarian, vegan, gluten-free, dairy-free, nut-free, organic, and halal. Add allergen information (the 14 major allergens under UK food regulations) as structured data with Schema.org NutritionInformation where applicable. You can keep the icon strip for visual presentation but supplement it with text labels and structured markup.

Add unit pricing. Display both total price and unit price in the HTML, with appropriate Schema.org markup. Use the standard comparison unit for each product category: per litre for liquids, per kilogram for products sold by weight, per unit for countable items.

Build a basket API and shareable lists. A simple API that accepts a JSON array of product IDs and quantities, returning a basket URL, lets an agent construct a complete shopping list and give the user a single link that pre-populates their basket. The user only needs to log in and confirm the order. This tends to be the single most impactful change for the agent experience.

The Results You Can Expect

When a catalogue becomes machine-readable and a basket API exists, weekly orders placed through AI agents can grow substantially. Agent-assisted baskets tend to be larger than standard online orders, because agents are good at building complete weekly shops from a list of requirements, while manual shoppers more often buy for the next day or two.

Repeat order rates for agent-assisted customers also tend to be higher: once a user has a working AI agent shopping workflow, they tend to stick with it. Structured allergen data, meanwhile, tends to reduce support tickets about dietary mistakes, because agents can make safer recommendations.

The Grocery-Specific Challenges

Grocery catalogues change constantly. Products go in and out of stock, prices change weekly, seasonal items rotate, and promotions run on different schedules. Any structured data approach needs to handle this dynamism.

The cleanest way to handle it is to regenerate Schema.org markup from the live database on each page load rather than maintaining static markup. Product availability, current price, and any active promotions then stay current in the structured data. This adds minimal server load but ensures agents never work with stale information.

Substitution is another grocery-specific challenge. When a product is out of stock, human shoppers expect the retailer to suggest alternatives. Agents need the same capability. A "similar products" data relationship in the structured markup, connecting products within the same category, size range, and dietary profile, lets agents handle substitutions intelligently: "The milk you usually get is out of stock, but the same size in another brand is available for slightly less."

What Other Grocery Services Should Do

Start with the basket API. The biggest barrier for agents in grocery shopping is not finding products but acting on the results. If an agent builds a perfect shopping list but the user has to manually search and add each item, especially on catalogues that use infinite scroll, the value is halved. A shareable, pre-populated basket link makes agent-assisted grocery shopping genuinely useful.

Then fix your dietary and allergen data. This is both a usability issue and a safety issue. Structured, machine-readable allergen data is not optional if you want agents recommending your products to people with food allergies.