{
  "product": "civic-data",
  "summary": "Cleaned, normalized, and documented Louisville public open data. This document is the as-built data reality — what we actually hold, what it honestly measures, how much to trust it, and (in the lineage half) exactly what we did to it and why. It is regenerated from the live database + ingest code; the numbers cannot drift from it.",
  "city_key": "louisville",
  "geography_unit": "ZIP code (41-ZIP Louisville boundary set)",
  "as_of": "2026-07-12",
  "data_version": "2026-07-12+630e3609",
  "dictionary": {
    "human": "data-dictionary.md",
    "machine": "data-reality.json",
    "as_of": "2026-07-12",
    "data_version": "2026-07-12+27720116",
    "sha256": {
      "data-dictionary.md": "91d64297266e2defe240afb381bfc4fac11ac7664d3cab583dfafae5a38068d3",
      "data-reality.json": "5da4c723215361e8a446069b730caef8b03afcbf5d2480bfafe161438499df81"
    },
    "note": "The dictionary's data_version hashes domain counts only; the lake's hashes the full catalog content - different values by construction. `honesty` blocks appear on kind == 'domain' datasets (reference/MDM tables have no authored overlay)."
  },
  "generated_at": "2026-07-13T01:49:20.888053+00:00",
  "engine": "DuckDB over GeoParquet (no server). Geometry is WKB, EPSG:4326.",
  "glob_convention": "Read any dataset as read_parquet('<path>/**/*.parquet').",
  "duckdb_hint": "-- illustrative --\nSELECT zip_code, count(*) FROM read_parquet('crime/**/*.parquet') WHERE zip_code='40202' GROUP BY 1;",
  "trust_tiers": {
    "trendable": "Clean, full multi-year coverage — safe for time series and trend claims.",
    "viewable_caveated": "Real data with gaps/cliffs/discontinuities — viewable within a stated window, must not be presented as an uncaveated trend.",
    "snapshot_only": "No honest time series — current-state snapshot only.",
    "unsupported": "Claims the data cannot back — named so nobody proposes vaporware on top."
  },
  "datasets": [
    {
      "key": "crime",
      "title": "Crime incidents (LMPD / NIBRS)",
      "trust_tier": "trendable",
      "kind": "domain",
      "grain": "One row per reported incident. UNIQUE(source_id, source_dataset); source carries ~1.18 offense-rows per incident, deduped to one row via ON CONFLICT.",
      "path": "crime/",
      "partitioned_by": "year",
      "row_count": 1242777,
      "year_column": "incident_date",
      "geometry": true,
      "crs": "EPSG:4326",
      "columns": [
        {
          "name": "id",
          "type": "bigint"
        },
        {
          "name": "source_id",
          "type": "text"
        },
        {
          "name": "incident_date",
          "type": "date"
        },
        {
          "name": "incident_time",
          "type": "time without time zone"
        },
        {
          "name": "offense_type",
          "type": "text"
        },
        {
          "name": "offense_description",
          "type": "text"
        },
        {
          "name": "location_address",
          "type": "text"
        },
        {
          "name": "latitude",
          "type": "double precision"
        },
        {
          "name": "longitude",
          "type": "double precision"
        },
        {
          "name": "geometry",
          "type": "GEOMETRY (WKB, EPSG:4326)"
        },
        {
          "name": "census_tract_geoid",
          "type": "text"
        },
        {
          "name": "neighborhood_id",
          "type": "integer"
        },
        {
          "name": "zip_code",
          "type": "text"
        },
        {
          "name": "premise_type",
          "type": "text"
        },
        {
          "name": "weapon_used",
          "type": "text"
        },
        {
          "name": "status",
          "type": "text"
        },
        {
          "name": "source_dataset",
          "type": "text"
        },
        {
          "name": "bronze_id",
          "type": "bigint"
        },
        {
          "name": "zip_derived",
          "type": "boolean"
        },
        {
          "name": "year",
          "type": "partition"
        }
      ],
      "provenance": {
        "license": "Louisville Metro Open Data — published under the Open Data Commons Public Domain Dedication and License (PDDL; verified 2026-07-11 at data.louisvilleky.gov/pages/terms-of-use-and-license, backed by Open Data Ordinance O-243-22). Share/create/adapt permitted, no attribution required; when republishing modified data, identify the source, version, and modifications made - which this project's generated lineage layer does per dataset. We license only our added value (normalization + documentation), never the city's underlying data - see LICENSE-data (CC BY 4.0).",
        "source_note": "ArcGIS Feature Services, one service per year (CRIME_SERVICES registry).",
        "source_pulls": [
          {
            "source_dataset": "crime-data-2007",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Crime_Data_20071/FeatureServer/0",
            "pulled_at": "2026-07-09T00:32:32.574705+00:00",
            "source_rowcount": 90767
          },
          {
            "source_dataset": "crime-data-2008",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Crime_Data_20081/FeatureServer/0",
            "pulled_at": "2026-07-09T00:34:15.189673+00:00",
            "source_rowcount": 86481
          },
          {
            "source_dataset": "crime-data-2009",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Crime_Data_2009/FeatureServer/0",
            "pulled_at": "2026-07-09T00:35:48.609882+00:00",
            "source_rowcount": 78380
          },
          {
            "source_dataset": "crime-data-2010",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Crime_Data_2010/FeatureServer/0",
            "pulled_at": "2026-07-09T00:37:22.995521+00:00",
            "source_rowcount": 82871
          },
          {
            "source_dataset": "crime-data-2011",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Crime_Data_2011/FeatureServer/0",
            "pulled_at": "2026-07-09T00:39:03.051703+00:00",
            "source_rowcount": 86013
          },
          {
            "source_dataset": "crime-data-2012",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Crime_Data_2012/FeatureServer/0",
            "pulled_at": "2026-07-09T00:40:44.599593+00:00",
            "source_rowcount": 81406
          },
          {
            "source_dataset": "crime-data-2013",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Crime_Data_2013/FeatureServer/0",
            "pulled_at": "2026-07-09T00:42:18.841555+00:00",
            "source_rowcount": 77127
          },
          {
            "source_dataset": "crime-data-2014",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Crime_Data_2014/FeatureServer/0",
            "pulled_at": "2026-07-09T00:43:49.530667+00:00",
            "source_rowcount": 77466
          },
          {
            "source_dataset": "crime-data-2015",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Crime_Data_2015/FeatureServer/0",
            "pulled_at": "2026-07-09T00:45:23.764007+00:00",
            "source_rowcount": 79839
          },
          {
            "source_dataset": "crime-data-2016",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Crime_Data_2016/FeatureServer/0",
            "pulled_at": "2026-07-09T00:47:02.585724+00:00",
            "source_rowcount": 84535
          },
          {
            "source_dataset": "crime-data-2017",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Crime_Data_2017/FeatureServer/0",
            "pulled_at": "2026-07-09T00:48:42.167407+00:00",
            "source_rowcount": 82113
          },
          {
            "source_dataset": "crime-data-2018",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Crime_Data_2018_/FeatureServer/0",
            "pulled_at": "2026-07-09T00:50:17.303049+00:00",
            "source_rowcount": 80000
          },
          {
            "source_dataset": "crime-data-2019",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/CRIME_DATA2019/FeatureServer/0",
            "pulled_at": "2026-07-09T00:51:48.656485+00:00",
            "source_rowcount": 73420
          },
          {
            "source_dataset": "crime-data-2020",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/crime_2020/FeatureServer/0",
            "pulled_at": "2026-07-09T00:53:11.276631+00:00",
            "source_rowcount": 70233
          },
          {
            "source_dataset": "crime-data-2021",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_Metro_KY_Crime_Data_2021/FeatureServer/0",
            "pulled_at": "2026-07-09T00:54:40.389744+00:00",
            "source_rowcount": 72127
          },
          {
            "source_dataset": "crime-data-2022",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_Metro_KY_Crime_Data_2022/FeatureServer/0",
            "pulled_at": "2026-07-09T00:56:08.746325+00:00",
            "source_rowcount": 71506
          },
          {
            "source_dataset": "crime-data-2023",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/crime_data_2023/FeatureServer/0",
            "pulled_at": "2026-07-09T00:57:36.143306+00:00",
            "source_rowcount": 71502
          },
          {
            "source_dataset": "crime-data-2024",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/crimedata2024/FeatureServer/0",
            "pulled_at": "2026-07-09T00:59:03.013637+00:00",
            "source_rowcount": 70914
          },
          {
            "source_dataset": "crime-data-2025",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/crime_data_2025/FeatureServer/0",
            "pulled_at": "2026-07-09T01:00:28.654285+00:00",
            "source_rowcount": 70279
          },
          {
            "source_dataset": "crime-data-2026",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/crime_data_2026/FeatureServer/0",
            "pulled_at": "2026-07-09T01:01:27.640842+00:00",
            "source_rowcount": 32670
          }
        ],
        "cite": "civic-data: Crime incidents (LMPD / NIBRS) (crime). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      },
      "honesty": {
        "measures_vs_assumes": "Measures crimes REPORTED to and recorded by LMPD — not crime. Under-reported offense types (much property/sexual crime) are structurally absent; enforcement intensity shapes the counts.",
        "trend_window": "2007–present for incident counts (NIBRS-era services). Occurrence dates BEFORE 2007 appear on later-reported incidents (cold cases/delayed reports) and future-dated typos exist — filter by incident_date range before trending.",
        "definitional_drift": "NIBRS coverage shifts 2007–2011: unmapped codes 6–7.5%/yr then 1–3% from 2012. Violent/property split slightly understated in 2007–2011. Offense-dedup keeps one offense per incident (last-write-wins), so the offense MIX can be marginally off; incident COUNTS are sound.",
        "representativeness_bias": "HIGHEST-STAKES field. Over-policed areas read as 'high crime' when they may be high-enforcement. Presenting reported-crime density as neutral 'safety' risks amplifying policing bias. Frame as reported incidents, never 'how dangerous a place is'.",
        "pii_tier": "sensitive-aggregate",
        "cadence": "Source updates continuously; per-year services re-pulled on demand."
      }
    },
    {
      "key": "service_requests",
      "title": "311 service requests (Open311)",
      "trust_tier": "viewable_caveated",
      "kind": "domain",
      "grain": "One row per service request. UNIQUE(service_request_id, source_dataset).",
      "path": "service_requests/",
      "partitioned_by": "year",
      "row_count": 2209988,
      "year_column": "requested_datetime",
      "geometry": true,
      "crs": "EPSG:4326",
      "columns": [
        {
          "name": "id",
          "type": "bigint"
        },
        {
          "name": "service_request_id",
          "type": "text"
        },
        {
          "name": "requested_datetime",
          "type": "timestamp with time zone"
        },
        {
          "name": "updated_datetime",
          "type": "timestamp with time zone"
        },
        {
          "name": "closed_datetime",
          "type": "timestamp with time zone"
        },
        {
          "name": "status",
          "type": "text"
        },
        {
          "name": "service_name",
          "type": "text"
        },
        {
          "name": "service_code",
          "type": "text"
        },
        {
          "name": "description",
          "type": "text"
        },
        {
          "name": "agency_responsible",
          "type": "text"
        },
        {
          "name": "address",
          "type": "text"
        },
        {
          "name": "latitude",
          "type": "double precision"
        },
        {
          "name": "longitude",
          "type": "double precision"
        },
        {
          "name": "geometry",
          "type": "GEOMETRY (WKB, EPSG:4326)"
        },
        {
          "name": "census_tract_geoid",
          "type": "text"
        },
        {
          "name": "neighborhood_id",
          "type": "integer"
        },
        {
          "name": "zip_code",
          "type": "text"
        },
        {
          "name": "resolution_days",
          "type": "integer"
        },
        {
          "name": "source_dataset",
          "type": "text"
        },
        {
          "name": "bronze_id",
          "type": "bigint"
        },
        {
          "name": "year",
          "type": "partition"
        }
      ],
      "provenance": {
        "license": "Louisville Metro Open Data — published under the Open Data Commons Public Domain Dedication and License (PDDL; verified 2026-07-11 at data.louisvilleky.gov/pages/terms-of-use-and-license, backed by Open Data Ordinance O-243-22). Share/create/adapt permitted, no attribution required; when republishing modified data, identify the source, version, and modifications made - which this project's generated lineage layer does per dataset. We license only our added value (normalization + documentation), never the city's underlying data - see LICENSE-data (CC BY 4.0).",
        "source_note": "ArcGIS Feature Services (SR_SERVICES registry). A large share of records carry NULL ZIP — kept as NULL (recoverable via lat/lng), never quarantined.",
        "source_pulls": [
          {
            "source_dataset": "311-service-requests-2010",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_Service_Requests_2010/FeatureServer/0",
            "pulled_at": "2026-07-09T01:02:57.660083+00:00",
            "source_rowcount": 106380
          },
          {
            "source_dataset": "311-service-requests-2011",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_311_Service_Requests_2011/FeatureServer/0",
            "pulled_at": "2026-07-09T01:05:05.266612+00:00",
            "source_rowcount": 106296
          },
          {
            "source_dataset": "311-service-requests-2012",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/311_Service_Requests/FeatureServer/0",
            "pulled_at": "2026-07-09T01:07:18.861872+00:00",
            "source_rowcount": 105503
          },
          {
            "source_dataset": "311-service-requests-2013",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_311_Service_Requests_2013/FeatureServer/0",
            "pulled_at": "2026-07-09T01:09:23.546067+00:00",
            "source_rowcount": 96335
          },
          {
            "source_dataset": "311-service-requests-2014",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_311_Service_Requests_2014/FeatureServer/0",
            "pulled_at": "2026-07-09T01:11:23.202912+00:00",
            "source_rowcount": 94605
          },
          {
            "source_dataset": "311-service-requests-2015",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_311_Service_Requests_2015/FeatureServer/0",
            "pulled_at": "2026-07-09T01:13:35.239884+00:00",
            "source_rowcount": 104145
          },
          {
            "source_dataset": "311-service-requests-2016",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_311_Service_Requests_2016/FeatureServer/0",
            "pulled_at": "2026-07-09T01:15:44.851842+00:00",
            "source_rowcount": 102039
          },
          {
            "source_dataset": "311-service-requests-2017",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_311_Service_Requests_2017/FeatureServer/0",
            "pulled_at": "2026-07-09T01:17:51.647826+00:00",
            "source_rowcount": 102135
          },
          {
            "source_dataset": "311-service-requests-2018",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_311_Service_Requests_2018/FeatureServer/0",
            "pulled_at": "2026-07-09T01:20:11.048016+00:00",
            "source_rowcount": 124741
          },
          {
            "source_dataset": "311-service-requests-2019a",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_311_Service_Requests_Jan_1st_2019_until_Jun_14_2019/FeatureServer/0",
            "pulled_at": "2026-07-09T01:21:51.634431+00:00",
            "source_rowcount": 56917
          },
          {
            "source_dataset": "311-service-requests-2019b",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/311_Service_Requests_June_18th_2019_to_December_18th_2019/FeatureServer/0",
            "pulled_at": "2026-07-09T01:22:52.513059+00:00",
            "source_rowcount": 95786
          },
          {
            "source_dataset": "311-service-requests-2020",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_311_Service_Requests_2020/FeatureServer/0",
            "pulled_at": "2026-07-09T01:24:59.660464+00:00",
            "source_rowcount": 229875
          },
          {
            "source_dataset": "311-service-requests-2021",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_Metro_KY_311_Service_Requests_2021/FeatureServer/0",
            "pulled_at": "2026-07-09T01:29:20.058663+00:00",
            "source_rowcount": 216399
          },
          {
            "source_dataset": "311-service-requests-2022",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/metro_311_2022/FeatureServer/0",
            "pulled_at": "2026-07-09T01:33:10.440510+00:00",
            "source_rowcount": 175152
          },
          {
            "source_dataset": "311-service-requests-2023",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/metro_call_311_service_requests_2023/FeatureServer/0",
            "pulled_at": "2026-07-09T01:36:48.684805+00:00",
            "source_rowcount": 173246
          },
          {
            "source_dataset": "311-service-requests-2024",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_Metro_KY_Metro_311_Service_Requets_2024/FeatureServer/0",
            "pulled_at": "2026-07-09T01:40:22.343256+00:00",
            "source_rowcount": 169601
          },
          {
            "source_dataset": "311-service-requests-2025",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/metro_311_2025/FeatureServer/0",
            "pulled_at": "2026-07-09T01:44:13.648503+00:00",
            "source_rowcount": 182490
          },
          {
            "source_dataset": "311-service-requests-2026",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/metro_311_2026/FeatureServer/0",
            "pulled_at": "2026-07-09T01:46:59.921447+00:00",
            "source_rowcount": 102179
          }
        ],
        "cite": "civic-data: 311 service requests (Open311) (service_requests). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      },
      "honesty": {
        "measures_vs_assumes": "Measures who CALLS 311 (and which agency logs it) — not where problems are. A non-report is invisible; absence ≠ no problem.",
        "trend_window": "2010–2018 is the honest trend window (canonical home of this claim; location quality degrades after 2018 — see definitional_drift).",
        "definitional_drift": "'other' category bucket ~66% (2010) → ~32% (2025) as service names shifted. LOCATION QUALITY DEGRADED AFTER 2018: from 2019 on the source stamps a growing share of requests with one placeholder coordinate (downtown) carrying no usable ZIP — hitting REAL categories (Streets, Traffic Signals), not just admin. 2020–2021 have no location at all. resolution_days NULL for all pre-2022 data. 2007–2009 excluded.",
        "representativeness_bias": "Civically-engaged / higher-trust areas over-report; under-served areas under-report the same conditions. Reading request density as 'problem density' inverts the bias.",
        "pii_tier": "public-aggregate-safe",
        "cadence": "Continuous at source; re-pulled per service on demand."
      }
    },
    {
      "key": "landbank_sales",
      "title": "Land Bank Authority sales (historical dispositions)",
      "trust_tier": "viewable_caveated",
      "kind": "domain",
      "grain": "One row per disposed property. UNIQUE(parcel_id, source_dataset).",
      "path": "landbank_sales/",
      "partitioned_by": null,
      "row_count": 399,
      "year_column": "sale_date",
      "geometry": false,
      "crs": null,
      "columns": [
        {
          "name": "id",
          "type": "bigint"
        },
        {
          "name": "parcel_id",
          "type": "text"
        },
        {
          "name": "address",
          "type": "text"
        },
        {
          "name": "zip_code",
          "type": "text"
        },
        {
          "name": "neighborhood",
          "type": "text"
        },
        {
          "name": "council_district",
          "type": "integer"
        },
        {
          "name": "zoning",
          "type": "text"
        },
        {
          "name": "has_improvements",
          "type": "boolean"
        },
        {
          "name": "sale_program",
          "type": "text"
        },
        {
          "name": "sale_date",
          "type": "date"
        },
        {
          "name": "sale_amount",
          "type": "text"
        },
        {
          "name": "source_dataset",
          "type": "text"
        },
        {
          "name": "bronze_id",
          "type": "bigint"
        }
      ],
      "provenance": {
        "license": "Louisville Metro Open Data — published under the Open Data Commons Public Domain Dedication and License (PDDL; verified 2026-07-11 at data.louisvilleky.gov/pages/terms-of-use-and-license, backed by Open Data Ordinance O-243-22). Share/create/adapt permitted, no attribution required; when republishing modified data, identify the source, version, and modifications made - which this project's generated lineage layer does per dataset. We license only our added value (normalization + documentation), never the city's underlying data - see LICENSE-data (CC BY 4.0).",
        "source_note": "ArcGIS Feature Service — Landbank_Sales_Historical_Data (single pull). Owner/applicant names stripped before any DB write (no-PII policy).",
        "source_pulls": [
          {
            "source_dataset": "landbank-historical",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Landbank_Sales_Historical_Data/FeatureServer/0",
            "pulled_at": "2026-07-09T23:00:37.253316+00:00",
            "source_rowcount": 418
          }
        ],
        "cite": "civic-data: Land Bank Authority sales (historical dispositions) (landbank_sales). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      },
      "honesty": {
        "measures_vs_assumes": "Measures completed Land Bank Authority DISPOSITIONS — vacant/abandoned parcels the city's land bank actually SOLD — not the distressed-property inventory nor demand. A row is a successful sale; absence means not-yet-sold or never-in-inventory.",
        "definitional_drift": "The 'Historical Data' service — a completed-sales log, not a live inventory. Small N (hundreds). sale_program categories shift over the program's life; sale_amount is a raw source string (not coerced to numeric).",
        "representativeness_bias": "Concentrated in historically disinvested neighborhoods where the land bank operates. Not a citywide property-sales measure; reading disposition counts as 'investment' conflates public disposal of blight with private market activity.",
        "pii_tier": "public-aggregate-safe",
        "cadence": "Source updates as dispositions complete; re-pulled on demand."
      }
    },
    {
      "key": "lien_orders",
      "title": "Code-enforcement lien final orders (blight signal)",
      "trust_tier": "snapshot_only",
      "kind": "domain",
      "grain": "One row per case. UNIQUE(case_id, source_dataset). Geocoded at source (lat/lng → geom).",
      "path": "lien_orders/",
      "partitioned_by": null,
      "row_count": 298,
      "year_column": "notification_date",
      "geometry": true,
      "crs": "EPSG:4326",
      "columns": [
        {
          "name": "id",
          "type": "bigint"
        },
        {
          "name": "case_id",
          "type": "text"
        },
        {
          "name": "property_address",
          "type": "text"
        },
        {
          "name": "zip_code",
          "type": "text"
        },
        {
          "name": "latitude",
          "type": "double precision"
        },
        {
          "name": "longitude",
          "type": "double precision"
        },
        {
          "name": "geometry",
          "type": "GEOMETRY (WKB, EPSG:4326)"
        },
        {
          "name": "notification_date",
          "type": "date"
        },
        {
          "name": "inspection_date",
          "type": "date"
        },
        {
          "name": "inspection_result",
          "type": "text"
        },
        {
          "name": "hearing_scheduled",
          "type": "date"
        },
        {
          "name": "hearing_completed",
          "type": "date"
        },
        {
          "name": "hearing_result",
          "type": "text"
        },
        {
          "name": "final_order_state",
          "type": "text"
        },
        {
          "name": "citation_amount",
          "type": "double precision"
        },
        {
          "name": "source_dataset",
          "type": "text"
        },
        {
          "name": "bronze_id",
          "type": "bigint"
        }
      ],
      "provenance": {
        "license": "Louisville Metro Open Data — published under the Open Data Commons Public Domain Dedication and License (PDDL; verified 2026-07-11 at data.louisvilleky.gov/pages/terms-of-use-and-license, backed by Open Data Ordinance O-243-22). Share/create/adapt permitted, no attribution required; when republishing modified data, identify the source, version, and modifications made - which this project's generated lineage layer does per dataset. We license only our added value (normalization + documentation), never the city's underlying data - see LICENSE-data (CC BY 4.0).",
        "source_note": "ArcGIS Feature Service — lien_notification_final_orders (single pull, geocoded at source). Inspector/owner names stripped before any DB write.",
        "source_pulls": [
          {
            "source_dataset": "lien-final-orders",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/lien_notification_final_orders/FeatureServer/0",
            "pulled_at": "2026-07-09T23:00:38.532599+00:00",
            "source_rowcount": 434
          }
        ],
        "cite": "civic-data: Code-enforcement lien final orders (blight signal) (lien_orders). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      },
      "honesty": {
        "measures_vs_assumes": "Measures code-enforcement lien FINAL ORDERS currently active at the source (an enforcement/blight signal), not total historical liens nor total blight. A non-finalized or resolved case is invisible.",
        "definitional_drift": "SOURCE VOLATILITY (the defining property): the feed is a ROLLING ~7–8-month window of active final orders — resolved cases drop off as new ones appear. A single from-source pull is a point-in-time SNAPSHOT (298 records, notification dates 2025-11→2026-06); civic-graph's 798 is an ACCUMULATION across many re-pulls over months (same case-id format, near-zero overlap with today's window). The two are not comparable as a time series and the store cannot be reproduced from one pull — snapshot only.",
        "representativeness_bias": "Enforcement-driven: reflects where the city has inspected AND finalized liens, shaped by inspection intensity — not raw property condition. High-enforcement areas read as high-lien.",
        "pii_tier": "public-aggregate-safe",
        "cadence": "Source churns continuously; resolved cases leave the window."
      }
    },
    {
      "key": "property_foreclosures",
      "title": "Property foreclosure filings",
      "trust_tier": "viewable_caveated",
      "kind": "domain",
      "grain": "One row per case (case_number = Case_). UNIQUE(case_number, source_dataset); source carries ~1.98 rows/case, deduped to one via ON CONFLICT.",
      "path": "property_foreclosures/",
      "partitioned_by": null,
      "row_count": 1734,
      "year_column": "action_filed",
      "geometry": false,
      "crs": null,
      "columns": [
        {
          "name": "id",
          "type": "bigint"
        },
        {
          "name": "address",
          "type": "text"
        },
        {
          "name": "zip_code",
          "type": "text"
        },
        {
          "name": "neighborhood",
          "type": "text"
        },
        {
          "name": "census_tract",
          "type": "text"
        },
        {
          "name": "council_district",
          "type": "integer"
        },
        {
          "name": "parcel_id",
          "type": "text"
        },
        {
          "name": "action_filed",
          "type": "date"
        },
        {
          "name": "sale_date",
          "type": "date"
        },
        {
          "name": "sale_price",
          "type": "text"
        },
        {
          "name": "is_metro_purchase",
          "type": "boolean"
        },
        {
          "name": "case_number",
          "type": "text"
        },
        {
          "name": "source_dataset",
          "type": "text"
        },
        {
          "name": "bronze_id",
          "type": "bigint"
        }
      ],
      "provenance": {
        "license": "Louisville Metro Open Data — published under the Open Data Commons Public Domain Dedication and License (PDDL; verified 2026-07-11 at data.louisvilleky.gov/pages/terms-of-use-and-license, backed by Open Data Ordinance O-243-22). Share/create/adapt permitted, no attribution required; when republishing modified data, identify the source, version, and modifications made - which this project's generated lineage layer does per dataset. We license only our added value (normalization + documentation), never the city's underlying data - see LICENSE-data (CC BY 4.0).",
        "source_note": "ArcGIS Feature Service — Louisville_Metro_KY_Property_Foreclosures (single pull). Purchaser/case-style names stripped before any DB write; only a derived is_metro_purchase boolean kept.",
        "source_pulls": [
          {
            "source_dataset": "property-foreclosures",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_Metro_KY_Property_Foreclosures/FeatureServer/0",
            "pulled_at": "2026-07-09T23:00:41.943797+00:00",
            "source_rowcount": 2876
          }
        ],
        "cite": "civic-data: Property foreclosure filings (property_foreclosures). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      },
      "honesty": {
        "measures_vs_assumes": "Measures foreclosure FILINGS (action_filed — a case initiated), not completed foreclosures nor actual loss of home. A filing may be dismissed, settled, or withdrawn; a filing is not an outcome.",
        "definitional_drift": "NO Great-Recession era — the source is dense only from ~2013, so the 2008–2012 foreclosure wave is absent (do not read the series as the full history). Source carries ~1.98 rows/case, deduped to one. Uniquely carries neighborhood names + census tract IDs. A small set of old-numbered cases (12-CI-…, 13-CI-…) carry NULL action_filed. The source GROWS (new filings accrue) and CHURNS (old cases occasionally drop or re-appear), so totals drift from an earlier pull while shared historical years match row-for-row. The source DECLARES a parcel-ID field (Full_Parcel_ID) but ships it EMPTY, so parcel_id is all-NULL — parcel-level joins are impossible; join on address/geography instead.",
        "representativeness_bias": "Tracks judicial legal action, not neighborhood distress directly — concentrated where lenders pursue judicial foreclosure. Reading filing density as 'distress' conflates the legal process with the underlying condition.",
        "pii_tier": "public-aggregate-safe",
        "cadence": "New filings accrue continuously; re-pulled on demand."
      }
    },
    {
      "key": "food_service_establishments",
      "title": "Permitted food service establishments",
      "trust_tier": "snapshot_only",
      "kind": "domain",
      "grain": "One row per permit. UNIQUE(permit_number, source_dataset).",
      "path": "food_service_establishments/",
      "partitioned_by": null,
      "row_count": 3366,
      "year_column": null,
      "geometry": false,
      "crs": null,
      "columns": [
        {
          "name": "id",
          "type": "bigint"
        },
        {
          "name": "permit_number",
          "type": "integer"
        },
        {
          "name": "premise_name",
          "type": "text"
        },
        {
          "name": "premise_address",
          "type": "text"
        },
        {
          "name": "city",
          "type": "text"
        },
        {
          "name": "zip_code",
          "type": "text"
        },
        {
          "name": "facility_type",
          "type": "integer"
        },
        {
          "name": "facility_type_description",
          "type": "text"
        },
        {
          "name": "subtype",
          "type": "integer"
        },
        {
          "name": "subtype_description",
          "type": "text"
        },
        {
          "name": "opening_date",
          "type": "text"
        },
        {
          "name": "source_dataset",
          "type": "text"
        },
        {
          "name": "bronze_id",
          "type": "bigint"
        }
      ],
      "provenance": {
        "license": "Louisville Metro Open Data — published under the Open Data Commons Public Domain Dedication and License (PDDL; verified 2026-07-11 at data.louisvilleky.gov/pages/terms-of-use-and-license, backed by Open Data Ordinance O-243-22). Share/create/adapt permitted, no attribution required; when republishing modified data, identify the source, version, and modifications made - which this project's generated lineage layer does per dataset. We license only our added value (normalization + documentation), never the city's underlying data - see LICENSE-data (CC BY 4.0).",
        "source_note": "ArcGIS Feature Service — Permitted_Food_Service_Establishments (single pull). Premise names are business identifiers (kept).",
        "source_pulls": [
          {
            "source_dataset": "food-service-establishments",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/Louisville_Metro_KY_Permitted_Food_Service_Establishments/FeatureServer/0",
            "pulled_at": "2026-07-09T23:28:10.053781+00:00",
            "source_rowcount": 3366
          }
        ],
        "cite": "civic-data: Permitted food service establishments (food_service_establishments). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      },
      "honesty": {
        "measures_vs_assumes": "Measures the CURRENT roster of permitted food-service establishments — who holds a permit now — not restaurant openings/closings over time. Carries opening_date but NO closure data, so it is an ambiguous time signal; treat it as a current-state roster.",
        "definitional_drift": "A living roster: establishments enter (new permits) and leave (closures) between pulls, so a fresh pull differs modestly from an earlier one (~96% overlap with civic-graph). opening_date is kept as the raw source string.",
        "representativeness_bias": "Permitted establishments only; unpermitted/exempt food operations are invisible. Density tracks commercial food activity, weighted toward areas with formal businesses.",
        "pii_tier": "public-aggregate-safe",
        "cadence": "Source updated as permits are issued/closed; re-pulled on demand."
      }
    },
    {
      "key": "abc_licenses",
      "title": "ABC (alcohol) licenses — local + state",
      "trust_tier": "snapshot_only",
      "kind": "domain",
      "grain": "One row per license. UNIQUE(license_number, source_dataset). TWO sources: abc-local-licenses (Metro) + abc-state-licenses.",
      "path": "abc_licenses/",
      "partitioned_by": null,
      "row_count": 7149,
      "year_column": null,
      "geometry": true,
      "crs": "EPSG:4326",
      "columns": [
        {
          "name": "id",
          "type": "bigint"
        },
        {
          "name": "license_number",
          "type": "text"
        },
        {
          "name": "business_name",
          "type": "text"
        },
        {
          "name": "license_category",
          "type": "text"
        },
        {
          "name": "license_type",
          "type": "text"
        },
        {
          "name": "status",
          "type": "text"
        },
        {
          "name": "address",
          "type": "text"
        },
        {
          "name": "city",
          "type": "text"
        },
        {
          "name": "zip_code",
          "type": "text"
        },
        {
          "name": "council_district",
          "type": "text"
        },
        {
          "name": "latitude",
          "type": "double precision"
        },
        {
          "name": "longitude",
          "type": "double precision"
        },
        {
          "name": "geometry",
          "type": "GEOMETRY (WKB, EPSG:4326)"
        },
        {
          "name": "issue_date",
          "type": "date"
        },
        {
          "name": "expiry_date",
          "type": "date"
        },
        {
          "name": "source_dataset",
          "type": "text"
        },
        {
          "name": "bronze_id",
          "type": "bigint"
        },
        {
          "name": "endorsements",
          "type": "text"
        }
      ],
      "provenance": {
        "license": "Louisville Metro Open Data — published under the Open Data Commons Public Domain Dedication and License (PDDL; verified 2026-07-11 at data.louisvilleky.gov/pages/terms-of-use-and-license, backed by Open Data Ordinance O-243-22). Share/create/adapt permitted, no attribution required; when republishing modified data, identify the source, version, and modifications made - which this project's generated lineage layer does per dataset. We license only our added value (normalization + documentation), never the city's underlying data - see LICENSE-data (CC BY 4.0).",
        "source_note": "ArcGIS Feature Services — abc_license_ait4135 (local) + ABC_State_ActiveLicenses (state) + abc_license_endorsements (enrichment). Business/DBA names are business identifiers (kept).",
        "source_pulls": [
          {
            "source_dataset": "abc-local-licenses",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/abc_license_ait4135/FeatureServer/0",
            "pulled_at": "2026-07-09T23:28:22.865240+00:00",
            "source_rowcount": 1681
          },
          {
            "source_dataset": "abc-state-licenses",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/ABC_State_ActiveLicenses/FeatureServer/0",
            "pulled_at": "2026-07-09T23:28:27.571117+00:00",
            "source_rowcount": 5483
          }
        ],
        "cite": "civic-data: ABC (alcohol) licenses — local + state (abc_licenses). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      },
      "honesty": {
        "measures_vs_assumes": "Measures CURRENTLY-active alcohol licenses (a commercial nightlife/dining signal) from two authorities — Metro (local) + state — not a time series of licensing activity. A lapsed/expired license leaves the active set.",
        "definitional_drift": "Active-license lists CHURN (renewals/expiries) + grow modestly between pulls. ENRICHMENT: the endorsements dataset fills license_category (only when NULL — ingest wins) and a semicolon-joined endorsement list on the LOCAL subset only; state licenses have no endorsement source and keep pattern-based classification (this is a CLASSIFICATION-coverage lift, not a universe lift). ZIP is parsed from a free address string (local) or PremisesCityState (state).",
        "representativeness_bias": "Two overlapping authorities with different fields; the local subset carries endorsement detail, the state subset does not. Reading license density as 'nightlife intensity' conflates permit count with actual activity.",
        "pii_tier": "public-aggregate-safe",
        "cadence": "Continuously updated at source; re-pulled on demand."
      }
    },
    {
      "key": "restaurant_inspections",
      "title": "Restaurant inspection scores",
      "trust_tier": "viewable_caveated",
      "kind": "domain",
      "grain": "One row per inspection. UNIQUE(inspection_id, source_dataset); an establishment recurs across inspections.",
      "path": "restaurant_inspections/",
      "partitioned_by": null,
      "row_count": 11273,
      "year_column": "inspection_date",
      "geometry": false,
      "crs": null,
      "columns": [
        {
          "name": "id",
          "type": "bigint"
        },
        {
          "name": "establishment_id",
          "type": "integer"
        },
        {
          "name": "inspection_id",
          "type": "integer"
        },
        {
          "name": "inspection_type",
          "type": "text"
        },
        {
          "name": "establishment_name",
          "type": "text"
        },
        {
          "name": "address",
          "type": "text"
        },
        {
          "name": "city",
          "type": "text"
        },
        {
          "name": "zip_code",
          "type": "text"
        },
        {
          "name": "establishment_type",
          "type": "text"
        },
        {
          "name": "inspection_date",
          "type": "date"
        },
        {
          "name": "score",
          "type": "integer"
        },
        {
          "name": "grade",
          "type": "text"
        },
        {
          "name": "source_dataset",
          "type": "text"
        },
        {
          "name": "bronze_id",
          "type": "bigint"
        }
      ],
      "provenance": {
        "license": "Louisville Metro Open Data — published under the Open Data Commons Public Domain Dedication and License (PDDL; verified 2026-07-11 at data.louisvilleky.gov/pages/terms-of-use-and-license, backed by Open Data Ordinance O-243-22). Share/create/adapt permitted, no attribution required; when republishing modified data, identify the source, version, and modifications made - which this project's generated lineage layer does per dataset. We license only our added value (normalization + documentation), never the city's underlying data - see LICENSE-data (CC BY 4.0).",
        "source_note": "ArcGIS Feature Service — FoodServiceData (single pull). Establishment names are business identifiers (kept).",
        "source_pulls": [
          {
            "source_dataset": "restaurant-inspection-scores",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/FoodServiceData/FeatureServer/0",
            "pulled_at": "2026-07-09T23:28:19.077587+00:00",
            "source_rowcount": 11273
          }
        ],
        "cite": "civic-data: Restaurant inspection scores (restaurant_inspections). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      },
      "honesty": {
        "measures_vs_assumes": "Measures health-inspection events + scores within the source's window — not overall food safety nor a full inspection history. A score is one inspection at one time.",
        "definitional_drift": "ROLLING ~12-MONTH WINDOW: the source holds only about the last year of inspections (our pull 2025-07→2026-07; civic-graph's 2025-03→2026-03). A single pull is a recent window, NOT a multi-year archive — do not build a long time series from one pull. The window shift between pulls explains partial overlap with civic-graph (both hold ~11K, sharing ~7.9K).",
        "representativeness_bias": "Inspection frequency is regulator-driven; more-inspected categories appear more. Score distributions reflect enforcement cadence, not just establishment quality.",
        "pii_tier": "public-aggregate-safe",
        "cadence": "Continuously updated; oldest inspections roll off the window."
      }
    },
    {
      "key": "construction_permits",
      "title": "Active construction permits",
      "trust_tier": "viewable_caveated",
      "kind": "domain",
      "grain": "One row per permit. UNIQUE(permit_number, source_dataset). Geocoded at source.",
      "path": "construction_permits/",
      "partitioned_by": null,
      "row_count": 23308,
      "year_column": "issue_date",
      "geometry": true,
      "crs": "EPSG:4326",
      "columns": [
        {
          "name": "id",
          "type": "bigint"
        },
        {
          "name": "permit_number",
          "type": "text"
        },
        {
          "name": "permit_type",
          "type": "text"
        },
        {
          "name": "permit_status",
          "type": "text"
        },
        {
          "name": "category",
          "type": "text"
        },
        {
          "name": "work_type",
          "type": "text"
        },
        {
          "name": "zoning",
          "type": "text"
        },
        {
          "name": "sqft",
          "type": "double precision"
        },
        {
          "name": "permit_fee",
          "type": "double precision"
        },
        {
          "name": "project_costs",
          "type": "double precision"
        },
        {
          "name": "address",
          "type": "text"
        },
        {
          "name": "zip_code",
          "type": "text"
        },
        {
          "name": "latitude",
          "type": "double precision"
        },
        {
          "name": "longitude",
          "type": "double precision"
        },
        {
          "name": "geometry",
          "type": "GEOMETRY (WKB, EPSG:4326)"
        },
        {
          "name": "council_district",
          "type": "text"
        },
        {
          "name": "neighborhood",
          "type": "text"
        },
        {
          "name": "issue_date",
          "type": "date"
        },
        {
          "name": "source_dataset",
          "type": "text"
        },
        {
          "name": "bronze_id",
          "type": "bigint"
        }
      ],
      "provenance": {
        "license": "Louisville Metro Open Data — published under the Open Data Commons Public Domain Dedication and License (PDDL; verified 2026-07-11 at data.louisvilleky.gov/pages/terms-of-use-and-license, backed by Open Data Ordinance O-243-22). Share/create/adapt permitted, no attribution required; when republishing modified data, identify the source, version, and modifications made - which this project's generated lineage layer does per dataset. We license only our added value (normalization + documentation), never the city's underlying data - see LICENSE-data (CC BY 4.0).",
        "source_note": "ArcGIS Feature Service — active_construction_permits (single pull). Contractor (possible sole-proprietor name) stripped before any DB write.",
        "source_pulls": [
          {
            "source_dataset": "active-construction-permits",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/active_construction_permits/FeatureServer/0",
            "pulled_at": "2026-07-09T23:28:57.620730+00:00",
            "source_rowcount": 23332
          }
        ],
        "cite": "civic-data: Active construction permits (construction_permits). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      },
      "honesty": {
        "measures_vs_assumes": "Measures ACTIVE construction permits (an investment/development signal), not all permits ever issued nor completed construction. A permit that closes leaves the active set.",
        "definitional_drift": "ACTIVE-permit rolling set: historical issue-years are stable (2019 matches civic-graph within ~5), but recent composition shifts as permits close and leave while new ones enter (between civic-graph's pull and ours, 2025 dropped ~3,063 and 2026 gained ~2,751). PLUS a known 2020–2022 record-capture discontinuity (the source under-publishes those years) — do NOT read 2019→2020 permit movement as a real economic signal. contractor names stripped at ingest.",
        "representativeness_bias": "Permit activity concentrates where formal development happens; informal or unpermitted work is invisible. Project_costs are self-declared at application.",
        "pii_tier": "public-aggregate-safe",
        "cadence": "Continuously updated; closed permits leave the active set."
      }
    },
    {
      "key": "str_licenses",
      "title": "Short-Term Rental registrations",
      "trust_tier": "snapshot_only",
      "kind": "domain",
      "grain": "One row per registered STR license. UNIQUE(license_number, source_dataset).",
      "path": "str_licenses/",
      "partitioned_by": null,
      "row_count": 1248,
      "year_column": "date_opened",
      "geometry": true,
      "crs": "EPSG:4326",
      "columns": [
        {
          "name": "id",
          "type": "bigint"
        },
        {
          "name": "license_number",
          "type": "text"
        },
        {
          "name": "address",
          "type": "text"
        },
        {
          "name": "zip_code",
          "type": "text"
        },
        {
          "name": "council_district",
          "type": "integer"
        },
        {
          "name": "police_district",
          "type": "text"
        },
        {
          "name": "zoning_code",
          "type": "text"
        },
        {
          "name": "date_opened",
          "type": "date"
        },
        {
          "name": "latitude",
          "type": "double precision"
        },
        {
          "name": "longitude",
          "type": "double precision"
        },
        {
          "name": "geometry",
          "type": "GEOMETRY (WKB, EPSG:4326)"
        },
        {
          "name": "source_dataset",
          "type": "text"
        },
        {
          "name": "bronze_id",
          "type": "bigint"
        }
      ],
      "provenance": {
        "license": "Louisville Metro Open Data — published under the Open Data Commons Public Domain Dedication and License (PDDL; verified 2026-07-11 at data.louisvilleky.gov/pages/terms-of-use-and-license, backed by Open Data Ordinance O-243-22). Share/create/adapt permitted, no attribution required; when republishing modified data, identify the source, version, and modifications made - which this project's generated lineage layer does per dataset. We license only our added value (normalization + documentation), never the city's underlying data - see LICENSE-data (CC BY 4.0).",
        "source_note": "ArcGIS Feature Service — short_term_rental_registration (single pull, PUBLIC). HOSTNAME/HOSTEMAIL/HOSTPHONE/OWNERNAME stripped before any DB write; block address + license kept.",
        "source_pulls": [
          {
            "source_dataset": "str-registration",
            "source_url": "https://services1.arcgis.com/79kfd2K6fskCAkyg/arcgis/rest/services/short_term_rental_registration/FeatureServer/0",
            "pulled_at": "2026-07-09T23:50:41.417122+00:00",
            "source_rowcount": 1252
          }
        ],
        "cite": "civic-data: Short-Term Rental registrations (str_licenses). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      },
      "honesty": {
        "measures_vs_assumes": "Measures CURRENTLY-registered short-term rentals (a supply-side housing- pressure signal — residential addresses pulled toward the STR market), not the full STR footprint. Unregistered/unpermitted STRs are invisible, so this understates true STR pressure.",
        "definitional_drift": "SOURCE CARRIES PII — host name/email/phone + owner name — ALL stripped at ingest (never persist in bronze, silver, or quarantine). A living registration roster: licenses enter (new registrations) and leave (closures) between pulls, so a fresh pull is a current-state snapshot. Address is block-level (ADDR_FULL_BLOCK, no unit). ZIP is derived spatially from the point (point-in-polygon), not the source. This is a DIFFERENT, better source than civic-graph's token-gated conditional-use-permit dataset (which it supersedes).",
        "representativeness_bias": "Registration compliance varies; areas with more enforcement/compliance over-report. Reading registered-STR density as total STR pressure understates the unlicensed gap.",
        "pii_tier": "person-naming",
        "cadence": "Continuously updated at source; re-pulled on demand (public, no token)."
      }
    },
    {
      "key": "zip_codes",
      "title": "Canonical 41-ZIP Louisville boundary set (ArcGIS portal)",
      "trust_tier": "reference",
      "kind": "reference",
      "grain": null,
      "path": "zip_codes/",
      "partitioned_by": null,
      "row_count": 41,
      "year_column": null,
      "geometry": true,
      "crs": "EPSG:4326",
      "columns": [
        {
          "name": "zip",
          "type": "text"
        },
        {
          "name": "geometry",
          "type": "GEOMETRY (WKB, EPSG:4326)"
        }
      ],
      "provenance": {
        "license": "Normalization + documentation CC BY 4.0 (LICENSE-data); underlying data is public record from its source agency, provided as-is. See the generated data dictionary for this table's lineage and reproduction recipe.",
        "source_note": "No source pull in the ingest ledger for this table: it is either DERIVED (e.g. the ZIP-geo crosswalks, computed from boundaries already in the lake) or was last loaded before ledger coverage reached MDM ingests (2026-07-11) - the next re-ingest records the pull. The data dictionary's lineage carries the reproduction recipe either way.",
        "source_pulls": [],
        "cite": "civic-data: Canonical 41-ZIP Louisville boundary set (ArcGIS portal) (zip_codes). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      }
    },
    {
      "key": "address_points",
      "title": "LOJIC Jefferson County address points (~450K)",
      "trust_tier": "reference",
      "kind": "reference",
      "grain": null,
      "path": "address_points/",
      "partitioned_by": null,
      "row_count": 450308,
      "year_column": null,
      "geometry": true,
      "crs": "EPSG:4326",
      "columns": [
        {
          "name": "id",
          "type": "bigint"
        },
        {
          "name": "house_no",
          "type": "integer"
        },
        {
          "name": "street_key",
          "type": "text"
        },
        {
          "name": "longitude",
          "type": "double precision"
        },
        {
          "name": "latitude",
          "type": "double precision"
        },
        {
          "name": "geometry",
          "type": "GEOMETRY (WKB, EPSG:4326)"
        },
        {
          "name": "source_dataset",
          "type": "text"
        }
      ],
      "provenance": {
        "license": "LOJIC open data - public domain per the LOJIC Liability Statement (PDDL-compliant; verified 2026-07-11 at lojic.org/data/liability-statement). Copy/distribute/derive permitted; do not misrepresent origin or use LOJIC branding. Mapping Data Source: LOJIC. We license only our added value (normalization + documentation) - see LICENSE-data (CC BY 4.0).",
        "source_note": "No source pull in the ingest ledger for this table: it is either DERIVED (e.g. the ZIP-geo crosswalks, computed from boundaries already in the lake) or was last loaded before ledger coverage reached MDM ingests (2026-07-11) - the next re-ingest records the pull. The data dictionary's lineage carries the reproduction recipe either way.",
        "source_pulls": [],
        "cite": "civic-data: LOJIC Jefferson County address points (~450K) (address_points). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      }
    },
    {
      "key": "street_intersections",
      "title": "LOJIC Jefferson County street intersections (~21K)",
      "trust_tier": "reference",
      "kind": "reference",
      "grain": null,
      "path": "street_intersections/",
      "partitioned_by": null,
      "row_count": 21048,
      "year_column": null,
      "geometry": true,
      "crs": "EPSG:4326",
      "columns": [
        {
          "name": "id",
          "type": "bigint"
        },
        {
          "name": "key_lo",
          "type": "text"
        },
        {
          "name": "key_hi",
          "type": "text"
        },
        {
          "name": "longitude",
          "type": "double precision"
        },
        {
          "name": "latitude",
          "type": "double precision"
        },
        {
          "name": "geometry",
          "type": "GEOMETRY (WKB, EPSG:4326)"
        },
        {
          "name": "source_dataset",
          "type": "text"
        }
      ],
      "provenance": {
        "license": "LOJIC open data - public domain per the LOJIC Liability Statement (PDDL-compliant; verified 2026-07-11 at lojic.org/data/liability-statement). Copy/distribute/derive permitted; do not misrepresent origin or use LOJIC branding. Mapping Data Source: LOJIC. We license only our added value (normalization + documentation) - see LICENSE-data (CC BY 4.0).",
        "source_note": "No source pull in the ingest ledger for this table: it is either DERIVED (e.g. the ZIP-geo crosswalks, computed from boundaries already in the lake) or was last loaded before ledger coverage reached MDM ingests (2026-07-11) - the next re-ingest records the pull. The data dictionary's lineage carries the reproduction recipe either way.",
        "source_pulls": [],
        "cite": "civic-data: LOJIC Jefferson County street intersections (~21K) (street_intersections). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      }
    },
    {
      "key": "zip_to_district",
      "title": "DERIVED crosswalk: ZIP ↔ Council district area overlap (bidirectional coverage fractions, ::geography, sliver-filtered >0",
      "trust_tier": "reference",
      "kind": "reference",
      "grain": null,
      "path": "zip_to_district/",
      "partitioned_by": null,
      "row_count": 133,
      "year_column": null,
      "geometry": false,
      "crs": null,
      "columns": [
        {
          "name": "zip_code",
          "type": "text"
        },
        {
          "name": "district_number",
          "type": "integer"
        },
        {
          "name": "version_label",
          "type": "text"
        },
        {
          "name": "zip_coverage",
          "type": "double precision"
        },
        {
          "name": "geo_coverage",
          "type": "double precision"
        }
      ],
      "provenance": {
        "license": "Normalization + documentation CC BY 4.0 (LICENSE-data); underlying data is public record from its source agency, provided as-is. See the generated data dictionary for this table's lineage and reproduction recipe.",
        "source_note": "No source pull in the ingest ledger for this table: it is either DERIVED (e.g. the ZIP-geo crosswalks, computed from boundaries already in the lake) or was last loaded before ledger coverage reached MDM ingests (2026-07-11) - the next re-ingest records the pull. The data dictionary's lineage carries the reproduction recipe either way.",
        "source_pulls": [],
        "cite": "civic-data: DERIVED crosswalk: ZIP ↔ Council district area overlap (bidirectional coverage fractions, ::geography, sliver-filtered >0 (zip_to_district). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      }
    },
    {
      "key": "zip_to_neighborhood",
      "title": "DERIVED crosswalk: ZIP ↔ neighborhood area overlap",
      "trust_tier": "reference",
      "kind": "reference",
      "grain": null,
      "path": "zip_to_neighborhood/",
      "partitioned_by": null,
      "row_count": 318,
      "year_column": null,
      "geometry": false,
      "crs": null,
      "columns": [
        {
          "name": "zip_code",
          "type": "text"
        },
        {
          "name": "neighborhood_id",
          "type": "bigint"
        },
        {
          "name": "zip_coverage",
          "type": "double precision"
        },
        {
          "name": "geo_coverage",
          "type": "double precision"
        }
      ],
      "provenance": {
        "license": "Normalization + documentation CC BY 4.0 (LICENSE-data); underlying data is public record from its source agency, provided as-is. See the generated data dictionary for this table's lineage and reproduction recipe.",
        "source_note": "No source pull in the ingest ledger for this table: it is either DERIVED (e.g. the ZIP-geo crosswalks, computed from boundaries already in the lake) or was last loaded before ledger coverage reached MDM ingests (2026-07-11) - the next re-ingest records the pull. The data dictionary's lineage carries the reproduction recipe either way.",
        "source_pulls": [],
        "cite": "civic-data: DERIVED crosswalk: ZIP ↔ neighborhood area overlap (zip_to_neighborhood). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      }
    },
    {
      "key": "zip_to_hud_zone",
      "title": "DERIVED crosswalk: ZIP ↔ HUD 1979 grant-zone area overlap",
      "trust_tier": "reference",
      "kind": "reference",
      "grain": null,
      "path": "zip_to_hud_zone/",
      "partitioned_by": null,
      "row_count": 159,
      "year_column": null,
      "geometry": false,
      "crs": null,
      "columns": [
        {
          "name": "zip_code",
          "type": "text"
        },
        {
          "name": "nh_code",
          "type": "integer"
        },
        {
          "name": "zip_coverage",
          "type": "double precision"
        },
        {
          "name": "geo_coverage",
          "type": "double precision"
        }
      ],
      "provenance": {
        "license": "Normalization + documentation CC BY 4.0 (LICENSE-data); underlying data is public record from its source agency, provided as-is. See the generated data dictionary for this table's lineage and reproduction recipe.",
        "source_note": "No source pull in the ingest ledger for this table: it is either DERIVED (e.g. the ZIP-geo crosswalks, computed from boundaries already in the lake) or was last loaded before ledger coverage reached MDM ingests (2026-07-11) - the next re-ingest records the pull. The data dictionary's lineage carries the reproduction recipe either way.",
        "source_pulls": [],
        "cite": "civic-data: DERIVED crosswalk: ZIP ↔ HUD 1979 grant-zone area overlap (zip_to_hud_zone). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      }
    },
    {
      "key": "council_districts",
      "title": "Metro Council district boundaries (versioned)",
      "trust_tier": "reference",
      "kind": "mdm",
      "grain": null,
      "path": "council_districts/",
      "partitioned_by": null,
      "row_count": 26,
      "year_column": null,
      "geometry": true,
      "crs": "EPSG:4326",
      "columns": [
        {
          "name": "district_number",
          "type": "integer"
        },
        {
          "name": "council_member",
          "type": "text"
        },
        {
          "name": "geometry",
          "type": "GEOMETRY (WKB, EPSG:4326)"
        },
        {
          "name": "version_label",
          "type": "text"
        },
        {
          "name": "effective_from",
          "type": "date"
        },
        {
          "name": "effective_to",
          "type": "date"
        }
      ],
      "provenance": {
        "license": "LOJIC open data - public domain per the LOJIC Liability Statement (PDDL-compliant; verified 2026-07-11 at lojic.org/data/liability-statement). Copy/distribute/derive permitted; do not misrepresent origin or use LOJIC branding. Mapping Data Source: LOJIC. We license only our added value (normalization + documentation) - see LICENSE-data (CC BY 4.0).",
        "source_note": "No source pull in the ingest ledger for this table: it is either DERIVED (e.g. the ZIP-geo crosswalks, computed from boundaries already in the lake) or was last loaded before ledger coverage reached MDM ingests (2026-07-11) - the next re-ingest records the pull. The data dictionary's lineage carries the reproduction recipe either way.",
        "source_pulls": [],
        "cite": "civic-data: Metro Council district boundaries (versioned) (council_districts). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      }
    },
    {
      "key": "neighborhoods",
      "title": "Neighborhood boundaries",
      "trust_tier": "reference",
      "kind": "mdm",
      "grain": null,
      "path": "neighborhoods/",
      "partitioned_by": null,
      "row_count": 150,
      "year_column": null,
      "geometry": true,
      "crs": "EPSG:4326",
      "columns": [
        {
          "name": "id",
          "type": "integer"
        },
        {
          "name": "name",
          "type": "text"
        },
        {
          "name": "nh_type",
          "type": "text"
        },
        {
          "name": "geometry",
          "type": "GEOMETRY (WKB, EPSG:4326)"
        }
      ],
      "provenance": {
        "license": "Normalization + documentation CC BY 4.0 (LICENSE-data); underlying data is public record from its source agency, provided as-is. See the generated data dictionary for this table's lineage and reproduction recipe.",
        "source_note": "No source pull in the ingest ledger for this table: it is either DERIVED (e.g. the ZIP-geo crosswalks, computed from boundaries already in the lake) or was last loaded before ledger coverage reached MDM ingests (2026-07-11) - the next re-ingest records the pull. The data dictionary's lineage carries the reproduction recipe either way.",
        "source_pulls": [],
        "cite": "civic-data: Neighborhood boundaries (neighborhoods). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      }
    },
    {
      "key": "hud_zones",
      "title": "HUD 1979 grant-zone boundaries",
      "trust_tier": "reference",
      "kind": "mdm",
      "grain": null,
      "path": "hud_zones/",
      "partitioned_by": null,
      "row_count": 71,
      "year_column": null,
      "geometry": true,
      "crs": "EPSG:4326",
      "columns": [
        {
          "name": "nh_code",
          "type": "integer"
        },
        {
          "name": "name",
          "type": "text"
        },
        {
          "name": "geometry",
          "type": "GEOMETRY (WKB, EPSG:4326)"
        }
      ],
      "provenance": {
        "license": "LOJIC open data - public domain per the LOJIC Liability Statement (PDDL-compliant; verified 2026-07-11 at lojic.org/data/liability-statement). Copy/distribute/derive permitted; do not misrepresent origin or use LOJIC branding. Mapping Data Source: LOJIC. We license only our added value (normalization + documentation) - see LICENSE-data (CC BY 4.0).",
        "source_note": "No source pull in the ingest ledger for this table: it is either DERIVED (e.g. the ZIP-geo crosswalks, computed from boundaries already in the lake) or was last loaded before ledger coverage reached MDM ingests (2026-07-11) - the next re-ingest records the pull. The data dictionary's lineage carries the reproduction recipe either way.",
        "source_pulls": [],
        "cite": "civic-data: HUD 1979 grant-zone boundaries (hud_zones). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      }
    },
    {
      "key": "zip_population",
      "title": "Census ACS population by ZIP (per-capita denominator)",
      "trust_tier": "reference",
      "kind": "mdm",
      "grain": null,
      "path": "zip_population/",
      "partitioned_by": null,
      "row_count": 520,
      "year_column": null,
      "geometry": false,
      "crs": null,
      "columns": [
        {
          "name": "zip_code",
          "type": "text"
        },
        {
          "name": "vintage",
          "type": "integer"
        },
        {
          "name": "population",
          "type": "integer"
        },
        {
          "name": "median_age",
          "type": "numeric"
        },
        {
          "name": "median_household_income",
          "type": "integer"
        },
        {
          "name": "updated_at",
          "type": "timestamp with time zone"
        }
      ],
      "provenance": {
        "license": "U.S. Census Bureau ACS via the Census Data API - U.S. government work, public domain (terms verified 2026-07-11 at census.gov/data/developers/about/terms-of-service.html). This product uses the Census Bureau Data API but is not endorsed or certified by the Census Bureau. Modifications (ZCTA-to-ZIP scoping, suppressed-value NULLing) are documented in the lineage. We license only our added value - see LICENSE-data (CC BY 4.0).",
        "source_note": null,
        "source_pulls": [
          {
            "source_dataset": "zip_population",
            "source_url": "https://api.census.gov/data/{year}/acs/acs5 (vintages 2023..2023)",
            "pulled_at": "2026-07-11T20:22:45.026075+00:00",
            "source_rowcount": 40
          }
        ],
        "cite": "civic-data: Census ACS population by ZIP (per-capita denominator) (zip_population). Data version 2026-07-12+630e3609, as of 2026-07-12. Cleaned + documented public open data for Louisville / Jefferson County, KY; normalization + documentation CC BY 4.0 (LICENSE-data). Underlying data: public records, provided as-is (see provenance)."
      }
    }
  ]
}