{
  "dataset": "role-family-snapshot",
  "title": "Open postings by role family",
  "description": "A point-in-time count of open postings in each role family, with the observed population it came from and how much of that population could be placed into a family at all.",
  "release": "2026-10-17.1",
  "generatedAt": "2026-10-17T09:10:14.777Z",
  "license": "CC-BY-4.0",
  "attribution": "Analytics Engineering Observatory",
  "notes": [
    "Figures describe an observed sample of open postings, not the whole job market.",
    "Permitted claim class for this release: SNAPSHOT_ONLY."
  ],
  "rowCount": 8,
  "columns": [
    "role_family",
    "open_postings",
    "total_open_postings",
    "classified_postings",
    "pct_of_observed_postings",
    "classification_coverage_pct",
    "postings_with_salary",
    "salary_disclosure_pct",
    "postings_with_location",
    "postings_remote",
    "postings_hybrid",
    "postings_onsite",
    "postings_remote_unknown",
    "supports_comparison",
    "small_sample_caveat",
    "computed_at"
  ],
  "rows": [
    {
      "role_family": "ANALYTICS_ENGINEER",
      "open_postings": 15,
      "total_open_postings": 6238,
      "classified_postings": 246,
      "pct_of_observed_postings": 0.2,
      "classification_coverage_pct": 3.9,
      "postings_with_salary": 11,
      "salary_disclosure_pct": null,
      "postings_with_location": 14,
      "postings_remote": 9,
      "postings_hybrid": 0,
      "postings_onsite": 0,
      "postings_remote_unknown": 6,
      "supports_comparison": false,
      "small_sample_caveat": "Counted in full, but below 30 postings — too small to compare against another family or to read as a trend.",
      "computed_at": "2026-10-17T09:10:10.518Z"
    },
    {
      "role_family": "DATA_ANALYST",
      "open_postings": 29,
      "total_open_postings": 6238,
      "classified_postings": 246,
      "pct_of_observed_postings": 0.5,
      "classification_coverage_pct": 3.9,
      "postings_with_salary": 7,
      "salary_disclosure_pct": null,
      "postings_with_location": 26,
      "postings_remote": 7,
      "postings_hybrid": 2,
      "postings_onsite": 0,
      "postings_remote_unknown": 20,
      "supports_comparison": false,
      "small_sample_caveat": "Counted in full, but below 30 postings — too small to compare against another family or to read as a trend.",
      "computed_at": "2026-10-17T09:10:10.518Z"
    },
    {
      "role_family": "DATA_ARCHITECT",
      "open_postings": 1,
      "total_open_postings": 6238,
      "classified_postings": 246,
      "pct_of_observed_postings": 0,
      "classification_coverage_pct": 3.9,
      "postings_with_salary": 0,
      "salary_disclosure_pct": null,
      "postings_with_location": 1,
      "postings_remote": 0,
      "postings_hybrid": 0,
      "postings_onsite": 0,
      "postings_remote_unknown": 1,
      "supports_comparison": false,
      "small_sample_caveat": "Counted in full, but below 30 postings — too small to compare against another family or to read as a trend.",
      "computed_at": "2026-10-17T09:10:10.518Z"
    },
    {
      "role_family": "DATA_ENGINEER",
      "open_postings": 30,
      "total_open_postings": 6238,
      "classified_postings": 246,
      "pct_of_observed_postings": 0.5,
      "classification_coverage_pct": 3.9,
      "postings_with_salary": 9,
      "salary_disclosure_pct": 30,
      "postings_with_location": 27,
      "postings_remote": 5,
      "postings_hybrid": 0,
      "postings_onsite": 1,
      "postings_remote_unknown": 24,
      "supports_comparison": true,
      "small_sample_caveat": null,
      "computed_at": "2026-10-17T09:10:10.518Z"
    },
    {
      "role_family": "DATA_LEADERSHIP",
      "open_postings": 1,
      "total_open_postings": 6238,
      "classified_postings": 246,
      "pct_of_observed_postings": 0,
      "classification_coverage_pct": 3.9,
      "postings_with_salary": 1,
      "salary_disclosure_pct": null,
      "postings_with_location": 1,
      "postings_remote": 1,
      "postings_hybrid": 0,
      "postings_onsite": 0,
      "postings_remote_unknown": 0,
      "supports_comparison": false,
      "small_sample_caveat": "Counted in full, but below 30 postings — too small to compare against another family or to read as a trend.",
      "computed_at": "2026-10-17T09:10:10.518Z"
    },
    {
      "role_family": "DATA_SCIENTIST",
      "open_postings": 61,
      "total_open_postings": 6238,
      "classified_postings": 246,
      "pct_of_observed_postings": 1,
      "classification_coverage_pct": 3.9,
      "postings_with_salary": 29,
      "salary_disclosure_pct": 47.5,
      "postings_with_location": 44,
      "postings_remote": 24,
      "postings_hybrid": 3,
      "postings_onsite": 0,
      "postings_remote_unknown": 34,
      "supports_comparison": true,
      "small_sample_caveat": null,
      "computed_at": "2026-10-17T09:10:10.518Z"
    },
    {
      "role_family": "ML_ENGINEER",
      "open_postings": 109,
      "total_open_postings": 6238,
      "classified_postings": 246,
      "pct_of_observed_postings": 1.7,
      "classification_coverage_pct": 3.9,
      "postings_with_salary": 38,
      "salary_disclosure_pct": 34.9,
      "postings_with_location": 84,
      "postings_remote": 48,
      "postings_hybrid": 5,
      "postings_onsite": 0,
      "postings_remote_unknown": 56,
      "supports_comparison": true,
      "small_sample_caveat": null,
      "computed_at": "2026-10-17T09:10:10.518Z"
    },
    {
      "role_family": "UNMATCHED",
      "open_postings": 5992,
      "total_open_postings": 6238,
      "classified_postings": 246,
      "pct_of_observed_postings": 96.1,
      "classification_coverage_pct": 3.9,
      "postings_with_salary": 2257,
      "salary_disclosure_pct": 37.7,
      "postings_with_location": 4504,
      "postings_remote": 1526,
      "postings_hybrid": 470,
      "postings_onsite": 42,
      "postings_remote_unknown": 3954,
      "supports_comparison": true,
      "small_sample_caveat": null,
      "computed_at": "2026-10-17T09:10:10.518Z"
    }
  ]
}
