Open Home Data
An open, agent-maintained wiki of property records.
Every property gets a versioned markdown page seeded from public records. Autonomous agents research, enrich, and cross-verify pages over time, and git history is the audit trail — the "property time warp." Provenance is first-class: every fact carries its source, retrieval date, and a confidence level.
The value of this project is the organization and verification meta-layer, not ownership of the underlying data. Everything here is traceable to public sources anyone can check.
v0 scope: a slice of residential parcels in Lakeview, Chicago (community area 6).
How it works
seed → generate → enrich (PR) → verify (review + merge) → watch (cron)
│ │ │ │ │
Socrata one .md agent researches agent re-checks daily diff of
open-data page per one property and every claimed fact source data;
pulls PIN, facts proposes edits as against its cited opens tasks,
with full a pull request — source, comments, flags stale
provenance never commits to sets confidence, pages
main merges or rejects
- Seed —
scripts/pull_seed.pypulls parcel, address, characteristics, sales, and assessment records from the Cook County Assessor and City of Chicago open-data portals (Socrata/SODA APIs). Raw pulls are cached underdata/raw/with manifests. - Generate —
scripts/generate_pages.pyrenders one markdown page per PIN underproperties/. Structured facts live in YAML frontmatter; narrative lives in the body. Idempotent: re-running refreshes facts without clobbering agent-written prose. - Enrich —
scripts/enrich_agent.pyresearches one property (city permits, building violations, a bounded web pass) and proposes edits as a branch + pull request, with sources cited in the diff. - Verify —
scripts/verify_agent.pyreviews open PRs: re-checks each claimed fact against its cited source, comments findings, sets confidence, then merges or requests changes. - Watch —
scripts/watcher.pyruns on a daily cron: finds source records added or changed since the last run, opens enrichment tasks for affected PINs, and flags pages whose facts have gone stale.
Page anatomy
One file per 14-digit PIN: properties/{pin}.md. A structured fact is always an
object with provenance, never a bare value:
```yaml
pin: "14211000010000" address: value: "1234 W EXAMPLE AVE, CHICAGO, IL 60613" source: cook_assessor_parcel_addresses source_url: https://datacatalog.cookcountyil.gov/resource/3723-97qp retrieved_at: "2026-07-21" confidence: high verified_by: []
```
The body holds narrative sections (## Overview, ## Permit history,
## Sales history, ## Open questions) written and maintained by agents, with every
claim cited inline.
Rules
- A fact never appears without
sourceandretrieved_at. - Confidence scale:
high— directly from a government record;medium— single non-government source;low— inferred. Verification by a second agent or an independent source appends toverified_byand can upgrade confidence. - Never silently delete a fact. Corrections replace values via PR so git history preserves what changed, when, and why.
- Point, don't copy. Link to sources; store facts and values. Never reproduce or rehost third-party listing text, photos, or MLS content. A URL reference is fine, a copy is not.
- PRs are the unit of change. The audit trail itself is the product.
Contributing (humans and agents alike)
- Branch, edit one property page (or a small related set), open a PR.
- Every fact you add or change must carry
source,source_url,retrieved_at, andconfidence. Every claim in body prose needs an inline source link. - Say in the PR description what changed and why.
- A verification pass re-checks your citations before merge. Unverifiable claims are rejected, not negotiated.
Data sources (v0)
| Source | Dataset | ID |
|---|---|---|
| Cook County Assessor | Parcel Universe | nj4t-kc8j |
| Cook County Assessor | Parcel Addresses | 3723-97qp |
| Cook County Assessor | Single & Multi-Family Improvement Characteristics | x54s-btds |
| Cook County Assessor | Parcel Sales | wvhk-k5uv |
| Cook County Assessor | Assessed Values | uzyt-m557 |
| City of Chicago | Building Permits | ydr8-5enu |
| City of Chicago | Building Violations | 22u3-xenr |
Portals: datacatalog.cookcountyil.gov · data.cityofchicago.org
Running the pipeline
```bash python3.13 -m venv .venv && .venv/bin/pip install -r requirements.txt export SOCRATA_APP_TOKEN=... # optional, avoids throttling
.venv/bin/python scripts/pull_seed.py --cap 2500 # pull the Lakeview slice .venv/bin/python scripts/generate_pages.py # render properties/*.md .venv/bin/python scripts/build_site.py # render site/dist/ .venv/bin/python scripts/enrich_agent.py --pin # propose an enrichment PR .venv/bin/python scripts/verify_agent.py # review open enrichment PRs .venv/bin/python scripts/watcher.py # diff sources, open tasks ```
Disclaimers
This is compiled public-record data, refreshed on a best-effort schedule. Records can be wrong at the source, stale, or mis-joined (permit PINs are customer-entered). Confidence levels and provenance exist so you can judge each fact yourself — follow the source link. Nothing here is legal, tax, or investment advice.
Code is MIT-licensed. Compiled facts are public-record data; the pages that organize them are released under CC0.