1\section{Reproducibility statement}2\label{app:repro}34The complete pipeline is contained in the replication repository (\texttt{wp21\_uqo}, spbgit). Discovery:5\texttt{scripts/discovery/} (Semantic Scholar bulk search with resumable logging, Crossref and arXiv harvesters, query file).6Screening: \texttt{scripts/screening/} (deduplication and rule-based scoring, keyword file, search audit and PRISMA counts);7agent decisions with reasons in \texttt{data/metadata/screening\_batches/}. Retrieval: \texttt{scripts/extraction/fetch\_pdfs.py}8(Unpaywall, Semantic Scholar, arXiv; every attempt logged with status and SHA-256 of the file). Extraction:9\texttt{prepare\_tables.py} (page scoring and dumps), the written protocol and JSON schema, one JSON per paper in10\texttt{data/extracted/json/}, the independent duplicate extractions in \texttt{data/validated/json/} and their comparison11(\texttt{scripts/validation/compare\_extractions.py}). Harmonisation: \texttt{scripts/harmonization/} (taxonomy, country12mapping, conversion formulas, effects-table builder). Econometrics: \texttt{scripts/econometrics/meta\_models.R} (metafor,13clubSandwich) and \texttt{python\_meta.py} (REML, PET-PEESE, Bayesian Gibbs sampler, leave-one-out, grouped machine learning).14Figures and tables: \texttt{scripts/visualization/}; every number quoted in the text is a macro in15\texttt{paper/tables/numbers.tex} generated from the result files. Software: Python 3.14 (numpy, scipy, pandas, matplotlib,16scikit-learn, PyMuPDF), R 4.x (metafor, clubSandwich); random seeds fixed at 20261020. Raw PDFs are not redistributed; the17retrieval log allows them to be re-downloaded from the same open-access locations. The screening and extraction steps use18large-language-model agents following written protocols; their outputs are deterministic artefacts stored in the repository,19and the validation exercise of Section~\ref{sec:extraction} measures their reliability.20