# UQO WP 26 — Can Autonomous AI Agents Discover the Fundamental Value of Real Estate? # One-command reproduction of everything that does not need paid API calls: `make all`. # Live LLM runs are explicit (`make pilot`, `make validation`, `make final`) and need keys in .env. PY ?= python3 -W ignore .PHONY: all setup test synth data features geo baselines smoke evaluate figures tables paper clean all: test synth data features baselines theory fundamental smoke evaluate tables paper setup: $(PY) -m pip install -e ".[dev]" test: $(PY) -m pytest tests -q synth: $(PY) -m agentic_valuation.data.synthetic $(PY) scripts/01_build_analytic.py --synthetic $(PY) scripts/02_splits.py --synthetic $(PY) scripts/03_features.py --synthetic data: $(PY) scripts/01_build_analytic.py $(PY) scripts/02_splits.py $(PY) scripts/05_leakage_audit.py features: $(PY) scripts/04_geo.py $(PY) scripts/03_features.py baselines: $(PY) scripts/10_train_baselines.py smoke: # mock provider, synthetic data, no keys AV_PROVIDER_MODE=mock $(PY) scripts/30_run_arm.py --arm F_independent --synthetic --n 5 --run-id smoke_F AV_PROVIDER_MODE=mock $(PY) scripts/30_run_arm.py --arm G_debate --rounds 2 --synthetic --n 5 --run-id smoke_G2 pilot: # live, 24 properties of the validation subsample (see configs/budgets.yaml) $(PY) scripts/33_run_tier.py pilot --live validation: $(PY) scripts/33_run_tier.py validation --live final: $(PY) scripts/33_run_tier.py final --live fundamental: $(PY) scripts/50_repeat_sales.py $(PY) scripts/52_rents_usercost.py $(PY) scripts/51_eval_vs_resale.py theory: $(PY) scripts/41_theory_sim.py $(PY) scripts/40_welfare_sim.py weights: # after the validation tier: aggregation weights + conformal scales, then the protocol freeze $(PY) scripts/34_fit_weights.py $(PY) scripts/31_freeze.py evaluate: $(PY) scripts/15_descriptives.py $(PY) scripts/20_evaluate.py $(PY) scripts/35_rounds_curve.py --split test $(PY) scripts/21_figures.py tables: evaluate mkdir -p paper/tables paper/figures cp results/tables/*.tex paper/tables/ 2>/dev/null || true cp figures/*.pdf paper/figures/ 2>/dev/null || true paper: cd paper && latexmk -pdf -interaction=nonstopmode -halt-on-error main.tex >/dev/null && echo "paper/main.pdf built" clean: cd paper && latexmk -C >/dev/null 2>&1 || true find . -name __pycache__ -prune -exec rm -rf {} +