{
  "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-08-07.11",
  "generatedAt": "2026-08-07T17:42:45.979Z",
  "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": 7,
      "total_open_postings": 5695,
      "classified_postings": 253,
      "pct_of_observed_postings": 0.1,
      "classification_coverage_pct": 4.4,
      "postings_with_salary": 4,
      "salary_disclosure_pct": null,
      "postings_with_location": 3,
      "postings_remote": 4,
      "postings_hybrid": 0,
      "postings_onsite": 0,
      "postings_remote_unknown": 3,
      "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-08-07T17:42:21.617Z"
    },
    {
      "role_family": "BI_DEVELOPER",
      "open_postings": 2,
      "total_open_postings": 5695,
      "classified_postings": 253,
      "pct_of_observed_postings": 0,
      "classification_coverage_pct": 4.4,
      "postings_with_salary": 0,
      "salary_disclosure_pct": null,
      "postings_with_location": 2,
      "postings_remote": 2,
      "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-08-07T17:42:21.617Z"
    },
    {
      "role_family": "DATA_ANALYST",
      "open_postings": 31,
      "total_open_postings": 5695,
      "classified_postings": 253,
      "pct_of_observed_postings": 0.5,
      "classification_coverage_pct": 4.4,
      "postings_with_salary": 15,
      "salary_disclosure_pct": 48.4,
      "postings_with_location": 29,
      "postings_remote": 19,
      "postings_hybrid": 0,
      "postings_onsite": 0,
      "postings_remote_unknown": 12,
      "supports_comparison": true,
      "small_sample_caveat": null,
      "computed_at": "2026-08-07T17:42:21.617Z"
    },
    {
      "role_family": "DATA_ENGINEER",
      "open_postings": 19,
      "total_open_postings": 5695,
      "classified_postings": 253,
      "pct_of_observed_postings": 0.3,
      "classification_coverage_pct": 4.4,
      "postings_with_salary": 6,
      "salary_disclosure_pct": null,
      "postings_with_location": 14,
      "postings_remote": 2,
      "postings_hybrid": 0,
      "postings_onsite": 2,
      "postings_remote_unknown": 15,
      "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-08-07T17:42:21.617Z"
    },
    {
      "role_family": "DATA_LEADERSHIP",
      "open_postings": 1,
      "total_open_postings": 5695,
      "classified_postings": 253,
      "pct_of_observed_postings": 0,
      "classification_coverage_pct": 4.4,
      "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-08-07T17:42:21.617Z"
    },
    {
      "role_family": "DATA_SCIENTIST",
      "open_postings": 78,
      "total_open_postings": 5695,
      "classified_postings": 253,
      "pct_of_observed_postings": 1.4,
      "classification_coverage_pct": 4.4,
      "postings_with_salary": 34,
      "salary_disclosure_pct": 43.6,
      "postings_with_location": 62,
      "postings_remote": 39,
      "postings_hybrid": 3,
      "postings_onsite": 1,
      "postings_remote_unknown": 35,
      "supports_comparison": true,
      "small_sample_caveat": null,
      "computed_at": "2026-08-07T17:42:21.617Z"
    },
    {
      "role_family": "ML_ENGINEER",
      "open_postings": 115,
      "total_open_postings": 5695,
      "classified_postings": 253,
      "pct_of_observed_postings": 2,
      "classification_coverage_pct": 4.4,
      "postings_with_salary": 44,
      "salary_disclosure_pct": 38.3,
      "postings_with_location": 104,
      "postings_remote": 67,
      "postings_hybrid": 2,
      "postings_onsite": 0,
      "postings_remote_unknown": 46,
      "supports_comparison": true,
      "small_sample_caveat": null,
      "computed_at": "2026-08-07T17:42:21.617Z"
    },
    {
      "role_family": "UNMATCHED",
      "open_postings": 5442,
      "total_open_postings": 5695,
      "classified_postings": 253,
      "pct_of_observed_postings": 95.6,
      "classification_coverage_pct": 4.4,
      "postings_with_salary": 2014,
      "salary_disclosure_pct": 37,
      "postings_with_location": 4132,
      "postings_remote": 1496,
      "postings_hybrid": 314,
      "postings_onsite": 47,
      "postings_remote_unknown": 3585,
      "supports_comparison": true,
      "small_sample_caveat": null,
      "computed_at": "2026-08-07T17:42:21.617Z"
    }
  ]
}
