{"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/producers-equilibria-and-dynamics-in","title":"Producers Equilibria and Dynamics in Engagement-Driven Recommender Systems","arxiv_id":"2401.16641","date":"2024-01-30","proceeding":null,"authors":["Krishna Acharya","Varun Vangala","Jingyan Wang","Juba Ziani"],"abstract":"Online platforms such as YouTube, Instagram heavily rely on recommender systems to decide what content to present to users. Producers, in turn, often create content that is likely to be recommended to users and have users engage with it. To do so, producers try to align their content with the preferences of their targeted user base. In this work, we explore the equilibrium behavior of producers who are interested in maximizing user engagement. We study two variants of the content-serving rule for the platform's recommender system, and provide a structural characterization of producer behavior at equilibrium: namely, each producer chooses to focus on a single embedded feature. We further show that specialization, defined as different producers optimizing for distinct types of content, naturally emerges from the competition among producers trying to maximize user engagement. We provide a heuristic for computing equilibria of our engagement game, and evaluate it experimentally. We highlight i) the performance and convergence of our heuristic, ii) the degree of producer specialization, and iii) the impact of the content-serving rule on producer and user utilities at equilibrium and provide guidance on how to set the content-serving rule.","url_abs":"https://arxiv.org/abs/2401.16641v3","url_pdf":"https://arxiv.org/pdf/2401.16641v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"links_only","authors_date_abstract":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license), from the Kaggle arXiv metadata snapshot of 2026-09-12"},"code_links":[{"paper_slug":"producers-equilibria-and-dynamics-in","repo_url":"https://github.com/krishnacharya/recsys_eq","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2401.16641","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2401.16641"}},"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":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/krishnacharya/recsys_eq","reach":{"status":"ok"}}],"summary":{"ran":7,"unverified":3},"by_repo_kind":{"official":{"samples":10,"ran":7,"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":10,"samples":[{"code_sha256_prefix":"975ade5936ca9c54","entry":"generate_uniform_user","repo":"krishnacharya/recsys_eq","repo_kind":"official","path":"source/Embeddings.py","file_url":"https://github.com/krishnacharya/recsys_eq/blob/HEAD/source/Embeddings.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"975ade5936ca9c54"}},{"code_sha256_prefix":"811607d02d094d27","entry":"generate_uniform_user","repo":"krishnacharya/recsys_eq","repo_kind":"official","path":"source/SaveEmbeddings.py","file_url":"https://github.com/krishnacharya/recsys_eq/blob/HEAD/source/SaveEmbeddings.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"811607d02d094d27"}},{"code_sha256_prefix":"a02e6b405b7f84a9","entry":"generate_uniform_users","repo":"krishnacharya/recsys_eq","repo_kind":"official","path":"source/Embeddings.py","file_url":"https://github.com/krishnacharya/recsys_eq/blob/HEAD/source/Embeddings.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a02e6b405b7f84a9"}},{"code_sha256_prefix":"a9ab717ac45c6d88","entry":"generate_uniform_users","repo":"krishnacharya/recsys_eq","repo_kind":"official","path":"source/SaveEmbeddings.py","file_url":"https://github.com/krishnacharya/recsys_eq/blob/HEAD/source/SaveEmbeddings.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a9ab717ac45c6d88"}},{"code_sha256_prefix":"9a7625834fbc0d45","entry":"linear_probability","repo":"krishnacharya/recsys_eq","repo_kind":"official","path":"source/Producers.py","file_url":"https://github.com/krishnacharya/recsys_eq/blob/HEAD/source/Producers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9a7625834fbc0d45"}},{"code_sha256_prefix":"adb1804558548447","entry":"random_rec_utilities","repo":"krishnacharya/recsys_eq","repo_kind":"official","path":"source/Producers.py","file_url":"https://github.com/krishnacharya/recsys_eq/blob/HEAD/source/Producers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"adb1804558548447"}},{"code_sha256_prefix":"3ceee4b8a4f82e7f","entry":"softmax_probability","repo":"krishnacharya/recsys_eq","repo_kind":"official","path":"source/Producers.py","file_url":"https://github.com/krishnacharya/recsys_eq/blob/HEAD/source/Producers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3ceee4b8a4f82e7f"}},{"code_sha256_prefix":"534973a45d383b67","entry":"concat_across_runs_save","repo":"krishnacharya/recsys_eq","repo_kind":"official","path":"numiters_savedframe/main_concat_embseeds.py","file_url":"https://github.com/krishnacharya/recsys_eq/blob/HEAD/numiters_savedframe/main_concat_embseeds.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"534973a45d383b67"}},{"code_sha256_prefix":"ab9c47ae0d5301c1","entry":"concat_across_seeds_save","repo":"krishnacharya/recsys_eq","repo_kind":"official","path":"saved_frames/main_concat_embseed.py","file_url":"https://github.com/krishnacharya/recsys_eq/blob/HEAD/saved_frames/main_concat_embseed.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ab9c47ae0d5301c1"}},{"code_sha256_prefix":"0918698a2e1a4a6a","entry":"save_synth_skewed","repo":"krishnacharya/recsys_eq","repo_kind":"official","path":"source/SaveEmbeddings.py","file_url":"https://github.com/krishnacharya/recsys_eq/blob/HEAD/source/SaveEmbeddings.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0918698a2e1a4a6a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}