Inspiration

Shopping intent moves. Search should keep up.

A shopper may start with “something comfortable,” add a material preference, then change direction entirely. A useful assistant must distinguish what still matters from what has been rejected or replaced.

We built Adaptive Shopping Copilot to make that changing intent actionable: maintain current preferences, choose a retrieval strategy, and return catalog-grounded recommendations with a useful next question.

What it does

Our Track 4 project is a stateful search agent over the competition's frozen 50,000-product catalog. It accumulates preferences, handles overrides and no-preference statements, distinguishes Buying from Browsing, and returns ranked products with structured clarification.

One Agent, two explicit configurations:

  • Offline by default. After catalog and local-model setup, the default runs locally without external API calls.
  • LLM enhancement by choice. An opt-in DeepSeek path reranks eligible existing Top-10 candidates while protecting constraints. It does not expand the candidate set or provide dialogue understanding. Mode is selected before a run; an API key alone never enables it. Unavailable enhancement preserves the pre-rerank order and reports the reason.

The local visualizer makes simulated conversations, recommendation changes and execution diagnostics inspectable. Evaluator-only targets and HIT annotations remain separate from Agent inputs. The scored Agent is headless and does not require a hosted chat service.

How we built it

Current session state becomes a distilled query. SQLite FTS5 retrieves candidates; constraint-aware ranking and guarded filtering refine them. Broad Browsing requests can activate local MiniLM embeddings and reciprocal-rank fusion, while narrow requests retain the structured route.

The delivery uses one reset/respond interface, explicit optional-call budgets, observable fallbacks and an independently runnable source package. Setup instructions, checksums and evaluation commands make the result inspectable without assembling other branches. Credentials, catalog data and model weights are not shipped in the package.

Project stack: Python, SQLite, NumPy, PyTorch, Hugging Face Transformers, Sentence Transformers, HTML, CSS, JavaScript and the optional DeepSeek API. The local model is pinned sentence-transformers/all-MiniLM-L6-v2; the retained optional reranking configuration uses deepseek-v4-flash.

The official participant kit derives its data from McAuley Lab's Amazon Reviews 2023 Clothing_Shoes_and_Jewelry category. Dataset and third-party notices are included in the repository.

Challenges and design decisions

The hardest problem was not remembering more text, but remembering the right requirements. Rejected and overridden preferences must stop influencing retrieval; “no preference” must not become a repeated question.

We also separated requested mode from what actually executed. Local retrieval, optional reranking and degraded behavior share one contract, but their diagnostics must remain honest.

We compared changes using a fixed Development-160 protocol and four folds. The retained semantic route is conditional rather than globally active: additional model complexity had to earn its place through measured results.

Results we can reproduce

After freezing the offline configuration, one public evaluation found the target in the Top-10 in 186 of 200 simulated sessions.

Metric Frozen offline Full-200
HitRate@10 0.930000
MRR 0.527544
Mean Turns to Conversion 4.105000
TechnicalScore 0.761163

Across 807 turns, the run recorded zero external API calls, invalid responses, response exceptions or fallback events. That means no external API charges for this run—not zero local compute or setup cost.

The independent package reproduced Development-160/four-fold results with exact core/package response parity and TechnicalScore 0.766231. Automated tests cover the Agent contract, delivery package and visualizer; per-session results, source/input hashes and timing evidence are retained outside Agent runtime.

Evidence boundary: these are exposed public-data evaluations, not unseen validation or real-user conversion. Development-160 and Full-200 are different populations, not a before/after comparison. TechnicalScore is an evaluator metric, not the overall judging score. Private-set performance is unknown. Verification used a prepared same-machine environment, not a fresh cross-machine installation. Historical LLM results are not new live measurements of this integrated package.

Demo

Watch the three-minute demo on YouTube.

The embedded demo shows the offline simulated workflow, including changing preferences, execution diagnostics and public evaluation results. Optional LLM reranking is explained, not executed in the recording.

What we learned and what's next

A better shopping assistant connects current intent, retrieval choices and the next question—not just a ranked list. Our contribution is an inspectable, locally evaluable component with external-model use under explicit control.

Current limitations include priority-biased clarification, incomplete over-generality retrieval cutoff, no long-term profile updating/ranking, and no self-refining workflow orchestration. These are Track 4 coverage gaps, not finished capabilities. Next priorities are cross-machine validation, stronger clarification/profile handling, and live quality, cost and latency evaluation of the optional LLM integration. Business impact and production reliability have not been measured.

Team and tools

double zhang

  • ChenZhang-77: context/preference correctness fixes, guarded DeepSeek handoff and local dialogue visualization.
  • Pat7ryk: retrieval/ranking, evaluation tooling, release integration and the standalone dual-mode package.

We used Git, the macOS terminal, Python unittest and Codex. AI coding assistance supported implementation, testing, review and documentation; the team reviewed the resulting code and claims.

Demo narration was generated locally with Kokoro (af_heart, via kokoro-onnx). FFmpeg and Pillow supported video production. The cover uses OpenAI-generated conceptual artwork, not an application screenshot. These are presentation tools, not dependencies of the scored Agent; no music was added.

Explore the project

Source, setup and reproducibility on main

submission/ contains the standalone Agent, configuration and technical report. docs/delivery_reports/ contains the numerical evidence; visualizer/ provides the optional local demo. No branch assembly is required.

Built With

Share this project:

Updates

Submission history