An LLM-driven shopping assistant that gives online shoppers a natural, conversational way to discover and get recommendations on retail products.
I owned conversational flows, LLM behavior, ontology development, and UI design across the product's core surfaces, working closely with product, engineering, and leadership.
Designed the end-to-end dialogue structure shoppers move through.
Defined how the assistant should reason, respond, and handle uncertainty.
Built the structured product/attribute model the assistant reasons over.
Designed the interface surfaces the conversation lives inside.
This case study covers the two problems that shaped the assistant most: what it does when it isn't sure, and how it decides what to ask.
Designing one consistent rule for when the assistant answers, verifies, or stops, instead of reacting case by case.
Grounding what the assistant asks in real shopper and sales-rep data, so the conversation adapts instead of following a script.
The hardest design problem wasn't the happy path. It was deciding what the assistant should do when it wasn't sure.
What happens when a shopper mentions several things in one message, each mapping to a different ontology element, each with its own confidence score?
Using conversation design strategies, I designed a confidence-tiered behavior model in which the LLM responded differently per confidence level. This worked initially, but broke down when a single user utterance triggered conflicting confidence levels across multiple ontology elements at once; a single tier per element wasn't enough to handle overlapping cases consistently.
I created a decision matrix to give the system one consistent rule for when to answer, when to verify, and when to stop, instead of reacting case by case inconsistently.
Case-by-case handling meant every new combination of confidence levels risked a different, unpredictable response. A single decision matrix meant the rule scaled with the complexity, rather than requiring a new rule each time.
This matrix became the basis for a multi-bot architecture. Partnering closely with engineering, we built a multi-agent system led by an orchestrator agent that routed each request to a specialized bot and system message, so the system only ever activated the logic relevant to that specific case.
This improved the user experience, reduced latency by a few seconds, and kept each agent's context narrower, faster, and more consistent. The same principle later shaped how I restructured the assistant's global system prompt as business rules and use cases grew, keeping it modular and in-scope.
Building an engaging conversation while collecting enough key shopper information to allow the recommendation engine to provide accurate product recommendations.
To ground the questions in real evidence rather than assumption, I combined two sources: usability testing and analysis of real conversation transcripts between online shoppers and sales reps. Together, these gave me both sides of the interaction: what shoppers naturally asked or expected, and what reps needed to ask to build an accurate recommendation. Understanding both perspectives was critical to designing questions that felt natural to shoppers while still serving the business's need for accurate data.
Early testing showed the LLM defaulting to the same fixed sequence of questions every time, producing conversations that felt repetitive and scripted. After aligning with leadership, it was clear the assistant needed a way to improve over time based on real data, rather than a static, one-time design decision. I analyzed real-world conversation data to weigh each question topic by how often it came up, then gave this weighting to the LLM as guidance rather than a fixed script, letting the model decide which questions mattered most for a given shopper.
Weighing questions based on live data meant the assistant's questioning adapted to context, closer to how a real sales associate would prioritize what to ask.
Closer to how a real sales associate decides what to ask.
A data-informed conversation that adapted to each shopper rather than following a rigid script, improving the conversational UX, providing a more interesting and varied conversation, and, as a result, helping deliver more accurate recommendations.