Store-Specific Grocery Search: Stock and Assortment
Design grocery search around store assortment, local offers and stock freshness. Explore a worked data model, changed-store behaviour and availability checks.
Store-specific grocery search: stock, assortment and availability
The right grocery product in the wrong store is an unsuccessful search result. Separate product meaning from the offer a shopper can actually buy. This guide sets out a proposed data and testing pattern for store assortment, availability, fulfilment context and the ranking of eligible products.
Separate a product from a local offer
A product record describes the item: identity, brand, size, attributes and imagery. A local offer describes where and how it can be bought: store, fulfilment mode, price, availability and the time that evidence was updated. Keeping these concepts separate makes it easier to explain why the same query can legitimately return a different list in another store.
Use a stable join between the two. Do not assume a catalogue-wide in-stock flag proves availability for a selected collection location. PA's public Products API documents a product-level stock field; a store-specific implementation needs an agreed mapping beyond that field. Products API.
Establish eligibility before choosing the order
The proposed pattern is to resolve the shopper's fulfilment context, select the authorised local offers, apply explicit constraints and rank the remaining products for the query. Keep the meaning of “available” consistent between the results page, product page and basket.
For a synthetic example, Example Oat Drink is stocked at Store A but unavailable at Store B. A second oat drink has the reverse pattern. A shopper changing stores should see the eligible offer change, even if both products remain in the master catalogue. The example demonstrates a data contract, not a production PA endpoint or an inventory promise.
Treat stale and missing stock as different states
Agree what each availability value means. “Not stocked”, “temporarily unavailable” and “not recently checked” are different conditions. A missing update should not silently become an in-stock assertion. Document the owner of the stock feed, its expected update cadence and the behaviour when that cadence is missed.
If the source cannot establish local availability, show the uncertainty or ask for the required context. Choose a fallback that preserves the retailer's policy. Relaxing an availability condition merely to produce a longer list can create a misleading shopping journey.
Revalidate when context changes
A store switch, fulfilment change or refreshed offer should trigger the checks relevant to that decision. Test cached results, saved lists, recommendations and cart entry as well as the first query. Keep the selected context visible so the shopper can understand the result.
Measure the failures the customer experiences
Track mismatches between the search offer and the destination or basket, stale-offer responses and successful recovery when an item becomes unavailable. Evaluate relevance within the eligible assortment instead of rewarding an engine for retrieving products the shopper cannot buy. Explore PA's grocery approach.
Illustrative example
Synthetic conceptual schema, not PA API: products [{product_id:"P1",name:"Example Oat Drink"},{product_id:"P2",name:"Example Oat Drink Plus"}]; offers [{product_id:"P1",store_id:"A",status:"available"},{product_id:"P1",store_id:"B",status:"unavailable"},{product_id:"P2",store_id:"A",status:"unavailable"},{product_id:"P2",store_id:"B",status:"available"}]. Query "oat drink": Store A eligible=P1; Store B eligible=P2.
Downloads
- store-search-fixtures.json (illustrative template)
Sources
- Products API, checked 2026-10-25
- Grocery & Pet Search, Personalization & Retail Media, checked 2026-10-25
How Particular Audience does it
Frequently asked questions
Is product-level stock enough for multi-store search?
Only if that field accurately represents the shopper’s selected fulfilment context. Otherwise separate the master product from local offer records and agree the join. A global stock value cannot by itself establish availability in every store.
What should happen when a shopper changes store?
Re-evaluate eligibility, offer details and affected cached results using the new context. Preserve the query where appropriate, explain changed availability and avoid displaying a previous store’s price or stock assertion as though it applies to the new store.
Does search predict inventory?
Search should use the availability evidence agreed with the retailer. A model’s estimate is not the same as confirmed stock. If predictions are used, distinguish them from observed records and define how uncertainty affects display and purchasing decisions.
Related guides
- Product-data requirements for AI ecommerce search: Prepare product data for AI search with a field checklist covering identity, variants, attributes, prices, stock, update behaviour and measurement joins.