{
  "contract": {
    "title": "Collective Bargaining Agreement",
    "union": "IAM - Local Lodge No. 519",
    "employer": "Tunista Logistics Solutions, LLC / Tunista Operations Support Services, LLC",
    "facility": "Gila Bend AFAF, Arizona",
    "start": "2023-06-01",
    "end": "2026-05-31",
    "note": ""
  },

  "years": [
    {
      "effective": "2023-10-01",
      "pay_rates": {
        "Assistant Chief of Prevention/Safety/Training": 39.65,
        "Assistant Chief":                              37.63,
        "Station Captain":                             35.98,
        "Captain":                                     34.41,
        "Engineer":                                    32.91,
        "Paramedic":                                   30.75,
        "Lead Alarm Room Operator":                    30.85,
        "Alarm Room Operator":                         29.54
      },
      "ems_differential": {
        "EMT":       0.25,
        "Paramedic": 0.85
      },
      "health_welfare_per_hour": 7.36,
      "pension_per_hour":        6.25,
      "k401_per_hour":           1.15,
      "standby_per_night":       40.00
    },
    {
      "effective": "2024-10-01",
      "pay_rates": {
        "Assistant Chief of Prevention/Safety/Training": 40.80,
        "Assistant Chief":                              38.78,
        "Station Captain":                             37.13,
        "Captain":                                     35.56,
        "Engineer":                                    34.06,
        "Paramedic":                                   31.90,
        "Lead Alarm Room Operator":                    32.00,
        "Alarm Room Operator":                         30.69
      },
      "ems_differential": {
        "EMT":       0.25,
        "Paramedic": 0.85
      },
      "health_welfare_per_hour": 7.86,
      "pension_per_hour":        6.50,
      "k401_per_hour":           1.40,
      "standby_per_night":       45.00
    },
    {
      "effective": "2025-10-01",
      "pay_rates": {
        "Assistant Chief of Prevention/Safety/Training": 41.95,
        "Assistant Chief":                              39.93,
        "Station Captain":                             38.28,
        "Captain":                                     36.71,
        "Engineer":                                    35.21,
        "Paramedic":                                   33.05,
        "Lead Alarm Room Operator":                    33.15,
        "Alarm Room Operator":                         31.84
      },
      "ems_differential": {
        "EMT":       0.25,
        "Paramedic": 0.85
      },
      "health_welfare_per_hour": 8.36,
      "pension_per_hour":        6.75,
      "k401_per_hour":           1.65,
      "standby_per_night":       50.00
    }
  ],

  "vacation_accrual": {
    "note": "Accrual based on continuous service years. Rates differ by work schedule.",
    "max_carryover_hrs": 85,
    "probation_days":    90,
    "probation_note":    "No accrual during probation. Hours credited retroactively upon completion.",
    "schedules": {
      "24hr": {
        "label":  "24-Hour Shift",
        "shifts": ["A", "B"],
        "leave_hours_per_day": { "weekday": 17, "weekend": 16 },
        "tiers": [
          { "label": "Tier 1", "min_years": 0, "max_years": 3,    "hrs_per_year": 167.18, "hrs_per_period": 6.43  },
          { "label": "Tier 2", "min_years": 3, "max_years": 7,    "hrs_per_year": 250.64, "hrs_per_period": 9.64  },
          { "label": "Tier 3", "min_years": 7, "max_years": null,  "hrs_per_year": 334.36, "hrs_per_period": 12.86 }
        ]
      },
      "8hr": {
        "label":  "8-Hour Shift",
        "shifts": ["C"],
        "leave_hours_per_day": { "weekday": 10, "weekend": 10 },
        "tiers": [
          { "label": "Tier 1", "min_years": 0, "max_years": 3,    "hrs_per_year": 80,  "hrs_per_period": 3.08 },
          { "label": "Tier 2", "min_years": 3, "max_years": 7,    "hrs_per_year": 120, "hrs_per_period": 4.62 },
          { "label": "Tier 3", "min_years": 7, "max_years": null,  "hrs_per_year": 160, "hrs_per_period": 6.15 }
        ]
      },
      "ecc": {
        "label":  "ECC / Dispatch",
        "shifts": ["E"],
        "leave_hours_per_day": { "weekday": 8, "weekend": 8 },
        "tiers": [
          { "label": "Tier 1", "min_years": 0, "max_years": 3,    "hrs_per_year": 120, "hrs_per_period": 4.62 },
          { "label": "Tier 2", "min_years": 3, "max_years": 7,    "hrs_per_year": 160, "hrs_per_period": 6.15 },
          { "label": "Tier 3", "min_years": 7, "max_years": null,  "hrs_per_year": 200, "hrs_per_period": 7.69 }
        ]
      }
    }
  },

  "sick_leave": {
    "days_per_year":    7,
    "loaded_date":      "October 1",
    "max_carryover_days": 10,
    "min_increment_hrs":  1,
    "note":             "Cannot be used as vacation. Available after 90-day probation."
  },

  "holiday_pay": {
    "hours_per_holiday": 17,
    "note":              "Firefighters on 24-hour shift receive 17 hours holiday pay at regular rate. 11 observed holidays per year."
  },

  "overtime": {
    "multiplier":        1.5,
    "threshold_hrs":     40,
    "distribution":      "Rotated among qualified volunteers; mandatory by reverse seniority if no volunteers."
  },

  "severance": {
    "tiers": [
      { "min_years": 1, "max_years": 5,  "firefighters_hrs": 170 },
      { "min_years": 5, "max_years": 10, "firefighters_hrs": 255 },
      { "min_years": 10,"max_years": null,"firefighters_hrs": 340 }
    ],
    "note": "Paid at regular rate including overtime. Only if not offered full-time employment by successor contractor."
  },

  "position_key_map": {
    "_note": "Needles matched case-insensitively via str_contains against users.position. Order matters — more-specific needles must come before shorter ones that would also match (e.g. 'st. captain' before 'captain', 'lead dispatch' before 'dispatch').",
    "ac training":   "Assistant Chief of Prevention/Safety/Training",
    "ac ops":        "Assistant Chief",
    "st. captain":   "Station Captain",
    "captain":       "Captain",
    "engineer":      "Engineer",
    "paramedic":     "Paramedic",
    "lead dispatch": "Lead Alarm Room Operator",
    "dispatch":      "Alarm Room Operator"
  }
}
