SPB Git forge

spb/wp21_uqo

Public
0commits 0branches 0releases
0 Bsize
maindefault branch
—last push
3.3 KB

# WP21 — LLM-assisted coefficient extraction protocol (Phase C)

Input per paper: data/extracted/dumps/<record_id>.txt (metadata header, abstract, candidate table pages with page numbers). Output per paper: data/extracted/json/<record_id>.json conforming to the schema below. One extractor agent per batch of papers; an independent second extractor re-does a random 15 % sample (data/validated/). Rules:

  1. Extract ONLY what is printed. Never infer a standard error; if only stars are given, record se: null, p_stars: "***" and the star legend in notes. If t-statistics are in parentheses (check the table note), record t, not se.
  2. One row per coefficient of a hedonic variable (taxonomy in scripts/harmonization/taxonomy.yaml) per model (column). Record the exact printed variable name and the table/column/page. Do not extract constants, fixed-effect dummies, or variables that are not property/neighbourhood/environment/location/market/AI characteristics.
  3. Record the dependent variable and its transformation (log, level, boxcox, per_m2, other) and the regressor transformation (level, log, binary, dummy, squared, other) and unit (m2, sqft, km, miles, m, years, count, index, share, db, currency, ...). If a variable enters as log, say so.
  4. Study-level fields: country, region/city, sample period (start/end years of the transactions), property type (single_family / condo_apartment / multifamily / rental / mixed / unknown), price type (transaction / listing / appraisal / rent), n_obs (per model if it varies), estimator (OLS / WLS / spatial_lag / spatial_error / SAC / GWR / FE_panel / IV / quantile / ML_marginal / other), fixed effects (time, location), SE type (OLS / robust / clustered / unknown), R² if printed.
  5. confidence: high when the number was read from a clear table with an explicit SE/t legend; medium when the legend is ambiguous or the table is partly garbled; low when a value had to be guessed from context (then it must not be used).
  6. If the paper is not a hedonic price study after all (no residential price outcome or no characteristic coefficients), return {"record_id": ..., "eligible": false, "exclusion_reason": "..."}.

# JSON schema (per paper)

json
{
  "record_id": "string", "eligible": true, "exclusion_reason": null,
  "study": {"title": "", "year": 0, "doi": "", "country": "", "region_city": "", "sample_start": 0, "sample_end": 0,
            "property_type": "", "price_type": "", "data_source": "", "document_type": "journal|working_paper|thesis|conference|chapter",
            "estimators": [""], "spatial_method": "", "time_fe": true, "location_fe": true, "se_type": "", "n_obs_total": 0,
            "ai_methods": [""], "notes": ""},
  "models": [{"model_id": "T2-c1", "table": "2", "column": "1", "page": 12, "dep_var": "", "dep_transform": "log", "estimator": "OLS",
              "n_obs": 0, "r2": null, "se_or_t_in_parentheses": "se|t|p|none", "sample_subset": ""}],
  "coefficients": [{"model_id": "T2-c1", "var_name_printed": "", "taxonomy_id": "living_area", "x_transform": "log", "x_unit": "m2",
                    "beta": 0.0, "se": null, "t": null, "p": null, "p_stars": "", "ci_lo": null, "ci_hi": null, "page": 12,
                    "confidence": "high", "notes": ""}]
}