Inspiration

Traditional e-commerce search treats a request as a one-shot lookup. Real shoppers start vague, add constraints, change their minds, and sometimes have no preference for the next attribute a system asks about. ConvergeCart treats shopping as a stateful retrieval problem: understand what changed, return the best current products immediately, and ask only the question expected to help.

What it does

ConvergeCart searches a frozen 50,000-product Clothing, Shoes and Jewelry catalog through a multi-turn Agent. On every turn it updates typed dialog state, routes Buying versus Browsing behavior, retrieves a bounded candidate pool, applies constraint-first ranking, excludes proven misses, returns ten unique catalog-valid ASINs, and selects a clarification from the remaining uncertainty.

The official submission is offline_core: deterministic, credential-free, network-free during scoring, and zero-token. On the organizer's 200-session public development set it achieved Hit Rate@10 1.000, MRR 0.798056, MTTC 1.815, and TechnicalScore 0.923117. This is public-development evidence; hidden-set performance is unknown.

How we built it: the four Track 4 pillars

1. Intent routing and hybrid retrieval

A deterministic logistic estimator uses dialog evidence—exploratory openers, hard requirements, budget clauses, and overrides—to set a Buying/Browsing turn plan. SQLite FTS5 produces bounded sparse candidates. Structured category evidence, a local 384-dimensional signed-hashing projection, clause coverage, and quality/popularity priors refine the slate without a hosted vector service.

2. Dialog strategy

The state machine records typed positive, negative, hard, soft, declined, and overridden clauses. An intent override rewrites the targeted slot; a declined attribute is suppressed from future questioning. Clarifications are selected by combining public-set class priors with live candidate-pool coverage and entropy.

3. Self-evolution and dynamic context

Each turn materializes an explicit plan containing route, cutoffs, scoring weights, exclusions, and fallback state. The plan changes as evidence accumulates. A product already shown on a scored turn that did not convert is a proven miss in the evaluator protocol, so later turns contain fresh candidates.

4. Evaluation honesty and resilience

We removed a slate-timing policy that improved the composite score by delaying strong candidates; it made the user experience worse. The released agent returns its strongest current candidates immediately. Optional learned components are checksum-bound and fail closed: invalid artifacts cannot alter the judged path.

vNext experimental MVP

The repository includes an unpromoted vNext target: a reduced-v1 corpus, BAAI/bge-small-en-v1.5 dual encoder, MiniLM cross-encoder target, in-memory dense retrieval, ONNX export/runtime contracts, hard-constraint guard, and a fail-closed candidate boundary. Nosana, local, and Colab backends share the same staged DAG.

At the evidence freeze, preflight and reduced-v1 dual-encoder training had completed with checksum-bound manifests. Cross-encoder, LTR, multi-task NLU, routing/profile/clarification policies, assembled candidate, and end-to-end vNext quality metrics were not available. Training loss is not presented as retrieval quality. vNext remains experimental even if later stages finish.

Development tools

  • Visual Studio Code and OpenAI Codex for implementation support, repository consolidation, documentation, code review, and test/release workflows
  • Git and GitHub for source control and publication
  • Python virtual environments, POSIX shells, and Windows PowerShell
  • Docker and GitHub Actions for isolated validation
  • Nosana for the completed experimental GPU training stages
  • Google Colab and local MPS/CUDA runners as alternate training backends

APIs

  • Official offline_core: no API and no network dependency during scoring.
  • Optional api_augmented: OpenAI Responses API for bounded experimental state/reranking work, with structured outputs, explicit budgets, strict timeouts, telemetry, and deterministic fallback. It is not required or enabled by the judged runtime.
  • Nosana: experimental GPU job execution for vNext training. Credentials and controller state are excluded from the public repository.

Libraries and frameworks

  • Python 3.11+ standard library, including SQLite FTS5
  • NumPy for local projection/dense similarity
  • Pydantic for internal and optional hosted-output schemas
  • PyYAML for versioned configuration
  • FastAPI/Uvicorn for the optional demo backend
  • sentence-transformers, Transformers, Datasets, Accelerate, LightGBM, ONNX Runtime, Optimum, and Tokenizers for optional vNext training/inference
  • pytest, Ruff, mypy, and jsonschema for validation

Datasets, assets, and pretrained models

  • Organizer catalog: 50,000 Amazon Reviews 2023-derived Clothing, Shoes and Jewelry products; downloaded from the participant-kit release and verified by SHA-256, not redistributed here.
  • Organizer public set: 200 labeled development sessions.
  • Organizer evaluator and Agent contract: included for reproduction and integrity-checked.
  • Original deterministic stress corpora and synthetic test fixtures.
  • Reduced-v1 authorized experimental training view: 50,000 queries and 5,000 trajectories; private corpus records are not published.
  • Pinned model references: BAAI/bge-small-en-v1.5, cross-encoder/ms-marco-MiniLM-L6-v2, and microsoft/MiniLM-L12-H384-uncased. No pretrained or trained weights are committed.

Challenges

  • The composite metric can reward delaying a mid-rank hit to obtain a later rank-one hit. We explicitly rejected that behavior and optimized for immediate usefulness.
  • Public simulator text often reuses catalog wording, creating a powerful constraint fingerprint that may not generalize to natural language.
  • True slot erasure on an intent override costs some apparent accuracy compared with quietly retaining stale evidence; we kept the specified semantics.
  • Training infrastructure had to preserve corpus authorization, source revision, checkpoint, and manifest lineage across three execution backends.

Accomplishments

  • 100% Hit Rate@10 on all 200 public sessions
  • TechnicalScore improvement from 0.106710 to 0.923117 versus the starter
  • Byte-identical consecutive public evaluation results
  • Zero model tokens and zero model cost in the judged path
  • 33.7 ms recorded median steady-state turn latency on the benchmark machine
  • Fail-closed vNext runtime, export, artifact, hard-constraint, and candidate evaluation contracts
  • Completed checksum-bound vNext preflight and reduced-v1 dual-encoder stage without claiming end-to-end vNext quality

What we learned

We learned that a strong conversational shopping system is less about producing fluent text and more about maintaining correct state. Explicitly separating hard requirements, soft preferences, negative evidence, declined attributes, and intent overrides made the agent both more accurate and easier to inspect.

We also learned to treat evaluation metrics as product constraints rather than targets to game. The public metric can reward withholding a promising item until a later turn, but that creates a worse shopping experience. We chose to return the strongest current products immediately and to disclose the limits of our public-set evidence. Finally, building the official path to work without a network or API key forced us to make every dependency, artifact, and fallback explicit.

Limitations and what comes next

Public catalog-text fingerprinting is the main private-set risk. Public-derived question priors may shift, intent-override MTTC is partly protocol-bounded, cold start is much slower than steady state, and the benchmark is one-machine evidence. vNext is incomplete and unpromoted.

Next, finish the staged vNext graph; evaluate product/style holdouts, natural-language robustness, safety, integrity, public regression, stability, performance, and clean-Linux behavior; then promote only an independently validated candidate.

Built With

  • accelerate
  • datasets
  • docker
  • fastapi
  • github
  • github-actions
  • hugging-face-transformers
  • lightgbm
  • mypy
  • nosana
  • numpy
  • onnx-runtime
  • openai-codex
  • optimum
  • pydantic
  • pytest
  • python
  • pyyaml
  • ruff
  • sentence-transformers
  • sqlite-fts5
  • tokenizers
  • uvicorn
Share this project:

Updates

Submission history