Engineering Entity Resolution for the LLM Era: Requirements, Architecture, and Evaluation of an Open-Source Library
Resumo
Entity resolution (ER) research has converged on dense embeddings for blocking and large language models (LLMs) for matching, but open-source tooling has not followed: mainstream libraries centre on older method families, and where LLM matching appears, a matcher failure (a refusal, a timeout, or malformed output) is silently scored as a non-match and enters the reported quality metrics. This paper frames packaging that pipeline as a software-engineering problem for an LLM-enabled system, and presents Denselinkage, an open-source, typed Python library structured as a requirements-driven ports-and-adapters architecture: ten typed ports around a numpy/pandas core, with heavy backends behind optional extras. Its distinctive decision is a typed failure contract: a matcher failure becomes a per-pair typed outcome, retried or excluded from precision and recall, not scored as a non-match. The architecture is evaluated against its requirements using re-runnable checks: the public contract stayed stable across three releases and evolved only by addition, heavy dependencies were kept out of the core, and structured-output matching produced no malformed verdicts, whereas a brittle free-text parser on the same data masked a 99% failure rate on a deliberately weak model. Controlled fault injection shows the silent convention understating F1 by 9.7 points at a 20% failure rate, and shows exclusion to be conditional on coverage when failures are not random. The library and a reproducibility package are openly available.
Referências
Amit Bagga and Breck Baldwin. 1998. Algorithms for Scoring Coreference Chains. In Proc. LREC 1998, Linguistic Coreference Workshop. 563–566.
Joshua Bloch. 2006. How to Design a Good API and Why It Matters. In OOPSLA ’06 Companion. 506–507. DOI: 10.1145/1176617.1176622
Peter Christen. 2012. Data Matching: Concepts and Techniques for Record Linkage, Entity Resolution, and Duplicate Detection. Springer. DOI: 10.1007/978-3-642-31164-, 2
Alistair Cockburn. 2005. Hexagonal Architecture (Ports and Adapters). [link].
Ran El-Yaniv and Yair Wiener. 2010. On the Foundations of Noise-free Selective Classification. Journal of Machine Learning Research 11 (2010), 1605–1641.
Neal Ford, Rebecca Parsons, and Patrick Kua. 2017. Building Evolutionary Architectures: Support Constant Change (1 ed.). O’Reilly.
Silvery D. Fu, David Wang, Wen Zhang, and Kathleen Ge. 2024. Liberal Entity Matching as a Compound AI Toolchain. arXiv preprint arXiv:2406.11255.
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.
Yonatan Geifman and Ran El-Yaniv. 2017. Selective Classification for Deep Neural Networks. In Advances in Neural Information Processing Systems (NeurIPS).
Saibo Geng, Hudson Cooper, Michał Moskal, Samuel Jenkins, Julian Berman, Nathan Ranchin, Robert West, Eric Horvitz, and Harsha Nori. 2025. JSON-SchemaBench: A Rigorous Benchmark of Structured Outputs for Language Models. arXiv preprint arXiv:2501.10868 (2025).
Alan R. Hevner, Salvatore T. March, Jinsoo Park, and Sudha Ram. 2004. Design Science in Information Systems Research. MIS Quarterly 28, 1 (2004), 75–105. DOI: 10.2307/25148625
Ekaterini Ioannou, Konstantinos Nikoletos, and George Papadakis. 2025. pyJedAI: A Library with Resolution-Related Structures and Procedures for Products. INFORMS Journal on Computing 37, 3 (2025), 516–530. DOI: 10.1287/ijoc.2023.0410
Yuliang Li, Jinfeng Li, Yoshihiko Suhara, AnHai Doan, and Wang-Chiew Tan. 2020. Deep Entity Matching with Pre-Trained Language Models. Proceedings of the VLDB Endowment 14, 1 (2020), 50–60. DOI: 10.14778/3421424.3421431
Robin Linacre, Sam Lindsay, Theodore Manassis, Zoe Slade, and Tom Hepworth. 2022. Splink: Free software for probabilistic record linkage at scale. International Journal of Population Data Science 7, 3 (2022), 1794. DOI: 10.23889/ijpds.v7i3.1794
Sidharth Mudgal, Han Li, Theodoros Rekatsinas, AnHai Doan, et al. 2018. Deep Learning for Entity Matching: A Design Space Exploration. In SIGMOD 2018. 19–34. DOI: 10.1145/3183713.3196926
Brad A. Myers and Jeffrey Stylos. 2016. Improving API Usability. Commun. ACM 59, 6 (2016), 62–69. DOI: 10.1145/2896587
Andrei Olar. 2025. Resolvi: A Reference Architecture for Extensible, Scalable and Interoperable Entity Resolution. arXiv preprint arXiv:2503.08087 (2025).
George Papadakis, Dimitrios Skoutas, Emmanouil Thanos, and Themis Palpanas. 2021. Blocking and Filtering Techniques for Entity Resolution: A Survey. Comput. Surveys 53, 2 (2021), 31. DOI: 10.1145/3377455
Fabian Pedregosa, Gaël Varoquaux, Alexandre Gramfort, Vincent Michel, et al. 2011. Scikit-learn: Machine Learning in Python. Journal of Machine Learning Research 12 (2011), 2825–2830.
Ralph Peeters, Aaron Steiner, and Christian Bizer. 2025. Entity Matching using Large Language Models. In Proceedings of the 28th International Conference on Extending Database Technology (EDBT 2025). 529–541. DOI: 10.48786/edbt.2025.42
Tom Preston-Werner. 2013. Semantic Versioning 2.0.0. [link].
Python Packaging Authority. 2020. pyproject.toml specification – [project.optional-dependencies] (extras). [link].
Steven Raemaekers, Arie vanDeursen, and Joost Visser. 2017. Semantic versioning and impact of breaking changes in the Maven repository. Journal of Systems and Software 129 (2017), 140–158. DOI: 10.1016/j.jss.2016.04.008
Irum Rauf, Elena Troubitsyna, and Ivan Porres. 2019. A systematic mapping study of API usability evaluation methods. Computer Science Review 33 (2019), 49–68. DOI: 10.1016/j.cosrev.2019.05.001
D. Sculley, Gary Holt, Daniel Golovin, Eugene Davydov, et al. 2015. Hidden Technical Debt in Machine Learning Systems. In NIPS 2015. 2503–2511.
Emma Harper Smith. 2017. PEP 561 – Distributing and Packaging Type Information. Python Enhancement Proposal. [link].
Jeffrey Stylos and Steven Clarke. 2007. Usability Implications of Requiring Parameters in Objects’ Constructors. In 29th International Conference on Software Engineering (ICSE 2007). 529–539. DOI: 10.1109/ICSE.2007.92
Jeffrey Stylos and Brad A. Myers. 2008. The Implications of Method Placement on API Learnability. In 16th ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE-16). 105–112. DOI: 10.1145/1453101.1453117
Saravanan Thirumuruganathan, Han Li, Nan Tang,MouradOuzzani, Yash Govind, Derek Paulsen, Glenn Fung, and AnHai Doan. 2021. Deep Learning for Blocking in Entity Matching: A Design Space Exploration. Proceedings of the VLDB Endowment 14, 11 (2021), 2459–2472. DOI: 10.14778/3476249.3476294
Tianshu Wang, Xiaoyang Chen, Hongyou Lin, Xuanang Chen, Xianpei Han, Le Sun, Hao Wang, and Zhenyu Zeng. 2025. Match, Compare, or Select? An Investigation of Large Language Models for Entity Matching. In COLING 2025. 96–109.
Yuxin Wang, Yuhan Chen, Zeyu Li, Xueze Kang, Yuchu Fang, Yeju Zhou, Yang Zheng, Zhenheng Tang, Xin He, Rui Guo, Xin Wang, Qiang Wang, Amelie Chi Zhou, and Xiaowen Chu. 2024. BurstGPT: A Real-world Workload Dataset to Optimize LLM Serving Systems. arXiv preprint arXiv:2401.17644 (2024).
Roel J. Wieringa. 2014. Design Science Methodology for Information Systems and Software Engineering. Springer. DOI: 10.1007/978-3-662-43839-8
Claes Wohlin, Per Runeson, Martin Höst, Magnus C. Ohlsson, Björn Regnell, and Anders Wesslén. 2012. Experimentation in Software Engineering. Springer. DOI: 10.1007/978-3-642-29044-2
Laerte Xavier, Aline Brito, André Hora, and Marco Tulio Valente. 2017. Historical and impact analysis of API breaking changes: A large-scale study. In SANER 2017. 138–147. DOI: 10.1109/SANER.2017.7884616
Daoguang Zan, Bei Chen, Zeqi Lin, Bei Guan, Yongji Wang, and Jian-Guang Lou. 2022. When Language Model Meets Private Library. In Findings of the Association for Computational Linguistics: EMNLP 2022.
Alexandros Zeakis, George Papadakis, Dimitrios Skoutas, and Manolis Koubarakis. 2023. Pre-trained Embeddings for Entity Resolution: An Experimental Analysis. Proceedings of the VLDB Endowment 16, 9 (2023), 2225–2238. DOI: 10.14778/3598581.3598594
