{
  "name": "Circular Turf Europe — missing data templates",
  "version": "1.0",
  "date": "2026-09-23",
  "rules": [
    "Leave unknown values empty — never enter 0 for unknown.",
    "Capacity is not throughput.",
    "Collection is not recycling.",
    "Export is not a final destination.",
    "Company-reported data stays company_reported.",
    "Every row needs a source."
  ],
  "categories": {
    "gps_coordinates": {
      "title": "Verified facility coordinates",
      "fields": [
        {
          "field": "facility_slug",
          "type": "string",
          "unit": "",
          "rule": "Required; must match existing facility slug",
          "validation": "^[a-z0-9-]+$"
        },
        {
          "field": "latitude",
          "type": "decimal",
          "unit": "degrees WGS84",
          "rule": "Required; 34.0 to 72.0 for Europe; ≥5 decimals",
          "validation": "34..72"
        },
        {
          "field": "longitude",
          "type": "decimal",
          "unit": "degrees WGS84",
          "rule": "Required; -25.0 to 45.0; ≥5 decimals",
          "validation": "-25..45"
        },
        {
          "field": "geocoding_method",
          "type": "enum",
          "unit": "",
          "rule": "Required",
          "validation": "permit_document|official_register|site_visit|geocoded_address"
        },
        {
          "field": "address_verified",
          "type": "string",
          "unit": "",
          "rule": "Required; full street address used",
          "validation": ""
        },
        {
          "field": "source_id",
          "type": "string",
          "unit": "",
          "rule": "Required. Existing CTE source ID or new ID, e.g. NL-GOV-2026-01",
          "validation": "^[A-Z0-9][A-Z0-9-]{2,60}$"
        },
        {
          "field": "source_url",
          "type": "url",
          "unit": "",
          "rule": "Required when source is public; https only",
          "validation": "^https://"
        },
        {
          "field": "source_type",
          "type": "enum",
          "unit": "",
          "rule": "Required",
          "validation": "official_eu_law|government|regulator|court|company|industry|academic|journalism|internal"
        },
        {
          "field": "evidence_level",
          "type": "enum",
          "unit": "",
          "rule": "Required. Company claims are never 'verified'",
          "validation": "verified|government_source|company_reported|industry_source|estimated|unknown"
        },
        {
          "field": "access_date",
          "type": "date",
          "unit": "ISO 8601",
          "rule": "Required; not in future",
          "validation": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        {
          "field": "notes",
          "type": "string",
          "unit": "",
          "rule": "Optional; max 1000 chars",
          "validation": ""
        }
      ],
      "example_row": {
        "facility_slug": null,
        "latitude": null,
        "longitude": null,
        "geocoding_method": null,
        "address_verified": null,
        "source_id": null,
        "source_url": null,
        "source_type": null,
        "evidence_level": null,
        "access_date": null,
        "notes": null
      }
    },
    "photos": {
      "title": "Rights-cleared photographs",
      "fields": [
        {
          "field": "image_slug",
          "type": "string",
          "unit": "",
          "rule": "Required; unique",
          "validation": "^[a-z0-9-]+$"
        },
        {
          "field": "image_url",
          "type": "url",
          "unit": "",
          "rule": "Required; https",
          "validation": "^https://"
        },
        {
          "field": "record_type",
          "type": "enum",
          "unit": "",
          "rule": "Required",
          "validation": "country|facility|problem|material|route"
        },
        {
          "field": "record_slug",
          "type": "string",
          "unit": "",
          "rule": "Required; existing record",
          "validation": "^[a-z0-9-]+$"
        },
        {
          "field": "image_role",
          "type": "enum",
          "unit": "",
          "rule": "Required; documentary only if it shows the named site/event",
          "validation": "documentary|illustrative"
        },
        {
          "field": "photographer",
          "type": "string",
          "unit": "",
          "rule": "Required",
          "validation": ""
        },
        {
          "field": "licence_type",
          "type": "enum",
          "unit": "",
          "rule": "Required; 'permission_written' needs permission document",
          "validation": "CC0|CC-BY|CC-BY-SA|public_domain|permission_written"
        },
        {
          "field": "licence_url",
          "type": "url",
          "unit": "",
          "rule": "Required unless permission_written",
          "validation": "^https://"
        },
        {
          "field": "permission_document",
          "type": "string",
          "unit": "",
          "rule": "Required if permission_written",
          "validation": ""
        },
        {
          "field": "date_taken",
          "type": "date",
          "unit": "ISO 8601",
          "rule": "Required for documentary",
          "validation": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        {
          "field": "alt_en",
          "type": "string",
          "unit": "",
          "rule": "Required; 20–200 chars, describe concrete content",
          "validation": ""
        },
        {
          "field": "alt_nl",
          "type": "string",
          "unit": "",
          "rule": "Required; 20–200 chars",
          "validation": ""
        },
        {
          "field": "alt_de",
          "type": "string",
          "unit": "",
          "rule": "Required; 20–200 chars",
          "validation": ""
        },
        {
          "field": "alt_fr",
          "type": "string",
          "unit": "",
          "rule": "Required; 20–200 chars",
          "validation": ""
        },
        {
          "field": "source_id",
          "type": "string",
          "unit": "",
          "rule": "Required. Existing CTE source ID or new ID, e.g. NL-GOV-2026-01",
          "validation": "^[A-Z0-9][A-Z0-9-]{2,60}$"
        },
        {
          "field": "source_url",
          "type": "url",
          "unit": "",
          "rule": "Required when source is public; https only",
          "validation": "^https://"
        },
        {
          "field": "source_type",
          "type": "enum",
          "unit": "",
          "rule": "Required",
          "validation": "official_eu_law|government|regulator|court|company|industry|academic|journalism|internal"
        },
        {
          "field": "evidence_level",
          "type": "enum",
          "unit": "",
          "rule": "Required. Company claims are never 'verified'",
          "validation": "verified|government_source|company_reported|industry_source|estimated|unknown"
        },
        {
          "field": "access_date",
          "type": "date",
          "unit": "ISO 8601",
          "rule": "Required; not in future",
          "validation": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        {
          "field": "notes",
          "type": "string",
          "unit": "",
          "rule": "Optional; max 1000 chars",
          "validation": ""
        }
      ],
      "example_row": {
        "image_slug": null,
        "image_url": null,
        "record_type": null,
        "record_slug": null,
        "image_role": null,
        "photographer": null,
        "licence_type": null,
        "licence_url": null,
        "permission_document": null,
        "date_taken": null,
        "alt_en": null,
        "alt_nl": null,
        "alt_de": null,
        "alt_fr": null,
        "source_id": null,
        "source_url": null,
        "source_type": null,
        "evidence_level": null,
        "access_date": null,
        "notes": null
      }
    },
    "volume_flows": {
      "title": "National volume and route flows",
      "fields": [
        {
          "field": "country_slug",
          "type": "string",
          "unit": "",
          "rule": "Required",
          "validation": "^[a-z0-9-]+$"
        },
        {
          "field": "reference_year",
          "type": "integer",
          "unit": "year",
          "rule": "Required; 2000–current year",
          "validation": "2000..2026"
        },
        {
          "field": "stream",
          "type": "enum",
          "unit": "",
          "rule": "Required",
          "validation": "sport|landscape|hybrid|leisure|all"
        },
        {
          "field": "route_key",
          "type": "enum",
          "unit": "",
          "rule": "Required",
          "validation": "reuse|material_recycling|downcycling|energy_recovery|landfill|export|storage|unknown_destination"
        },
        {
          "field": "material",
          "type": "enum",
          "unit": "",
          "rule": "Optional",
          "validation": "sand|SBR|TPE|EPDM|PE|PP|backing|residue|mixed"
        },
        {
          "field": "tonnes_min",
          "type": "decimal",
          "unit": "tonnes/year",
          "rule": "Required if tonnes_max given; ≥0",
          "validation": ">=0"
        },
        {
          "field": "tonnes_max",
          "type": "decimal",
          "unit": "tonnes/year",
          "rule": "≥ tonnes_min",
          "validation": ">=tonnes_min"
        },
        {
          "field": "square_metres",
          "type": "decimal",
          "unit": "m²/year",
          "rule": "Optional; ≥0",
          "validation": ">=0"
        },
        {
          "field": "conversion_factor_kg_m2",
          "type": "decimal",
          "unit": "kg/m²",
          "rule": "Required if tonnes derived from m²; 1–40",
          "validation": "1..40"
        },
        {
          "field": "method",
          "type": "enum",
          "unit": "",
          "rule": "Required",
          "validation": "measured|registry|survey|model|company_reported"
        },
        {
          "field": "final_destination_verified",
          "type": "boolean",
          "unit": "",
          "rule": "Required; true only with destination evidence",
          "validation": "true|false"
        },
        {
          "field": "source_id",
          "type": "string",
          "unit": "",
          "rule": "Required. Existing CTE source ID or new ID, e.g. NL-GOV-2026-01",
          "validation": "^[A-Z0-9][A-Z0-9-]{2,60}$"
        },
        {
          "field": "source_url",
          "type": "url",
          "unit": "",
          "rule": "Required when source is public; https only",
          "validation": "^https://"
        },
        {
          "field": "source_type",
          "type": "enum",
          "unit": "",
          "rule": "Required",
          "validation": "official_eu_law|government|regulator|court|company|industry|academic|journalism|internal"
        },
        {
          "field": "evidence_level",
          "type": "enum",
          "unit": "",
          "rule": "Required. Company claims are never 'verified'",
          "validation": "verified|government_source|company_reported|industry_source|estimated|unknown"
        },
        {
          "field": "access_date",
          "type": "date",
          "unit": "ISO 8601",
          "rule": "Required; not in future",
          "validation": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        {
          "field": "notes",
          "type": "string",
          "unit": "",
          "rule": "Optional; max 1000 chars",
          "validation": ""
        }
      ],
      "example_row": {
        "country_slug": null,
        "reference_year": null,
        "stream": null,
        "route_key": null,
        "material": null,
        "tonnes_min": null,
        "tonnes_max": null,
        "square_metres": null,
        "conversion_factor_kg_m2": null,
        "method": null,
        "final_destination_verified": null,
        "source_id": null,
        "source_url": null,
        "source_type": null,
        "evidence_level": null,
        "access_date": null,
        "notes": null
      }
    },
    "export_data": {
      "title": "Cross-border movements",
      "fields": [
        {
          "field": "origin_country_slug",
          "type": "string",
          "unit": "",
          "rule": "Required",
          "validation": "^[a-z0-9-]+$"
        },
        {
          "field": "destination_country_slug",
          "type": "string",
          "unit": "",
          "rule": "Required; ≠ origin",
          "validation": "^[a-z0-9-]+$"
        },
        {
          "field": "reference_year",
          "type": "integer",
          "unit": "year",
          "rule": "Required",
          "validation": "2000..2026"
        },
        {
          "field": "tonnes",
          "type": "decimal",
          "unit": "tonnes/year",
          "rule": "Optional; ≥0; leave empty if unknown",
          "validation": ">=0"
        },
        {
          "field": "waste_code",
          "type": "string",
          "unit": "EWC/Eural",
          "rule": "Optional; format NN NN NN (* for hazardous)",
          "validation": "^\\d{2} \\d{2} \\d{2}\\*?$"
        },
        {
          "field": "procedure",
          "type": "enum",
          "unit": "",
          "rule": "Required",
          "validation": "green_list|notification|refused|illegal|unknown"
        },
        {
          "field": "receiving_facility_slug",
          "type": "string",
          "unit": "",
          "rule": "Optional",
          "validation": "^[a-z0-9-]*$"
        },
        {
          "field": "final_destination",
          "type": "string",
          "unit": "",
          "rule": "Optional; 'export' is not a final destination",
          "validation": ""
        },
        {
          "field": "traceability_level",
          "type": "integer",
          "unit": "1–7",
          "rule": "Required; CTE traceability ladder",
          "validation": "1..7"
        },
        {
          "field": "source_id",
          "type": "string",
          "unit": "",
          "rule": "Required. Existing CTE source ID or new ID, e.g. NL-GOV-2026-01",
          "validation": "^[A-Z0-9][A-Z0-9-]{2,60}$"
        },
        {
          "field": "source_url",
          "type": "url",
          "unit": "",
          "rule": "Required when source is public; https only",
          "validation": "^https://"
        },
        {
          "field": "source_type",
          "type": "enum",
          "unit": "",
          "rule": "Required",
          "validation": "official_eu_law|government|regulator|court|company|industry|academic|journalism|internal"
        },
        {
          "field": "evidence_level",
          "type": "enum",
          "unit": "",
          "rule": "Required. Company claims are never 'verified'",
          "validation": "verified|government_source|company_reported|industry_source|estimated|unknown"
        },
        {
          "field": "access_date",
          "type": "date",
          "unit": "ISO 8601",
          "rule": "Required; not in future",
          "validation": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        {
          "field": "notes",
          "type": "string",
          "unit": "",
          "rule": "Optional; max 1000 chars",
          "validation": ""
        }
      ],
      "example_row": {
        "origin_country_slug": null,
        "destination_country_slug": null,
        "reference_year": null,
        "tonnes": null,
        "waste_code": null,
        "procedure": null,
        "receiving_facility_slug": null,
        "final_destination": null,
        "traceability_level": null,
        "source_id": null,
        "source_url": null,
        "source_type": null,
        "evidence_level": null,
        "access_date": null,
        "notes": null
      }
    },
    "throughput": {
      "title": "Independently verified throughput",
      "fields": [
        {
          "field": "facility_slug",
          "type": "string",
          "unit": "",
          "rule": "Required",
          "validation": "^[a-z0-9-]+$"
        },
        {
          "field": "reference_year",
          "type": "integer",
          "unit": "year",
          "rule": "Required",
          "validation": "2000..2026"
        },
        {
          "field": "throughput_tonnes",
          "type": "decimal",
          "unit": "tonnes/year",
          "rule": "Required; ≥0; actual processed, not capacity",
          "validation": ">=0"
        },
        {
          "field": "throughput_m2",
          "type": "decimal",
          "unit": "m²/year",
          "rule": "Optional",
          "validation": ">=0"
        },
        {
          "field": "capacity_basis",
          "type": "enum",
          "unit": "",
          "rule": "Required; which capacity this is NOT to be confused with",
          "validation": "licensed|installed|announced|company_reported"
        },
        {
          "field": "verification_type",
          "type": "enum",
          "unit": "",
          "rule": "Required; company statement alone is not verification",
          "validation": "regulator_report|audited_annual_report|permit_return|third_party_audit|mass_balance_certificate"
        },
        {
          "field": "verifier",
          "type": "string",
          "unit": "",
          "rule": "Required; independent body",
          "validation": ""
        },
        {
          "field": "source_id",
          "type": "string",
          "unit": "",
          "rule": "Required. Existing CTE source ID or new ID, e.g. NL-GOV-2026-01",
          "validation": "^[A-Z0-9][A-Z0-9-]{2,60}$"
        },
        {
          "field": "source_url",
          "type": "url",
          "unit": "",
          "rule": "Required when source is public; https only",
          "validation": "^https://"
        },
        {
          "field": "source_type",
          "type": "enum",
          "unit": "",
          "rule": "Required",
          "validation": "official_eu_law|government|regulator|court|company|industry|academic|journalism|internal"
        },
        {
          "field": "evidence_level",
          "type": "enum",
          "unit": "",
          "rule": "Required. Company claims are never 'verified'",
          "validation": "verified|government_source|company_reported|industry_source|estimated|unknown"
        },
        {
          "field": "access_date",
          "type": "date",
          "unit": "ISO 8601",
          "rule": "Required; not in future",
          "validation": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        {
          "field": "notes",
          "type": "string",
          "unit": "",
          "rule": "Optional; max 1000 chars",
          "validation": ""
        }
      ],
      "example_row": {
        "facility_slug": null,
        "reference_year": null,
        "throughput_tonnes": null,
        "throughput_m2": null,
        "capacity_basis": null,
        "verification_type": null,
        "verifier": null,
        "source_id": null,
        "source_url": null,
        "source_type": null,
        "evidence_level": null,
        "access_date": null,
        "notes": null
      }
    },
    "translations": {
      "title": "Missing translations",
      "fields": [
        {
          "field": "record_type",
          "type": "enum",
          "unit": "",
          "rule": "Required",
          "validation": "country|facility|problem|regulation|material"
        },
        {
          "field": "record_slug",
          "type": "string",
          "unit": "",
          "rule": "Required",
          "validation": "^[a-z0-9-]+$"
        },
        {
          "field": "field",
          "type": "enum",
          "unit": "",
          "rule": "Required",
          "validation": "name|title|summary|description|what_happened|issue"
        },
        {
          "field": "text_en",
          "type": "string",
          "unit": "",
          "rule": "Required; source text",
          "validation": ""
        },
        {
          "field": "text_nl",
          "type": "string",
          "unit": "",
          "rule": "Required",
          "validation": ""
        },
        {
          "field": "text_de",
          "type": "string",
          "unit": "",
          "rule": "Required",
          "validation": ""
        },
        {
          "field": "text_fr",
          "type": "string",
          "unit": "",
          "rule": "Required",
          "validation": ""
        },
        {
          "field": "translator",
          "type": "string",
          "unit": "",
          "rule": "Required; person or 'machine+reviewed'",
          "validation": ""
        },
        {
          "field": "reviewed",
          "type": "boolean",
          "unit": "",
          "rule": "Required; only true after human review",
          "validation": "true|false"
        },
        {
          "field": "source_id",
          "type": "string",
          "unit": "",
          "rule": "Required. Existing CTE source ID or new ID, e.g. NL-GOV-2026-01",
          "validation": "^[A-Z0-9][A-Z0-9-]{2,60}$"
        },
        {
          "field": "source_url",
          "type": "url",
          "unit": "",
          "rule": "Required when source is public; https only",
          "validation": "^https://"
        },
        {
          "field": "source_type",
          "type": "enum",
          "unit": "",
          "rule": "Required",
          "validation": "official_eu_law|government|regulator|court|company|industry|academic|journalism|internal"
        },
        {
          "field": "evidence_level",
          "type": "enum",
          "unit": "",
          "rule": "Required. Company claims are never 'verified'",
          "validation": "verified|government_source|company_reported|industry_source|estimated|unknown"
        },
        {
          "field": "access_date",
          "type": "date",
          "unit": "ISO 8601",
          "rule": "Required; not in future",
          "validation": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        {
          "field": "notes",
          "type": "string",
          "unit": "",
          "rule": "Optional; max 1000 chars",
          "validation": ""
        }
      ],
      "example_row": {
        "record_type": null,
        "record_slug": null,
        "field": null,
        "text_en": null,
        "text_nl": null,
        "text_de": null,
        "text_fr": null,
        "translator": null,
        "reviewed": null,
        "source_id": null,
        "source_url": null,
        "source_type": null,
        "evidence_level": null,
        "access_date": null,
        "notes": null
      }
    }
  }
}