{
  "dataset": "compensation-snapshot",
  "title": "Disclosed compensation by role family",
  "description": "Percentiles of stated pay for postings that disclosed it, kept separate by currency and period because neither can be combined without an assumption the postings never made.",
  "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": 33,
  "columns": [
    "role_family",
    "comp_currency",
    "comp_period",
    "disclosed_posting_count",
    "open_postings",
    "disclosing_postings",
    "salary_disclosure_pct",
    "p25",
    "median",
    "p75",
    "lowest_stated_min",
    "highest_stated_max",
    "is_suppressed",
    "suppression_reason",
    "required_caveat",
    "computed_at"
  ],
  "rows": [
    {
      "role_family": "ANALYTICS_ENGINEER",
      "comp_currency": "PLN",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 1,
      "open_postings": 7,
      "disclosing_postings": 4,
      "salary_disclosure_pct": 57.1,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 1 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "ANALYTICS_ENGINEER",
      "comp_currency": "PLN",
      "comp_period": "MONTHLY",
      "disclosed_posting_count": 2,
      "open_postings": 7,
      "disclosing_postings": 4,
      "salary_disclosure_pct": 57.1,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 2 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "ANALYTICS_ENGINEER",
      "comp_currency": "USD",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 1,
      "open_postings": 7,
      "disclosing_postings": 4,
      "salary_disclosure_pct": 57.1,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 1 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "DATA_ANALYST",
      "comp_currency": "CAD",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 3,
      "open_postings": 31,
      "disclosing_postings": 15,
      "salary_disclosure_pct": 48.4,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 3 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "DATA_ANALYST",
      "comp_currency": "EUR",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 2,
      "open_postings": 31,
      "disclosing_postings": 15,
      "salary_disclosure_pct": 48.4,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 2 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "DATA_ANALYST",
      "comp_currency": "GBP",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 1,
      "open_postings": 31,
      "disclosing_postings": 15,
      "salary_disclosure_pct": 48.4,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 1 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "DATA_ANALYST",
      "comp_currency": "SEK",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 1,
      "open_postings": 31,
      "disclosing_postings": 15,
      "salary_disclosure_pct": 48.4,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 1 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "DATA_ANALYST",
      "comp_currency": "USD",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 8,
      "open_postings": 31,
      "disclosing_postings": 15,
      "salary_disclosure_pct": 48.4,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 8 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "DATA_ENGINEER",
      "comp_currency": "CAD",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 1,
      "open_postings": 19,
      "disclosing_postings": 6,
      "salary_disclosure_pct": 31.6,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 1 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "DATA_ENGINEER",
      "comp_currency": "PLN",
      "comp_period": "MONTHLY",
      "disclosed_posting_count": 1,
      "open_postings": 19,
      "disclosing_postings": 6,
      "salary_disclosure_pct": 31.6,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 1 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "DATA_ENGINEER",
      "comp_currency": "USD",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 4,
      "open_postings": 19,
      "disclosing_postings": 6,
      "salary_disclosure_pct": 31.6,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 4 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "DATA_SCIENTIST",
      "comp_currency": "CAD",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 4,
      "open_postings": 78,
      "disclosing_postings": 34,
      "salary_disclosure_pct": 43.6,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 4 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "DATA_SCIENTIST",
      "comp_currency": "PLN",
      "comp_period": "MONTHLY",
      "disclosed_posting_count": 1,
      "open_postings": 78,
      "disclosing_postings": 34,
      "salary_disclosure_pct": 43.6,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 1 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "DATA_SCIENTIST",
      "comp_currency": "USD",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 29,
      "open_postings": 78,
      "disclosing_postings": 34,
      "salary_disclosure_pct": 43.6,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 29 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "ML_ENGINEER",
      "comp_currency": "CAD",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 3,
      "open_postings": 115,
      "disclosing_postings": 44,
      "salary_disclosure_pct": 38.3,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 3 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "ML_ENGINEER",
      "comp_currency": "EUR",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 6,
      "open_postings": 115,
      "disclosing_postings": 44,
      "salary_disclosure_pct": 38.3,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 6 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "ML_ENGINEER",
      "comp_currency": "GBP",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 3,
      "open_postings": 115,
      "disclosing_postings": 44,
      "salary_disclosure_pct": 38.3,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 3 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "ML_ENGINEER",
      "comp_currency": "SEK",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 2,
      "open_postings": 115,
      "disclosing_postings": 44,
      "salary_disclosure_pct": 38.3,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 2 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "ML_ENGINEER",
      "comp_currency": "USD",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 30,
      "open_postings": 115,
      "disclosing_postings": 44,
      "salary_disclosure_pct": 38.3,
      "p25": 205500,
      "median": 242125,
      "p75": 276000,
      "lowest_stated_min": 94300,
      "highest_stated_max": 409500,
      "is_suppressed": false,
      "suppression_reason": null,
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "UNMATCHED",
      "comp_currency": "AUD",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 4,
      "open_postings": 5442,
      "disclosing_postings": 2014,
      "salary_disclosure_pct": 37,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 4 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "UNMATCHED",
      "comp_currency": "CAD",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 181,
      "open_postings": 5442,
      "disclosing_postings": 2014,
      "salary_disclosure_pct": 37,
      "p25": 155000,
      "median": 177300,
      "p75": 201500,
      "lowest_stated_min": 49200,
      "highest_stated_max": 475900,
      "is_suppressed": false,
      "suppression_reason": null,
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "UNMATCHED",
      "comp_currency": "CAD",
      "comp_period": "HOURLY",
      "disclosed_posting_count": 1,
      "open_postings": 5442,
      "disclosing_postings": 2014,
      "salary_disclosure_pct": 37,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 1 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "UNMATCHED",
      "comp_currency": "CHF",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 2,
      "open_postings": 5442,
      "disclosing_postings": 2014,
      "salary_disclosure_pct": 37,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 2 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "UNMATCHED",
      "comp_currency": "EUR",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 172,
      "open_postings": 5442,
      "disclosing_postings": 2014,
      "salary_disclosure_pct": 37,
      "p25": 86500,
      "median": 104000,
      "p75": 122469,
      "lowest_stated_min": 38000,
      "highest_stated_max": 300000,
      "is_suppressed": false,
      "suppression_reason": null,
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "UNMATCHED",
      "comp_currency": "EUR",
      "comp_period": "MONTHLY",
      "disclosed_posting_count": 1,
      "open_postings": 5442,
      "disclosing_postings": 2014,
      "salary_disclosure_pct": 37,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 1 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "UNMATCHED",
      "comp_currency": "GBP",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 26,
      "open_postings": 5442,
      "disclosing_postings": 2014,
      "salary_disclosure_pct": 37,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 26 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "UNMATCHED",
      "comp_currency": "ILS",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 2,
      "open_postings": 5442,
      "disclosing_postings": 2014,
      "salary_disclosure_pct": 37,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 2 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "UNMATCHED",
      "comp_currency": "PLN",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 25,
      "open_postings": 5442,
      "disclosing_postings": 2014,
      "salary_disclosure_pct": 37,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 25 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "UNMATCHED",
      "comp_currency": "PLN",
      "comp_period": "MONTHLY",
      "disclosed_posting_count": 25,
      "open_postings": 5442,
      "disclosing_postings": 2014,
      "salary_disclosure_pct": 37,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 25 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "UNMATCHED",
      "comp_currency": "SEK",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 19,
      "open_postings": 5442,
      "disclosing_postings": 2014,
      "salary_disclosure_pct": 37,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 19 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "UNMATCHED",
      "comp_currency": "USD",
      "comp_period": "ANNUAL",
      "disclosed_posting_count": 1550,
      "open_postings": 5442,
      "disclosing_postings": 2014,
      "salary_disclosure_pct": 37,
      "p25": 161000,
      "median": 202528,
      "p75": 231281,
      "lowest_stated_min": 45000,
      "highest_stated_max": 605000,
      "is_suppressed": false,
      "suppression_reason": null,
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "UNMATCHED",
      "comp_currency": "USD",
      "comp_period": "DAILY",
      "disclosed_posting_count": 1,
      "open_postings": 5442,
      "disclosing_postings": 2014,
      "salary_disclosure_pct": 37,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 1 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    },
    {
      "role_family": "UNMATCHED",
      "comp_currency": "USD",
      "comp_period": "HOURLY",
      "disclosed_posting_count": 5,
      "open_postings": 5442,
      "disclosing_postings": 2014,
      "salary_disclosure_pct": 37,
      "p25": null,
      "median": null,
      "p75": null,
      "lowest_stated_min": null,
      "highest_stated_max": null,
      "is_suppressed": true,
      "suppression_reason": "Only 5 postings disclosed salary in this currency and period; 30 are needed to publish a percentile.",
      "required_caveat": "Observed from postings that disclosed pay. Not adjusted, converted, or annualized. Disclosure is not random, so this describes disclosing employers rather than the market.",
      "computed_at": "2026-08-07T17:42:21.616Z"
    }
  ]
}
