survey:
  id: "spring-migration-2026"
  name: "Spring Migration Bird Survey"
  organization: "Great Lakes Citizen Science Network"
  timezone: "America/Toronto"
  start_date: "2026-04-01"
  end_date: "2026-05-31"
  protocol: "stationary-point-count"

locations:
  allowed_region:
    type: "GeoJSON"
    file: "./regions/great-lakes-watershed.geojson"
  sensitive_species:
    obscure_coordinates: true
    obscuration_radius_km: 10

observations:
  count_duration_minutes: 10
  minimum_distance_between_sites_m: 250
  required_fields:
    - observer_id
    - observed_at
    - latitude
    - longitude
    - species_code
    - count
  optional_fields:
    - breeding_code
    - habitat
    - weather
    - notes
    - media_urls
  validation:
    maximum_count_per_species: 500
    coordinate_accuracy_m: 100
    accepted_species_taxonomy: "eBird/Clements 2025"
    allow_unknown_species: true
    require_review_when:
      - rare_species
      - count_above_local_threshold
      - observation_outside_known_range

weather:
  maximum_wind_beaufort: 4
  precipitation_allowed: false
  record_fields:
    - temperature_c
    - cloud_cover_percent
    - wind_beaufort
    - precipitation

participants:
  minimum_age: 13
  parental_consent_required_under: 16
  training:
    required: true
    course_url: "https://example.org/training/bird-survey"
    passing_score_percent: 80
  privacy:
    public_display_name: "anonymous"
    retain_contact_information_days: 365

data_pipeline:
  ingestion:
    format: "CSV"
    schedule: "0 */6 * * *"
    source: "./incoming"
  processing:
    deduplicate:
      keys:
        - observer_id
        - observed_at
        - latitude
        - longitude
        - species_code
    enrich:
      - taxonomy
      - region
      - conservation_status
    quality_control:
      automatic_checks: true
      expert_review_queue: true
  export:
    formats:
      - "CSV"
      - "Darwin Core Archive"
    destination: "./exports"
    publish_schedule: "0 3 * * 1"
    license: "CC-BY-4.0"

notifications:
  channels:
    email:
      enabled: true
      from: "survey@example.org"
    sms:
      enabled: false
  events:
    submission_received: true
    observation_flagged: true
    observation_verified: true

logging:
  level: "info"
  retain_days: 90
  redact_personal_information: true