{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2606-17698","title":"EComAgentBench: Benchmarking Shopping Agents on Long-Horizon Tasks with Distributed Hidden Intent","arxiv_id":"2606.17698","date":"2026-06-16","proceeding":null,"authors":["Zeyao Du","Tong Li","Yanci Zhang","Haibo Zhang"],"abstract":"As LLM-based shopping agents enter production, existing benchmarks fail to capture how a shopper's requirements arrive: stated implicitly in the query, recorded in a profile, or revealed only when the right question is asked. Benchmarks that expose full intent upfront and grade only the final choice can neither pose this long-horizon challenge nor explain which requirement an agent missed. To address this gap, we introduce EComAgentBench, a benchmark of 662 tasks grounded in real Amazon products and reviews. Each task scatters these requirements across a visible query, a tool-gated profile, and scripted clarification; an agent must uncover hidden intent, verify candidates against attributes and review evidence, and commit to a single product within 100 tool calls. Moreover, typed, source-tagged rubrics grade every task, attributing each failure to a requirement and its source. Construction is automated yet reliable, with every answer fixed in code before any text is generated and every sample validated. Our evaluation of seven models reveals that even the strongest attains only 57.1% overall accuracy, and rubric satisfaction degrades from visible to hidden sources. Overall, we believe EComAgentBench will serve as a reproducible foundation for moving shopping agents from single-query search toward dependable assistance over long horizons.","url_abs":"https://arxiv.org/abs/2606.17698","url_pdf":"https://arxiv.org/pdf/2606.17698","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2606.17698","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2606.17698"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/Morizeyao/EComAgentBench_","reach":null}],"summary":{"ran":13,"unverified":1},"by_repo_kind":{"found_in_text":{"samples":14,"ran":13,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":14,"samples":[{"code_sha256_prefix":"083a8c2a0585cc60","entry":"compute_metrics","repo":"Morizeyao/EComAgentBench_","repo_kind":"found_in_text","path":"src/evaluation/metrics.py","file_url":"https://github.com/Morizeyao/EComAgentBench_/blob/HEAD/src/evaluation/metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"083a8c2a0585cc60"}},{"code_sha256_prefix":"f8ea648546e71bdd","entry":"get_intent_generation_rules","repo":"Morizeyao/EComAgentBench_","repo_kind":"found_in_text","path":"src/generation/config.py","file_url":"https://github.com/Morizeyao/EComAgentBench_/blob/HEAD/src/generation/config.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"f8ea648546e71bdd"}},{"code_sha256_prefix":"1d61350f117a7b6d","entry":"get_min_implicit_count","repo":"Morizeyao/EComAgentBench_","repo_kind":"found_in_text","path":"src/generation/config.py","file_url":"https://github.com/Morizeyao/EComAgentBench_/blob/HEAD/src/generation/config.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"1d61350f117a7b6d"}},{"code_sha256_prefix":"56213dc70aa96171","entry":"keyword_tokens","repo":"Morizeyao/EComAgentBench_","repo_kind":"found_in_text","path":"src/generation/utils.py","file_url":"https://github.com/Morizeyao/EComAgentBench_/blob/HEAD/src/generation/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"56213dc70aa96171"}},{"code_sha256_prefix":"712e9612e7685160","entry":"load_config","repo":"Morizeyao/EComAgentBench_","repo_kind":"found_in_text","path":"src/generation/pipeline.py","file_url":"https://github.com/Morizeyao/EComAgentBench_/blob/HEAD/src/generation/pipeline.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"712e9612e7685160"}},{"code_sha256_prefix":"fbdb8f679dab41b1","entry":"normalize_provider","repo":"Morizeyao/EComAgentBench_","repo_kind":"found_in_text","path":"src/llm/utils.py","file_url":"https://github.com/Morizeyao/EComAgentBench_/blob/HEAD/src/llm/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"fbdb8f679dab41b1"}},{"code_sha256_prefix":"784e6a3cfa0b903a","entry":"normalize_text","repo":"Morizeyao/EComAgentBench_","repo_kind":"found_in_text","path":"src/generation/utils.py","file_url":"https://github.com/Morizeyao/EComAgentBench_/blob/HEAD/src/generation/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"784e6a3cfa0b903a"}},{"code_sha256_prefix":"cdf09efeaca177ba","entry":"normalize_token","repo":"Morizeyao/EComAgentBench_","repo_kind":"found_in_text","path":"src/generation/utils.py","file_url":"https://github.com/Morizeyao/EComAgentBench_/blob/HEAD/src/generation/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"cdf09efeaca177ba"}},{"code_sha256_prefix":"c2c9c976bd3ce915","entry":"requires_voucher","repo":"Morizeyao/EComAgentBench_","repo_kind":"found_in_text","path":"src/generation/config.py","file_url":"https://github.com/Morizeyao/EComAgentBench_/blob/HEAD/src/generation/config.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"c2c9c976bd3ce915"}},{"code_sha256_prefix":"f6f07109a044a167","entry":"resolve_api_key","repo":"Morizeyao/EComAgentBench_","repo_kind":"found_in_text","path":"src/llm/utils.py","file_url":"https://github.com/Morizeyao/EComAgentBench_/blob/HEAD/src/llm/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"f6f07109a044a167"}},{"code_sha256_prefix":"b9110da85a98be4b","entry":"resolve_base_url","repo":"Morizeyao/EComAgentBench_","repo_kind":"found_in_text","path":"src/llm/utils.py","file_url":"https://github.com/Morizeyao/EComAgentBench_/blob/HEAD/src/llm/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"b9110da85a98be4b"}},{"code_sha256_prefix":"88b8d1d36c69e34c","entry":"resolve_llm_config","repo":"Morizeyao/EComAgentBench_","repo_kind":"found_in_text","path":"src/llm/config.py","file_url":"https://github.com/Morizeyao/EComAgentBench_/blob/HEAD/src/llm/config.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"88b8d1d36c69e34c"}},{"code_sha256_prefix":"ac45a555f889e079","entry":"resolve_prediction_mode_config","repo":"Morizeyao/EComAgentBench_","repo_kind":"found_in_text","path":"src/llm/config.py","file_url":"https://github.com/Morizeyao/EComAgentBench_/blob/HEAD/src/llm/config.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"ac45a555f889e079"}},{"code_sha256_prefix":"405da4257053353a","entry":"load_intents","repo":"Morizeyao/EComAgentBench_","repo_kind":"found_in_text","path":"src/generation/pipeline.py","file_url":"https://github.com/Morizeyao/EComAgentBench_/blob/HEAD/src/generation/pipeline.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"405da4257053353a"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CL","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}