# Paradisomatch — Domain Glossary

The shared vocabulary for the property-search scorer. Use these terms exactly (in code,
comments, commits, reviews) so the language stays consistent.

## Core nouns

- **Property** — one listing, keyed by URL, living in the **Store**.
- **Store** — `properties.json` (source of truth) + derived `enriched_data.json`. Read/written only through `store.py` (`load`/`persist`/`upsert`), which owns merge + sanitization.
- **Enrichment** — a step that adds facts to a Property: geocode, amenities, risk/soil, land size, photos, **commune population**, **character score**, **criteria**. Each enricher writes specific fields back to the Store.
- **CP score** — the 0–5 Cyber-Prairie fit score from `cyber_prairie_score.py`: weighted criteria + post-weighting **deltas**, after the **gates**.
- **Gate** — a binary include/exclude rule (price, land ≥3000m², privacy, road noise, internet, environmental risk). A gated Property is removed regardless of score.
- **Delta** — a small ± adjustment applied after the weighted sum (character, expandability, revenue viability, facilitation, community vitality, hazards, …). A missing input usually yields a 0 (neutral) delta.
- **Shortlist** — the gate-passing Properties ranked by CP score (`cyber_prairie_shortlist.json`). "Worth tracking."
- **Frontier** — the Pareto non-dominated set over (price, CP score) — the value "diamonds" (`frontier.py`).

## Vetting (the trust layer)

- **Vetting Inputs** — the facts the vetted predicate needs: recent availability check, a photo, an analysis (character score OR ≥4 criteria), a verified land size, and a CP score.
- **Vetted / Vettable** — a Property is **Vetted** when it is substantively evaluated AND top-tier (CP ≥ `VETTED_MIN_CP`). "Worth a viewing," a strict subset of the Shortlist. The single predicate lives in `vetting.py`; the scorer writes `vetted` + `vetted_blockers` per entry. Nothing re-derives it.
- **Vetted Blockers** — the legible reasons a Property is not yet Vetted (e.g. "no photo", "no verified land size"). The work-list for making a Property Vettable.

## Pipeline

- **Pipeline** — `pipeline.py`: ordered enrichment + scoring **steps** over the Store. Default steps run unattended; the goal is that every Vetting Input is populated automatically so vetting is never silently incomplete.
