We let embeddings choose the product, but never the price or stock
We use semantic retrieval to decide which product a shopper means, but we never trust the index for changing commercial facts. Price, stock and availability are read live from Shopify before they become part of the answer.
An AI shop assistant can remember what a shopper likes, retrieve a product that fits, and still give the wrong shopping answer. The missing ingredient is freshness. A preference can remain useful across a conversation. A product category can remain meaningful for months. Price, stock and availability can change while the shopper is still deciding.
When we added semantic product retrieval, we drew a line between those two kinds of information. Embeddings could help decide which products were relevant. They could not decide what those products cost or whether they could still be bought. Those facts had to come from the live store.
Retrieval and commerce truth are different jobs
Semantic retrieval solves an important problem for a shopping assistant: finding the product a shopper means even when their wording does not match the catalogue literally. That is especially useful across languages and imperfect product naming. A vector can connect meaning where keyword search sees unrelated strings, which makes it useful for deciding which products deserve a closer look.
But a vector is built from a stored representation of the product. By definition, that representation describes the product at the time it was indexed. Some facts survive that delay well. A title, type, vendor, tag or description can remain useful for discovery even when the index is not being rebuilt every second.
Commercial state is different. The price can change. Stock can disappear. A variant can become unavailable. A product that was a perfectly good semantic match when it was indexed can be impossible to sell by the time a shopper asks about it. We did not want the retrieval layer making promises it was never designed to keep.
The vector decides which product deserves a live lookup
The division we shipped is simple. Synced products carry vectors built from the descriptive information that makes them discoverable. A shopper message that reaches the semantic path is embedded and matched against those products.
That stage answers one question: which products are relevant? It does not answer whether the product is currently available, what its current price is or whether there is stock left. Those facts come afterwards from the live Shopify Admin lookup.
The distinction sounds small because both stages ultimately contribute to one reply. Internally, however, they have different standards of truth. Retrieval can work from an index. A commercial promise should not.
Memory is valuable when it remembers the stable thing
The same distinction applies to the broader idea of AI memory. Remembering that a shopper was interested in running shoes can be useful. Remembering that they prefer black can save repetition. Carrying forward a product they were comparing can make a later question easier to understand.
None of those memories prove that the product still costs what it cost earlier. They do not prove that size M is still available. They do not prove that the product is still active. They do not turn yesterday's commercial state into today's commercial state.
That means a shopping assistant needs two behaviours that can sound contradictory: remember enough to maintain continuity, and distrust enough to re-check facts that can change. We treat those as compatible rather than opposing goals. Memory helps identify what deserves attention. Live commerce data decides what can be said about it now.
A stale answer can still look perfectly intelligent
Freshness failures are difficult because the resulting sentence can sound completely reasonable. Suppose retrieval finds exactly the right product. The product title fits the question, its description is relevant, and the model explains it clearly. If the stored record also carries an old price, nothing about the language itself reveals that the answer is stale.
The model can be articulate and wrong at the same time. This is why we did not try to solve freshness with another prompt instruction. "Use the latest information" is not useful if the model has only been handed an old record.
Freshness has to come from the architecture of the data path. The part of the system holding current commerce state has to be asked at the moment that state matters.
Synced product data still earns its place
Keeping live facts out of the semantic index does not make the index disposable. The two layers exist because they optimise for different questions.
The semantic index helps us find products by meaning. It can work over descriptive product information and make discovery more tolerant of language, phrasing and catalogue naming. The live lookup handles the facts that can invalidate a recommendation at the moment it reaches the shopper.
Combining those jobs into one store would make one of them worse. Rebuilding the entire semantic representation every time a unit sells would make discovery carry the burden of inventory state. Trusting the semantic copy for inventory would make an efficient discovery system into an unreliable shop assistant. We kept the responsibilities separate instead.
A shopping assistant needs current truth more than confident recall
AI shopping is often framed around memory because memory makes an assistant feel personal. A returning shopper should not have to reconstruct every preference and every product they were considering. That continuity matters.
But commerce adds a harder requirement. The assistant is not only remembering a conversation. It is making statements about things that can be bought. Once the answer includes a price, stock level or availability claim, freshness matters more than how well the conversation was remembered.
Our semantic search therefore gets to say, in effect, "this looks like the product the shopper means." It does not get to say, "this is what the product costs right now." That second statement belongs to the live store.
The result is a distinction we want to keep as shopping assistants become more capable: memory can carry intent forward, retrieval can find the right object, but changing commercial facts should be re-read at the point where they become a promise. An assistant that remembers everything but checks nothing is not current.