Inspiration
Online shopping often begins with an incomplete idea: “I need comfortable shoes” or “Find me something for a formal event.” Traditional search engines treat these as static keyword queries, even though shoppers refine preferences, reject options, and change their minds throughout a conversation. We built SEAM — Stateful E-commerce Agent for Matching to make product search feel more like speaking with a knowledgeable shopping assistant. SEAM remembers what matters, asks focused questions, and continuously adapts its recommendations to the shopper’s latest intent.
What it does
SEAM turns short, evolving shopping conversations into ranked product recommendations from a catalogue of 50,000 items. It identifies whether someone is browsing or ready to buy, separates strict requirements from preferences, and asks focused follow-up questions only when they are useful.
As the conversation develops, SEAM updates its understanding of the shopper. It can accumulate new preferences, replace outdated requirements, recognise exclusions, and respond to intent changes such as “actually, ignore that.” It then combines exact constraints, keyword and category retrieval, and evidence-aware ranking to return one confident result, a shortlist, or broader recommendations.
How we built it
SEAM is an offline-first conversational agent that searches a catalogue of 50,000 products. It maintains a structured session state that separates hard requirements—such as budget, size, or material—from softer preferences. Its retrieval pipeline combines:
- Exact constraint matching for strict requirements
- Keyword, phrase, and category search for broader discovery
- Reciprocal Rank Fusion to merge multiple retrieval routes
- Evidence-aware ranking based on relevance, constraint coverage, budget fit, and user preferences
- Adaptive clarification that selects the question with the highest expected value
SEAM also recognizes intent changes such as “actually, ignore that” and replaces outdated constraints instead of allowing earlier messages to distort later recommendations. The project includes the agent, a local API, an interactive frontend, automated tests, an evaluation framework, and reproducible calibration tools.
Challenges we ran into
One major challenge was balancing clarification with action. We developed an adaptive policy that considers ranking confidence, candidate diversity, constraint coverage, and remaining turns before deciding whether to ask, return one result, or present a shortlist.
We also experimented with embeddings and semantic reranking, expecting them to improve retrieval. Instead, they reduced our evaluation score because the public sessions often contained exact catalog terms that lexical and constraint-based search handled more precisely. This taught us not to adopt a technique simply because it is more sophisticated. We kept embeddings as an optional experimental route and made the stronger deterministic pipeline the default.
Another challenge was handling evolving intent. We designed explicit append, replace, and exclusion operations so SEAM can distinguish a new preference from a correction or rejection.
Accomplishments that we're proud of
We are especially proud that SEAM achieved a 100% Hit Rate@10, 0.963 MRR, and 0.966552 Technical Score across all 200 sessions in the public development set.
Beyond the score, we built a complete, reproducible system rather than a one-off evaluation script. SEAM includes a conversational agent, adaptive question planning, persistent preference learning, hybrid retrieval, a local API, an interactive frontend, automated tests, and calibration tools. We are also proud that the default system runs entirely offline. It requires no API key, model download, or network connection during evaluation, making its results fast, deterministic, and reproducible.
What we learned
We learned that effective conversational search depends as much on state management and question selection as retrieval quality. A carefully engineered hybrid system can outperform a single search strategy while remaining transparent, testable, and reproducible.
On the 200-session public development set, SEAM achieved a 100% Hit Rate@10, 0.963 MRR, and a 0.966552 Technical Score across Buying, Browsing, Intent Override, and Boundary scenarios.
Built With
- information-retrieval
- natural-language-processing
- python
- reciprocal-rank-fusion
- sqlite
Log in or sign up for Devpost to join the conversation.