-
-
Public 200-session development results: Hit@10 81.5%, MRR 0.491188, MTTC 4.925. Not the final 800-session evaluation.
-
Reproduction instructions and disclosed limitations of the local, no-LLM development prototype.
-
A supported black-to-blue preference change, replayed from real CLI output; recommendation quality remains a known limitation.
Inspiration
Shopping preferences change during a conversation. A shopper may start with black cotton shoes, switch to blue, lower the budget, and then drop a material preference. Intent Compass explores a simple question: how far can a small, inspectable local agent go by maintaining the current intent instead of treating each message as an isolated search?
What it does
Intent Compass is a conversational shopping prototype for Track #4. It updates a session-local preference snapshot, searches the frozen 50,000-product competition catalog, ranks real catalog IDs, and asks a structured follow-up question. The terminal demo exposes before/after state, recommendations, catalog evidence, and latency. The demo and evaluator call the same Python Agent.
How it was built
The implementation uses Python, FlashText alias matching, explicit parsing rules, and a reusable SQLite FTS5 index. Hard constraints filter candidates; soft preferences contribute to ranking. A lightweight policy chooses a follow-up attribute from the candidate distribution. Session state is isolated and the output follows the official Agent contract.
The shopping pipeline makes no LLM or external API calls and uses no model tokens. Catalog download and dependency installation need network access; normal local shopping inference does not. The project includes dependency pins, tests, data checksums, and reproduction commands.
The three-minute development video was made with HyperFrames, GSAP, and locally synthesized Kokoro narration. It is an animated replay of actual CLI output, not a live screen recording or a separate Web UI. AI assistance was used during development and video production.
Evidence and accomplishments
The current local regression suite has 36 passing tests. On the official public 200-session development set, the measured Hit Rate@10 is 0.815, MRR is 0.491188, and MTTC is 4.925. The corresponding technical score is 0.676356, compared with the official starter baseline of 0.10671. These are development-set results, not a final competition score; the unreleased 800-session final evaluation has not been run.
A separate four-turn local runtime sample measured 13.671 ms initialization, 57.942 ms warm p50, 64.298 ms warm p95, and about 45.2 MiB peak RSS on Apple M5 / macOS 26.4 / Python 3.13.14. The full public evaluator took several minutes; the four-turn sample is not an end-to-end throughput guarantee. Model token usage and model API cost are zero.
Challenges and what we learned
State correctness and retrieval quality are different problems. The filmed sequence demonstrates supported preference changes, but also exposes incorrect product-category matches. Public benchmark performance alone does not establish natural-language robustness.
Known unresolved cases include a budget update being misread as a pending brand answer, the phrase "No preference on material" not clearing the material facet, and different paraphrases producing different candidate rankings. These limitations are disclosed in the demo and packaged reproduction notes.
What's next
Priorities are to fix pending-answer parsing, broaden no-preference language handling, and test category relevance and paraphrase invariance. The current design intentionally uses one retrieval path; it does not implement dense-vector retrieval, LLM reranking, explicit Buying/Browsing dual-track orchestration, long-term user profiles, or dynamic workflow re-orchestration. It is a runnable development prototype, not a claim of complete challenge acceptance or production readiness.
The repository includes setup instructions and the public evaluation report. Official evaluator, API contract, and public development data originate from the TechJam2026 participant kit (commit 9c9e7c9ff6705142d6ab386dc1c432fc529df893); the frozen catalog is downloaded separately with checksum verification. The final 800-session evaluation must use the deadline-frozen solution.
Log in or sign up for Devpost to join the conversation.