Each farm is a map, an analysis and a spend timeline built from its own parcel list.
| Farm | Status | Properties | Median value | Cost per drop | 12 touches/yr | List as of | Actions logged |
|---|---|---|---|---|---|---|---|
| GOOF / North Heights — $830K+ SFR | active | 267 | $1,036,288 | $347.34 | $4,168 | 2026-04-29 | 6 |
No code changes. Three steps:
data/farms/<slug>/parcels.csv — any column names.farms in config/direct-mail-farms.json: label, area,
source, criteria, a columns map from our field names onto the vendor's headers,
economics, and the campaign rows.python3 tools/farm_map_build.py --farm <slug>.The map, the statistics, the turnover model, the cost model, the tables and the timeline are all derived from that config. A field the vendor does not supply renders MISSING; it is never invented.