{
  "schemaVersion": 2,
  "preparedAt": "2026-09-09",
  "purpose": "Sources and benchmark limits for the corrected demographic screen; no automatic capture baseline.",
  "datasets": {
    "filosofi2021Grid200m": {
      "publisher": "INSEE",
      "title": "Revenus, pauvreté et niveau de vie en 2021 - Données carroyées, 200 m",
      "pageUrl": "https://www.insee.fr/fr/statistiques/8735162?sommaire=8735243",
      "releasePageUrl": "https://www.insee.fr/fr/statistiques/8735243",
      "downloadUrl": "https://www.insee.fr/fr/statistiques/fichier/8735162/Filosofi2021_carreaux_200m_csv.zip",
      "methodologyUrl": "https://www.insee.fr/fr/statistiques/fichier/8735106/documentation_donnees-carroyees_filosofi2021.pdf",
      "incomeReferenceYear": 2021,
      "incomeDeclarationsYear": 2022,
      "housingTaxReferenceDate": "2022-01-01",
      "communeCodeGeographyDate": "2021-01-01",
      "gridPagePublishedDate": "2026-02-12",
      "parentReleasePublishedDate": "2026-02-16",
      "edition": "February 2026 release of Filosofi 2021 grid data",
      "checkedAt": "2026-09-09",
      "archiveCoverage": [
        "Metropolitan France",
        "Martinique",
        "La Réunion"
      ],
      "screenCoverage": "Metropolitan France; select the metropolitan CSV rather than merging all archive files.",
      "archiveSha256": "5935efb1b734ee49e2335bd546b18b8086cd718ebb8e6edc4cf70a89554ea8a3",
      "metropolitanCsvSha256": "1f0b2dc4e4ded6b61df6f64a2374e1c4b5247f82ae7712c8c7cc8c884d0d6104",
      "archiveIntegrityNote": "Downloaded and verified on 2026-09-09. fetch_sources_v2.py pins both archive and extracted metropolitan CSV checksums; a changed edition requires explicit review.",
      "populationScope": "Fiscal households with non-negative disposable income. Institutional residents and homeless people are excluded. This is not census population.",
      "fieldDefinitions": {
        "idcar_200m": "Grid identifier. N/E are the lower-left corner coordinates; mainland identifier coordinates use ETRS89-LAEA (EPSG:3035).",
        "ind": "Fiscal individuals; directly reported even where other variables are imputed.",
        "men": "Fiscal households; may be imputed.",
        "ind_snv": "Sum of individual annual equivalised disposable living standards after departmental P5/P95 capping; may be imputed.",
        "i_est_200": "1 indicates imputation; 0 indicates otherwise. Some cells with at least 11 households are also grouped and imputed.",
        "lcog_geo": "Intersected commune codes at COG 2021, comma-separated in descending area-overlap order; not a person-by-commune allocation.",
        "ind_25_39": "Fiscal individuals aged 25–39; may be imputed.",
        "ind_40_54": "Fiscal individuals aged 40–54; may be imputed.",
        "ind_55_64": "Fiscal individuals aged 55–64; may be imputed.",
        "ind_inc": "Fiscal individuals with unknown age."
      },
      "derivedMeasures": {
        "ages25To54": "sum(ind_25_39 + ind_40_54)",
        "ages25To64": "sum(ind_25_39 + ind_40_54 + ind_55_64)",
        "knownAdults18Plus": "sum(ind_18_24 + ind_25_39 + ind_40_54 + ind_55_64 + ind_65_79 + ind_80p)",
        "share25To54OfKnownAdultsPct": "100 * ages25To54 / knownAdults18Plus, null if denominator is zero",
        "share25To64OfKnownAdultsPct": "100 * ages25To64 / knownAdults18Plus, null if denominator is zero",
        "meanWinsorisedLivingStandardEurPerUc": "sum(ind_snv) / sum(ind), null if population is zero; never average cell means without population weights",
        "imputedCellSharePct": "100 * count(i_est_200 == 1) / count(selected populated cells)",
        "populationInImputedCellsPct": "100 * sum(ind where i_est_200 == 1) / sum(ind); exposure of age/income estimates, not imputation of ind itself"
      },
      "winsorisationThresholdsEurPerUc": {
        "13": {
          "p5": 8872,
          "p95": 51877
        },
        "75": {
          "p5": 8226,
          "p95": 97730
        }
      },
      "methodologyPages": {
        "fiscalScopeAndStudentLocation": [
          3,
          4
        ],
        "ageAndVariableDefinitions": [
          6,
          7,
          8
        ],
        "winsorisation": [
          10,
          18,
          19
        ],
        "imputation": [
          12,
          13,
          14
        ],
        "interpretationAndCensusNonComparability": [
          15,
          16
        ],
        "coordinateReferenceSystem": [
          17
        ]
      },
      "interpretationLimits": [
        "The file publishes marginal age counts and income sums, not joint age-by-income counts or local income quantiles.",
        "A lognormal sigma of 0.35 is not supplied or validated by INSEE. The old qualified-adult estimate is an unvalidated model output.",
        "The 25–54 and 25–64 bands are separate descriptive comparisons, not validated customer eligibility rules.",
        "Do not reconcile fiscal-grid population with census totals or use the Marseille IRIS totals as a validation of a differently drawn grid catchment.",
        "Students are not universally excluded. Tax-dependent students may appear at their parents’ address; working residents are included.",
        "The data adds no nonresident daytime-worker, visitor or tourist catchment.",
        "Unknown ages must remain distinct. Aggregate source counts before rounding.",
        "Income and population statistics do not measure interest, willingness to pay, conversion or retention."
      ]
    },
    "communeLabels2021": {
      "publisher": "INSEE",
      "pageUrl": "https://www.insee.fr/fr/information/5057840",
      "downloadUrl": "https://www.insee.fr/fr/statistiques/fichier/5057840/commune2021-csv.zip",
      "geographyDate": "2021-01-01",
      "archiveSha256": "67a88da9061609c861b20aa853f5480d1fcdc8431e3911ae6c6c03cc925febd7",
      "csvSha256": "8e4b777dffd61d26f4feb7f7b38570e2f1976bf2ad838200ac28ffa125cd2b52",
      "derivedLabelsSha256": "8ea1a2fa3b56c7d7166deb01aedaca55543c11358a70760b3ba95cdec3aa3580",
      "derivation": "TYPECOM in COM or ARM; code from COM; name from LIBELLE. 35,010 labels. Only used to name geographic context; no population apportionment."
    },
    "marseilleIrisContext": {
      "populationYear": 2022,
      "populationGeographyDate": "2024-01-01",
      "populationUrl": "https://www.insee.fr/fr/statistiques/8647014",
      "incomeYear": 2021,
      "incomeGeographyDate": "2022-01-01",
      "incomeUrl": "https://www.insee.fr/fr/statistiques/8229323",
      "methodologyPath": "../marseille-sud/README.md",
      "relationshipToGrid": "Separate descriptive package. IRIS medians are not grid means, and population scopes and geographic catchments differ."
    }
  },
  "benchmarkPolicy": {
    "automaticCaptureBaseline": null,
    "measuredLocalCaptureAvailable": false,
    "memberOriginsAvailable": false,
    "memberAgeIncomeJointDistributionAvailable": false,
    "benchmarkMultipleAvailable": false,
    "formatVerdictFromBenchmarkAvailable": false,
    "rule": "Use club locations for labelled demographic comparisons. Historical total membership is not a measured local penetration rate.",
    "withdrawnV1Baselines": [
      "1.8% of modelled qualified adults",
      "0.9% of all adults"
    ],
    "v1Correction": "The 1,500 figure belongs to a December 2019 report about Canal. It is not a current Lamarck count. V1 also used a generic Paris 18e peak rather than the Lamarck pin.",
    "memberCountSource": {
      "url": "https://www.excp.com/themes/excp/images/upload/pdf_press/20191213_-_dynamo_-_le_figaro/20191213_-_dynamo_-_le_figaro.pdf",
      "publisher": "Le Figaro",
      "author": "Mathilde Visseyrias",
      "publishedDate": "2019-12-13",
      "page": 3,
      "checkedAt": "2026-09-09",
      "evidenceType": "Historical press report, text verified; membership itself not independently audited"
    },
    "futureEvidenceRequired": [
      "Club-specific dated active paying-member count",
      "Member origins relative to a stated catchment",
      "Matching member and population age/eligibility definitions",
      "Comparable periods and membership products"
    ]
  },
  "clubs": [
    {
      "id": "osm:node/6949162391",
      "name": "La Montgolfière — Canal",
      "club": "Canal",
      "address": "25 rue Yves Toudic",
      "postalCode": "75010",
      "city": "Paris",
      "officialUrl": "https://lamontgolfiereclub.com/clubs/la-montgolfiere-canal/",
      "addressVerifiedAt": "2026-09-09",
      "historicalReportedMembers": 1500,
      "historicalReportDate": "2019-12-13",
      "historicalMemberSourceUrl": "https://www.excp.com/themes/excp/images/upload/pdf_press/20191213_-_dynamo_-_le_figaro/20191213_-_dynamo_-_le_figaro.pdf",
      "currentVerifiedMembers": null,
      "measuredLocalCapture": null,
      "membershipStatus": "Historical press figure only; current count unverified",
      "coordinates": {
        "latitude": 48.8708503,
        "longitude": 2.3628534,
        "crs": "WGS84 / EPSG:4326",
        "copiedFrom": "website/content/movement-map/paris.json",
        "recordId": "osm:node/6949162391",
        "sourceFileSha256": "c022749dfc094ce788215d1c2ea93466a4404693dc94e9c589ab5755ac5ccc86",
        "sourceRecordLastVerifiedAt": "2026-09-04",
        "freshGeocodePerformed": false,
        "provenance": "Existing OpenStreetMap-derived public venue-map pin; original OSM source recorded",
        "coordinateSourceUrl": "https://www.openstreetmap.org/node/6949162391",
        "precisionNote": "Use as an approximate venue pin. Official page verifies address, not exact coordinate accuracy.",
        "originalRecordSources": [
          {
            "name": "osm",
            "url": "https://www.openstreetmap.org/node/6949162391",
            "retrieved_at": "2026-09-03T19:40:58.481073+00:00",
            "updated_at": null,
            "release": null,
            "record_id": "node/6949162391"
          },
          {
            "name": "official_website",
            "url": "https://lamontgolfiereclub.com/clubs/la-montgolfiere-canal/",
            "retrieved_at": "2026-09-04",
            "updated_at": null,
            "release": null,
            "record_id": "review:osm:node/6949162391"
          }
        ]
      }
    },
    {
      "id": "official:la-montgolfiere-lamarck",
      "name": "La Montgolfière — Lamarck",
      "club": "Lamarck",
      "address": "74 rue Joseph de Maistre",
      "postalCode": "75018",
      "city": "Paris",
      "officialUrl": "https://lamontgolfiereclub.com/clubs/la-montgolfiere-lamarck/",
      "addressVerifiedAt": "2026-09-09",
      "historicalReportedMembers": null,
      "historicalReportDate": null,
      "historicalMemberSourceUrl": null,
      "currentVerifiedMembers": null,
      "measuredLocalCapture": null,
      "membershipStatus": "No count found in checked official source; project benchmark notes also list it as unreported",
      "coordinates": {
        "latitude": 48.891315,
        "longitude": 2.331004,
        "crs": "WGS84 / EPSG:4326",
        "copiedFrom": "website/content/movement-map/paris.json",
        "recordId": "official:la-montgolfiere-lamarck",
        "sourceFileSha256": "c022749dfc094ce788215d1c2ea93466a4404693dc94e9c589ab5755ac5ccc86",
        "sourceRecordLastVerifiedAt": "2026-09-05",
        "freshGeocodePerformed": false,
        "provenance": "Existing public venue-map pin; official address recorded but coordinate geocoder not identified",
        "coordinateSourceUrl": null,
        "precisionNote": "Use as an approximate venue pin. Official page verifies address, not exact coordinate accuracy.",
        "originalRecordSources": [
          {
            "name": "official_website",
            "url": "https://lamontgolfiereclub.com/clubs/la-montgolfiere-lamarck/",
            "retrieved_at": "2026-09-05",
            "updated_at": null,
            "release": null,
            "record_id": "la-montgolfiere-lamarck"
          }
        ]
      }
    }
  ]
}
