{
 "generatedAt": "2026-10-11T02:05:40.163153+00:00",
 "project": "Ghost Jobs (hannah/ghost-jobs) + Pay Range Radar (hannah/pay-range-radar)",
 "snapshot": [
  "2026-10-11T01:42:06Z",
  "2026-10-11T01:45:23Z"
 ],
 "source_note": "All numbers computed from one live collection; no invented figures. Both repos use the same board list and ATS client.",
 "needs_more_days": [
  "reposts_and_silent_edits",
  "ghost_score_distribution"
 ],
 "facts": [
  {
   "id": "collection_scope",
   "title": "Boards, companies and postings collected",
   "value": {
    "boards_configured": 324,
    "boards_ok": 324,
    "companies": 324,
    "open_postings": 32263,
    "postings_by_ats": {
     "lever": 2863,
     "ashby": 6210,
     "greenhouse": 23190
    },
    "board_failures": 0
   },
   "method": "Collected live from public Greenhouse, Lever and Ashby job-board APIs for the boards in config/boards.json; one snapshot, 2026-10-11T01:42:06Z to 2026-10-11T01:45:23Z UTC. Boards were verified by probing 661 candidate slugs on all three ATSs (scripts/discover.py), keeping those with >=1 open posting, de-duplicating same-company boards across ATSs and excluding 3 test/mirror boards.",
   "repo": "hannah/ghost-jobs",
   "needs_more_days": false,
   "caveat": "Curated list of mostly US tech employers; not a sample of the labor market. Company counts are distinct display names."
  },
  {
   "id": "posting_age_distribution",
   "title": "Age of open postings (days since first published)",
   "value": {
    "dated_postings": 32261,
    "median_days": 51,
    "share_over_60_pct": 43.2,
    "share_over_90_pct": 31.1,
    "share_over_180_pct": 14.7,
    "share_over_365_pct": 6.1,
    "buckets": [
     {
      "label": "0–7 days",
      "count": 2918
     },
     {
      "label": "8–30",
      "count": 8466
     },
     {
      "label": "31–60",
      "count": 6928
     },
     {
      "label": "61–90",
      "count": 3907
     },
     {
      "label": "91–180",
      "count": 5291
     },
     {
      "label": "181–365",
      "count": 2783
     },
     {
      "label": "Over a year",
      "count": 1968
     }
    ]
   },
   "method": "Age = collection time minus Greenhouse first_published / Ashby publishedAt / Lever createdAt; 2 postings without a date excluded.",
   "repo": "hannah/ghost-jobs",
   "needs_more_days": false,
   "caveat": "Employers can republish and reset dates, so ages are lower bounds."
  },
  {
   "id": "posting_age_by_ats",
   "title": "Posting age differs by ATS",
   "value": {
    "ashby": {
     "postings": 6210,
     "median_days": 50.0,
     "share_over_180": 12.9
    },
    "greenhouse": {
     "postings": 23188,
     "median_days": 46.0,
     "share_over_180": 11.3
    },
    "lever": {
     "postings": 2863,
     "median_days": 152,
     "share_over_180": 46.2
    }
   },
   "method": "Same age definition, split by source ATS.",
   "repo": "hannah/ghost-jobs",
   "needs_more_days": false,
   "caveat": "Lever's createdAt and a few large Lever boards (Gopuff 796 postings) push Lever older; compare within an ATS."
  },
  {
   "id": "oldest_open_postings",
   "title": "Oldest postings still open",
   "value": [
    {
     "company": "Zoox",
     "title": "Software Engineer - Motion Planning",
     "age_days": 3897,
     "published": "2016-02-08T19:02:13Z",
     "url": "https://jobs.lever.co/zoox/7dd45151-9d8a-45a4-bb33-86fb88c1995d"
    },
    {
     "company": "Archer Veterinary Clinic",
     "title": "DVM Student Externship/Preceptorship Program — Archer Veterinary Clinic (Sees Exotics)",
     "age_days": 2794,
     "published": "2019-02-15T20:53:46Z",
     "url": "https://boards.greenhouse.io/archer/jobs/4213164002?gh_jid=4213164002"
    },
    {
     "company": "Netlify",
     "title": "Your Chance to Join Our Talent Community!",
     "age_days": 2776,
     "published": "2019-03-05T22:01:04Z",
     "url": "https://job-boards.greenhouse.io/netlify/jobs/4224129002"
    },
    {
     "company": "Toptal",
     "title": "Enterprise Sales Development Representative - US-Based",
     "age_days": 2738,
     "published": "2019-04-12T16:21:40Z",
     "url": "https://jobs.lever.co/toptal/bdc963ca-1705-4e55-8872-0c15d23831d8"
    },
    {
     "company": "Datadog",
     "title": "Commercial Account Executive - Boston",
     "age_days": 2733,
     "published": "2019-04-17T18:46:26Z",
     "url": "https://careers.datadoghq.com/detail/1497543/?gh_jid=1497543"
    },
    {
     "company": "Datadog",
     "title": "Commercial Account Executive",
     "age_days": 2704,
     "published": "2019-05-16T19:41:10Z",
     "url": "https://careers.datadoghq.com/detail/1694375/?gh_jid=1694375"
    },
    {
     "company": "Databricks",
     "title": "Senior Software Engineer - Distributed Data Systems",
     "age_days": 2522,
     "published": "2019-11-14T22:28:57Z",
     "url": "https://databricks.com/company/careers/open-positions/job?gh_jid=4513122002"
    },
    {
     "company": "Nextdoor",
     "title": "Senior Software Engineer - Backend",
     "age_days": 2438,
     "published": "2020-02-07T00:29:41Z",
     "url": "https://about.nextdoor.com/careers-list/?gh_jid=2080930"
    },
    {
     "company": "Salesloft",
     "title": "Don’t see the perfect fit?",
     "age_days": 2369,
     "published": "2020-04-15T18:29:15Z",
     "url": "https://www.salesloft.com/company/careers?gh_jid=2165711"
    },
    {
     "company": "Ro",
     "title": "Don't see the perfect fit yet?",
     "age_days": 2347,
     "published": "2020-05-07T19:52:47Z",
     "url": "https://jobs.lever.co/ro/9445bb8c-0b32-49b6-a9d6-32e283c41927"
    }
   ],
   "method": "Top postings by age in the snapshot; each links to the live posting.",
   "repo": "hannah/ghost-jobs",
   "needs_more_days": false,
   "caveat": "Long-open is not proof of a ghost job: some are evergreen/pipeline reqs or continuously hired roles."
  },
  {
   "id": "company_share_open_180_days",
   "title": "Companies (>=50 dated open postings) with the highest and lowest share open 180+ days",
   "value": {
    "companies_ranked": 129,
    "highest": [
     {
      "company": "Gopuff",
      "dated_postings": 796,
      "share_over_180_pct": 90.5,
      "median_age_days": 1192.0
     },
     {
      "company": "Lyra Health",
      "dated_postings": 561,
      "share_over_180_pct": 54.0,
      "median_age_days": 190
     },
     {
      "company": "Ro",
      "dated_postings": 55,
      "share_over_180_pct": 45.5,
      "median_age_days": 152
     },
     {
      "company": "Fin",
      "dated_postings": 106,
      "share_over_180_pct": 41.5,
      "median_age_days": 161.5
     },
     {
      "company": "Scale AI",
      "dated_postings": 182,
      "share_over_180_pct": 37.4,
      "median_age_days": 130.5
     },
     {
      "company": "Databricks",
      "dated_postings": 892,
      "share_over_180_pct": 33.5,
      "median_age_days": 101.0
     },
     {
      "company": "Wrike",
      "dated_postings": 58,
      "share_over_180_pct": 32.8,
      "median_age_days": 102.0
     },
     {
      "company": "Waabi",
      "dated_postings": 97,
      "share_over_180_pct": 32.0,
      "median_age_days": 54
     },
     {
      "company": "Verkada",
      "dated_postings": 306,
      "share_over_180_pct": 31.0,
      "median_age_days": 91.5
     },
     {
      "company": "Figma",
      "dated_postings": 150,
      "share_over_180_pct": 30.7,
      "median_age_days": 81.0
     }
    ],
    "lowest": [
     {
      "company": "Lambda",
      "dated_postings": 91,
      "share_over_180_pct": 0.0,
      "median_age_days": 39
     },
     {
      "company": "New Relic",
      "dated_postings": 53,
      "share_over_180_pct": 0.0,
      "median_age_days": 24
     },
     {
      "company": "Nubank",
      "dated_postings": 98,
      "share_over_180_pct": 0.0,
      "median_age_days": 40.0
     },
     {
      "company": "Tailscale",
      "dated_postings": 63,
      "share_over_180_pct": 0.0,
      "median_age_days": 51
     },
     {
      "company": "Thumbtack",
      "dated_postings": 57,
      "share_over_180_pct": 0.0,
      "median_age_days": 22
     },
     {
      "company": "Twitch",
      "dated_postings": 52,
      "share_over_180_pct": 0.0,
      "median_age_days": 31.0
     },
     {
      "company": "WRITER",
      "dated_postings": 51,
      "share_over_180_pct": 0.0,
      "median_age_days": 18
     },
     {
      "company": "Braze",
      "dated_postings": 334,
      "share_over_180_pct": 0.3,
      "median_age_days": 39.0
     }
    ]
   },
   "method": "Per company: share of dated open postings with age > 180 days; only companies with at least 50 dated postings.",
   "repo": "hannah/ghost-jobs",
   "needs_more_days": false,
   "caveat": "A high share can reflect continuous hiring for recurring roles (e.g. retail/clinical) rather than ghost postings."
  },
  {
   "id": "evergreen_language",
   "title": "Postings that describe themselves as pipeline / talent-community postings",
   "value": {
    "postings": 106,
    "share_pct": 0.3,
    "title_matches": 84,
    "phrase_families": {
     "title": 84,
     "future openings post": 18,
     "general application": 12,
     "not a current opening": 10,
     "keep on file": 9,
     "evergreen requisition": 7,
     "always accepting": 4
    }
   },
   "method": "Regex over titles (e.g. 'Join our Talent Community', 'General Application', 'Future Opportunities') and posting-specific description phrases (e.g. 'this is not an application for a currently open role'). Generic footers like 'join our talent network' are excluded because some employers put them on every posting.",
   "repo": "hannah/ghost-jobs",
   "needs_more_days": false,
   "caveat": "A first, looser pattern set flagged 4.5% of postings but sampling showed mostly boilerplate; the published number uses the tightened set. Phrase lists are in scripts/signals.py."
  },
  {
   "id": "pay_law_missing_range",
   "title": "Postings in pay-transparency jurisdictions with no USD pay figure in the public ATS feed",
   "value": {
    "covered_postings": 17338,
    "missing_pay": 1001,
    "share_missing_pct": 5.8,
    "excluded_pay_shown_off_feed": 371,
    "offsite_pay_boards": [
     "greenhouse/riotgames",
     "greenhouse/stripe"
    ]
   },
   "method": "Covered = displayed location in CO, CA, WA, NY, HI, DC, MD, IL, MN, NJ, VT or MA (law in force on collection date) or remote open across the US. Pay found = structured ATS compensation field or a USD amount parsed from the description.",
   "repo": "hannah/ghost-jobs",
   "needs_more_days": false,
   "caveat": "Missing from the public ATS feed, not necessarily from the employer's site: Stripe and Riot Games were verified (2026-10-11) to show ranges on their own careers pages but not in the Greenhouse feed, and are excluded as unknown. Other employers may do the same. Employer-size thresholds not checked; parser misses count as missing. Not legal advice."
  },
  {
   "id": "ghost_score_distribution",
   "title": "Ghost-likelihood score distribution (single snapshot)",
   "value": {
    "median": 5.1,
    "p90": 35.0,
    "share_at_least_50": 0.9
   },
   "method": "Weighted sum of signals: age 35, evergreen 25, missing required pay 15, broad role open 90+ days 10, repost/clone 10, silent edits 5.",
   "repo": "hannah/ghost-jobs",
   "needs_more_days": true,
   "caveat": "Repost and silent-edit signals contribute almost nothing on day one, so scores will rise as history accumulates."
  },
  {
   "id": "concurrent_clones",
   "title": "Exact duplicate postings open at the same time",
   "value": {
    "postings": 370,
    "share": 1.1
   },
   "method": "Same ATS board, normalized title, location and description hash under different posting IDs within the snapshot.",
   "repo": "hannah/ghost-jobs",
   "needs_more_days": false,
   "caveat": "Can reflect legitimate duplicate reqs for multiple hires."
  },
  {
   "id": "reposts_and_silent_edits",
   "title": "Reposts after closing and silent description edits",
   "value": {
    "status": "accumulating",
    "snapshot_days": 1,
    "first_snapshot": "2026-10-11",
    "reposts_detected": null,
    "silent_edits_detected": null
   },
   "method": "Daily GitHub Actions cron appends a TSV snapshot (posting ID, content hash, description hash, published date) to the data branch; reposts = same content key under a new ID after the old ID disappeared; edits = description hash change under the same ID.",
   "repo": "hannah/ghost-jobs",
   "needs_more_days": true,
   "caveat": "No numbers yet: needs at least 2 daily snapshots, and weeks of history to be meaningful. Do not report a repost rate yet."
  },
  {
   "id": "ca_eligible_postings",
   "title": "California-eligible postings",
   "value": {
    "postings": 13029,
    "companies": 278,
    "by_scope": {
     "remote": 2855,
     "located": 10174
    }
   },
   "method": "Same collection; kept postings whose displayed location names California / a California city (Canadian 'CA' excluded) or that are remote and open across the US.",
   "repo": "hannah/pay-range-radar",
   "needs_more_days": false,
   "caveat": "Remote US-wide postings are included because the Labor Commissioner reads the law to cover roles that may be filled in California remotely."
  },
  {
   "id": "ca_missing_range",
   "title": "Share of California-eligible postings with no USD pay range or figure in the public ATS feed",
   "value": {
    "missing": 684,
    "with_pay": 12086,
    "pay_shown_off_feed_unknown": 259,
    "offsite_pay_boards": [
     "greenhouse/riotgames",
     "greenhouse/stripe"
    ],
    "share_missing_pct": 5.4,
    "share_missing_ca_located_pct": 3.8,
    "share_missing_remote_us_pct": 10.8,
    "template_placeholders": 6
   },
   "method": "Pay from structured ATS fields first (Ashby compensation, Greenhouse pay_input_ranges, Lever salaryRange), else regex over the description (USD only; funding/quota/deal/benefit amounts skipped).",
   "repo": "hannah/pay-range-radar",
   "needs_more_days": false,
   "caveat": "Missing from the public feed only. Postings on boards verified to show pay off-feed (Stripe, Riot Games) are excluded from numerator and denominator. Companies at ~100% missing (SoFi, Linear, Anchorage Digital, Toptal) were not verified on their own sites; SoFi's site returned 403. Do not name them as non-compliant without checking. Parser misses and pay shown only via links/images count as missing; placeholders like '$0.01 — $0.01' count as missing."
  },
  {
   "id": "ca_pay_sources",
   "title": "Where the pay figures came from",
   "value": {
    "by_source": {
     "structured": 8077,
     "text": 4009
    },
    "by_period": {
     "year": 10920,
     "hour": 1142,
     "month": 18,
     "week": 6
    },
    "ranges": 11294,
    "single_figures": 789,
    "ote_ranges": 249
   },
   "method": "Counts of the range selected per posting.",
   "repo": "hannah/pay-range-radar",
   "needs_more_days": false
  },
  {
   "id": "ca_range_width",
   "title": "How wide California posted ranges are",
   "value": {
    "median_ratio_top_over_bottom": 1.335,
    "median_spread_pct": 33.5,
    "median_width_usd_annual": 55000,
    "share_ratio_2x_or_more_pct": 2.8,
    "ratio_histogram": [
     {
      "lo": 1.0,
      "hi": 1.1,
      "count": 334
     },
     {
      "lo": 1.1,
      "hi": 1.2,
      "count": 1710
     },
     {
      "lo": 1.2,
      "hi": 1.3,
      "count": 2713
     },
     {
      "lo": 1.3,
      "hi": 1.4,
      "count": 2434
     },
     {
      "lo": 1.4,
      "hi": 1.5,
      "count": 1280
     },
     {
      "lo": 1.5,
      "hi": 1.6,
      "count": 1465
     },
     {
      "lo": 1.6,
      "hi": 1.8,
      "count": 795
     },
     {
      "lo": 1.8,
      "hi": 2.0,
      "count": 248
     },
     {
      "lo": 2.0,
      "hi": 2.5,
      "count": 281
     },
     {
      "lo": 2.5,
      "hi": 3.0,
      "count": 17
     },
     {
      "lo": 3.0,
      "hi": null,
      "count": 17
     }
    ]
   },
   "method": "Annualized USD (hourly x 2080, monthly x 12); one range per posting, preferring a California/Bay Area tier, else the highest tier; excludes single figures and 3 probable typos.",
   "repo": "hannah/pay-range-radar",
   "needs_more_days": false
  },
  {
   "id": "widest_ranges_absolute",
   "title": "Widest posted ranges by dollar width (identical company ranges collapsed)",
   "value": [
    {
     "company": "Anthropic",
     "title": "Performance Engineer",
     "amin": 280000,
     "amax": 850000,
     "width": 570000,
     "ratio": 3.036,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 4,
     "url": "https://job-boards.greenhouse.io/anthropic/jobs/4020350008"
    },
    {
     "company": "Anthropic",
     "title": "Performance Engineer, Inference Engine",
     "amin": 350000,
     "amax": 850000,
     "width": 500000,
     "ratio": 2.429,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 9,
     "url": "https://job-boards.greenhouse.io/anthropic/jobs/5418323008"
    },
    {
     "company": "OpenAI",
     "title": "RE / RS - Foundations, Search",
     "amin": 380000,
     "amax": 850000,
     "width": 470000,
     "ratio": 2.237,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 1,
     "url": "https://jobs.ashbyhq.com/openai/020b2aae-8be0-408c-ab49-20eefa8541af"
    },
    {
     "company": "Anthropic",
     "title": "Engineering Manager, Research Data Platform",
     "amin": 405000,
     "amax": 850000,
     "width": 445000,
     "ratio": 2.099,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 2,
     "url": "https://job-boards.greenhouse.io/anthropic/jobs/5297059008"
    },
    {
     "company": "Anthropic",
     "title": "Engineering Manager, GPU (ML Accelerator)",
     "amin": 500000,
     "amax": 850000,
     "width": 350000,
     "ratio": 1.7,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 15,
     "url": "https://job-boards.greenhouse.io/anthropic/jobs/4741104008"
    },
    {
     "company": "Neptune",
     "title": "Family Law (Prenup) Attorney",
     "amin": 312000,
     "amax": 624000,
     "width": 312000,
     "ratio": 2.0,
     "ote": false,
     "source": "text",
     "postings_with_same_range": 1,
     "url": "https://jobs.ashbyhq.com/neptune/8830ca26-faf4-4936-8b49-4d5a7ddd56bd"
    },
    {
     "company": "Anthropic",
     "title": "Staff Software Engineer, Claude Code",
     "amin": 320000,
     "amax": 625000,
     "width": 305000,
     "ratio": 1.953,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 1,
     "url": "https://job-boards.greenhouse.io/anthropic/jobs/5383610008"
    },
    {
     "company": "OpenAI",
     "title": "Software Engineer, Build Systems / CI",
     "amin": 185000,
     "amax": 490000,
     "width": 305000,
     "ratio": 2.649,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 4,
     "url": "https://jobs.ashbyhq.com/openai/202eb061-23d7-4a58-80c8-bc3b41e56d39"
    },
    {
     "company": "OpenAI",
     "title": "Researcher, Training",
     "amin": 300000,
     "amax": 600000,
     "width": 300000,
     "ratio": 2.0,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 1,
     "url": "https://jobs.ashbyhq.com/openai/97d3670c-e75a-4bb2-a235-171765f5f10e"
    },
    {
     "company": "Y Combinator",
     "title": "Product Engineer, New Products",
     "amin": 185000,
     "amax": 485000,
     "width": 300000,
     "ratio": 2.622,
     "ote": false,
     "source": "text",
     "postings_with_same_range": 1,
     "url": "https://jobs.ashbyhq.com/ycombinator/1b08c336-45bb-4c31-b626-02f4aec79ca2"
    }
   ],
   "method": "Sorted by annualized max - min; one row per company+range.",
   "repo": "hannah/pay-range-radar",
   "needs_more_days": false,
   "caveat": "Wide ranges often span several levels in one posting."
  },
  {
   "id": "widest_ranges_ratio",
   "title": "Widest posted ranges by ratio (identical company ranges collapsed)",
   "value": [
    {
     "company": "Applied Intuition",
     "title": "Research Scientist - World-Action Foundation Model, Robotics",
     "amin": 126000,
     "amax": 423000,
     "width": 297000,
     "ratio": 3.357,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 9,
     "url": "https://jobs.ashbyhq.com/applied/a6c99f37-545a-46f2-8222-02ad43c1e2c3"
    },
    {
     "company": "OpenAI",
     "title": "Data Center Compute, OpenHouse Savannah 2026",
     "amin": 125000,
     "amax": 400000,
     "width": 275000,
     "ratio": 3.2,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 1,
     "url": "https://jobs.ashbyhq.com/openai/6ba0ce24-ad32-4c3b-b49c-b373be9a8480"
    },
    {
     "company": "Rocket Lab Corporation",
     "title": "Supplier Quality Engineer (I, II, Senior I, Senior II) - Harnessing",
     "amin": 75000,
     "amax": 228500,
     "width": 153500,
     "ratio": 3.047,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 3,
     "url": "https://job-boards.greenhouse.io/rocketlab/jobs/7990778003"
    },
    {
     "company": "Anthropic",
     "title": "Performance Engineer",
     "amin": 280000,
     "amax": 850000,
     "width": 570000,
     "ratio": 3.036,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 4,
     "url": "https://job-boards.greenhouse.io/anthropic/jobs/4020350008"
    },
    {
     "company": "Verkada",
     "title": "Hardware Engineer",
     "amin": 95000,
     "amax": 280000,
     "width": 185000,
     "ratio": 2.947,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 1,
     "url": "https://job-boards.greenhouse.io/verkada/jobs/4288855007"
    },
    {
     "company": "Shield AI",
     "title": "Software Development Engineer - New Graduate",
     "amin": 77200,
     "amax": 211200,
     "width": 134000,
     "ratio": 2.736,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 1,
     "url": "https://jobs.lever.co/shieldai/79c3b65f-ce0c-4868-bedf-4ddcc4cfe583"
    },
    {
     "company": "Metabase",
     "title": "Open Source Community Advocate",
     "amin": 67900,
     "amax": 183500,
     "width": 115600,
     "ratio": 2.703,
     "ote": false,
     "source": "text",
     "postings_with_same_range": 1,
     "url": "https://jobs.lever.co/metabase/0a585401-4d13-4313-9614-1888153bfddc"
    },
    {
     "company": "Shield AI",
     "title": "Applications Engineer, Autonomy (open level)",
     "amin": 120000,
     "amax": 318000,
     "width": 198000,
     "ratio": 2.65,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 1,
     "url": "https://jobs.lever.co/shieldai/2394368a-67ff-441c-83c3-e998446327e7"
    },
    {
     "company": "OpenAI",
     "title": "Software Engineer, Build Systems / CI",
     "amin": 185000,
     "amax": 490000,
     "width": 305000,
     "ratio": 2.649,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 4,
     "url": "https://jobs.ashbyhq.com/openai/202eb061-23d7-4a58-80c8-bc3b41e56d39"
    },
    {
     "company": "Shield AI",
     "title": "Summer 2027 - Software Engineer Intern",
     "amin": 76960,
     "amax": 201760,
     "width": 124800,
     "ratio": 2.622,
     "ote": false,
     "source": "structured",
     "postings_with_same_range": 1,
     "url": "https://jobs.lever.co/shieldai/8c850c75-081d-4d09-bebf-096379a93010"
    }
   ],
   "method": "Sorted by max / min; one row per company+range.",
   "repo": "hannah/pay-range-radar",
   "needs_more_days": false
  },
  {
   "id": "probable_range_typos",
   "title": "Ranges whose bottom looks one digit short",
   "value": [
    {
     "company": "Anthropic",
     "title": "Staff + Software Security Engineer, Secure Frameworks",
     "url": "https://job-boards.greenhouse.io/anthropic/jobs/5440475008",
     "amin": 32000,
     "amax": 485000
    },
    {
     "company": "Crunchyroll, LLC",
     "title": "Software Engineer III, Playback Services",
     "url": "https://boards.greenhouse.io/crunchyroll/jobs/8092597?gh_jid=8092597",
     "amin": 16900,
     "amax": 205000
    },
    {
     "company": "Scopely",
     "title": "Senior Data Scientist, Marketing",
     "url": "https://job-boards.greenhouse.io/scopely/jobs/5234167008?gh_jid=5234167008",
     "amin": 17100,
     "amax": 253000
    }
   ],
   "method": "Flagged when max/min >= 5 and max is 1-2.5x of 10 x min (e.g. $17,100–$253,000). Excluded from medians and hall of fame.",
   "repo": "hannah/pay-range-radar",
   "needs_more_days": false,
   "caveat": "Read as likely data-entry errors at the source, not verified with employers."
  },
  {
   "id": "median_by_role_family",
   "title": "Median posted range by role family (base pay, OTE excluded)",
   "value": [
    {
     "family": "Software Engineering",
     "postings": 3038,
     "missing": 4.3,
     "n": 2758,
     "median_min": 186032,
     "median_max": 256700,
     "median_mid": 221255,
     "median_width": 65000,
     "median_ratio": 1.364
    },
    {
     "family": "Machine Learning & AI",
     "postings": 1199,
     "missing": 6.0,
     "n": 1056,
     "median_min": 200000,
     "median_max": 282500,
     "median_mid": 243000,
     "median_width": 71000,
     "median_ratio": 1.375
    },
    {
     "family": "Sales & Business Development",
     "postings": 1123,
     "missing": 7.5,
     "n": 821,
     "median_min": 149000,
     "median_max": 205000,
     "median_mid": 177500,
     "median_width": 50000,
     "median_ratio": 1.32
    },
    {
     "family": "Hardware & Physical Engineering",
     "postings": 1024,
     "missing": 1.5,
     "n": 974,
     "median_min": 143000,
     "median_max": 199500,
     "median_mid": 171731,
     "median_width": 56000,
     "median_ratio": 1.406
    },
    {
     "family": "Other",
     "postings": 705,
     "missing": 9.2,
     "n": 560,
     "median_min": 160000,
     "median_max": 213302,
     "median_mid": 187579,
     "median_width": 45800,
     "median_ratio": 1.311
    },
    {
     "family": "Operations & Strategy",
     "postings": 703,
     "missing": 4.6,
     "n": 634,
     "median_min": 130900,
     "median_max": 180000,
     "median_mid": 156306,
     "median_width": 45000,
     "median_ratio": 1.333
    },
    {
     "family": "Marketing & Communications",
     "postings": 558,
     "missing": 3.9,
     "n": 475,
     "median_min": 161500,
     "median_max": 209050,
     "median_mid": 185832,
     "median_width": 46575,
     "median_ratio": 1.278
    },
    {
     "family": "Security",
     "postings": 534,
     "missing": 4.9,
     "n": 480,
     "median_min": 186000,
     "median_max": 259100,
     "median_mid": 222704,
     "median_width": 64500,
     "median_ratio": 1.334
    },
    {
     "family": "Product Management",
     "postings": 478,
     "missing": 3.3,
     "n": 428,
     "median_min": 198000,
     "median_max": 268190,
     "median_mid": 229206,
     "median_width": 65000,
     "median_ratio": 1.333
    },
    {
     "family": "Solutions & Sales Engineering",
     "postings": 403,
     "missing": 3.3,
     "n": 314,
     "median_min": 171000,
     "median_max": 228600,
     "median_mid": 199750,
     "median_width": 56000,
     "median_ratio": 1.333
    },
    {
     "family": "Design & UX Research",
     "postings": 392,
     "missing": 3.4,
     "n": 350,
     "median_min": 170000,
     "median_max": 230000,
     "median_mid": 200000,
     "median_width": 55350,
     "median_ratio": 1.349
    },
    {
     "family": "Finance & Accounting",
     "postings": 385,
     "missing": 3.7,
     "n": 350,
     "median_min": 150750,
     "median_max": 200000,
     "median_mid": 177500,
     "median_width": 41750,
     "median_ratio": 1.304
    },
    {
     "family": "Retail & Store Operations",
     "postings": 369,
     "missing": 7.3,
     "n": 60,
     "median_min": 70580,
     "median_max": 83890,
     "median_mid": 77045,
     "median_width": 19121,
     "median_ratio": 1.375
    },
    {
     "family": "Program & Project Management",
     "postings": 316,
     "missing": 2.0,
     "n": 292,
     "median_min": 166800,
     "median_max": 231000,
     "median_mid": 201500,
     "median_width": 57500,
     "median_ratio": 1.333
    },
    {
     "family": "Healthcare & Clinical",
     "postings": 316,
     "missing": 29.7,
     "n": 174,
     "median_min": 164700,
     "median_max": 196875,
     "median_mid": 180788,
     "median_width": 32175,
     "median_ratio": 1.195
    },
    {
     "family": "Skilled Trades & Technicians",
     "postings": 303,
     "missing": 1.7,
     "n": 285,
     "median_min": 65062,
     "median_max": 89440,
     "median_mid": 78780,
     "median_width": 20800,
     "median_ratio": 1.25
    },
    {
     "family": "Data Science & Analytics",
     "postings": 280,
     "missing": 1.8,
     "n": 247,
     "median_min": 185000,
     "median_max": 255500,
     "median_mid": 221000,
     "median_width": 59150,
     "median_ratio": 1.333
    },
    {
     "family": "People & Recruiting",
     "postings": 277,
     "missing": 8.0,
     "n": 240,
     "median_min": 145000,
     "median_max": 190000,
     "median_mid": 167500,
     "median_width": 40000,
     "median_ratio": 1.286
    },
    {
     "family": "Customer Success & Support",
     "postings": 217,
     "missing": 7.5,
     "n": 169,
     "median_min": 139440,
     "median_max": 181300,
     "median_mid": 160000,
     "median_width": 40000,
     "median_ratio": 1.324
    },
    {
     "family": "Legal, Policy & Compliance",
     "postings": 196,
     "missing": 5.2,
     "n": 178,
     "median_min": 191000,
     "median_max": 252500,
     "median_mid": 222000,
     "median_width": 50000,
     "median_ratio": 1.264
    },
    {
     "family": "Data Engineering",
     "postings": 163,
     "missing": 3.1,
     "n": 152,
     "median_min": 185782,
     "median_max": 250800,
     "median_mid": 219276,
     "median_width": 62500,
     "median_ratio": 1.333
    },
    {
     "family": "IT & Corporate Systems",
     "postings": 41,
     "missing": 4.9,
     "n": 39,
     "median_min": 135000,
     "median_max": 185000,
     "median_mid": 167500,
     "median_width": 43000,
     "median_ratio": 1.333
    },
    {
     "family": "Science & Lab",
     "postings": 9,
     "missing": 0.0,
     "n": 9,
     "median_min": null,
     "median_max": null,
     "median_mid": null,
     "median_width": null,
     "median_ratio": null
    }
   ],
   "method": "Titles mapped to families by ordered keyword rules (scripts/roles.py); medians only where >= 10 ranges; 'missing' is % of the family's CA-eligible postings with no pay.",
   "repo": "hannah/pay-range-radar",
   "needs_more_days": false,
   "caveat": "Keyword classification misassigns some titles; 'Other' collects unmatched ones."
  },
  {
   "id": "median_by_seniority",
   "title": "Median posted range by seniority (base pay, OTE excluded)",
   "value": [
    {
     "level": "Intern",
     "postings": 235,
     "missing": 7.8,
     "n": 49,
     "median_min": 90000,
     "median_max": 124800,
     "median_mid": 115440,
     "median_width": 20800,
     "median_ratio": 1.207
    },
    {
     "level": "Entry",
     "postings": 363,
     "missing": 3.6,
     "n": 191,
     "median_min": 90000,
     "median_max": 125325,
     "median_mid": 110500,
     "median_width": 30000,
     "median_ratio": 1.312
    },
    {
     "level": "Mid",
     "postings": 4778,
     "missing": 7.2,
     "n": 3871,
     "median_min": 146880,
     "median_max": 200000,
     "median_mid": 175000,
     "median_width": 50000,
     "median_ratio": 1.333
    },
    {
     "level": "Senior",
     "postings": 3227,
     "missing": 3.0,
     "n": 2993,
     "median_min": 165000,
     "median_max": 225750,
     "median_mid": 195500,
     "median_width": 55500,
     "median_ratio": 1.364
    },
    {
     "level": "Staff / Principal",
     "postings": 2148,
     "missing": 4.8,
     "n": 1938,
     "median_min": 205000,
     "median_max": 280000,
     "median_mid": 243000,
     "median_width": 70000,
     "median_ratio": 1.36
    },
    {
     "level": "Manager",
     "postings": 1512,
     "missing": 4.4,
     "n": 1344,
     "median_min": 170000,
     "median_max": 232275,
     "median_mid": 200500,
     "median_width": 55000,
     "median_ratio": 1.325
    },
    {
     "level": "Director",
     "postings": 667,
     "missing": 6.7,
     "n": 576,
     "median_min": 225150,
     "median_max": 295000,
     "median_mid": 260000,
     "median_width": 69640,
     "median_ratio": 1.312
    },
    {
     "level": "VP / Executive",
     "postings": 99,
     "missing": 10.1,
     "n": 83,
     "median_min": 221000,
     "median_max": 311000,
     "median_mid": 264250,
     "median_width": 65100,
     "median_ratio": 1.296
    }
   ],
   "method": "Seniority from title words (Intern, Junior/Associate, Senior, Staff/Principal, Manager excluding IC 'Product/Account/Program Manager', Director/Head of, VP/Chief); unlabeled = Mid.",
   "repo": "hannah/pay-range-radar",
   "needs_more_days": false,
   "caveat": "'Mid' is a catch-all for titles without a level word."
  }
 ],
 "corrections": [
  "2026-10-11: missing-pay shares lowered after verifying Stripe and Riot Games show ranges off-feed (ghost-jobs 7.7% -> 5.8%, California 7.2% -> 5.4%). Use the current values."
 ]
}
