Today's mix

Posted pay

Skills asked for

Levels, specialties and AI focus

Level in the title

Research by area

Share of each lab's research postings in each area, read from the title and then the department name. A posting gets one area, the first rule that matches (rules below), so a role on safety evaluations counts as evaluations. Unspecified is research with no area word anywhere, such as a plain "Research Scientist".

Engineering and infrastructure by area

The same for postings in engineering and in infrastructure, IT and security. The area is what the role works on, not what kind of engineer it wants: a data scientist on the safeguards team counts under security, safety and integrity.

AI focus in the posting text

AI focus over time

Titles that say Senior or above, before the daily snapshots

Share of each lab's posting titles that state Senior, Staff, Principal, a manager title, Director or Head of, or VP and above, in each complete archived listing with at least ten postings (hollow circles), then in the daily snapshots (filled dots). Before 2023 most months list only a few dozen roles, so one title moves the line by several points. A rising line can mean more senior hiring or a lab starting to write levels into titles; the page cannot tell which.

Where the jobs are

On site, hybrid or remote

New roles

Roles that closed

Over time

Share of each lab's postings in this function

Before the daily snapshots

Share of postings in one function

What the archive holds

How postings are sorted

Each posting gets one function. The title rules below run top to bottom and the first regular expression that matches the title wins; a title no rule matches falls back to the board's own department name; anything left is Other. The rules are deliberately plain so any placement can be checked by hand, and they are tested against every title on the boards on October 8, 2026. They make mistakes at the edges: a "Software Engineer, Safeguards" is engineering, a "Safeguards Enforcement Analyst" is safety. Skills come from a fixed keyword list matched against the posting text after removing sentences that repeat across a lab's postings (company blurbs, benefits, equal-opportunity text), so a word in the "About us" paragraph does not count as a skill every role asks for. Levels and research or engineering areas come from the title in the same first-match way, and the AI-focus flags (agents, coding agents, evaluations, reinforcement learning, safety, inference, customer deployment) from the posting text like the skills. No language model reads the postings.

Title rules, in order
Department fallback
Skill dictionary
Level rules, in order

Run against the title, first match wins. Member of Technical Staff is its own bucket because it is one title for researchers and engineers of every level (xAI uses it today; OpenAI's 2016 board did too); it is never counted as staff.

Research area rules, in order

For postings whose function is research. Run against the title, then the department name; first match wins.

Engineering area rules, in order

For postings in engineering or in infrastructure, IT and security. Run against the title, then the department name; first match wins. OpenAI's Applied AI department is its product organization, so an untitled role there counts as product engineering.

AI-focus flags

Matched against the posting text with the lab's repeated sentences removed, like the skills. A posting can carry several flags. Each pattern was checked against about twenty matching postings from October 9 and 10, 2026; the note under each says what was pruned.

Sources and method

Data comes from each lab's public job board API, the same JSON the lab's careers page loads, read once a day by scripts/snapshot.py in this site's repository. Postings are counted as listed: a posting open in three cities is one posting. Pay is the range the posting itself states. OpenAI's comes from the structured compensation field on its Ashby board; the others' is read from the pay-transparency sentence in the posting text (for example "Annual Salary: $222,800 to $290,000 USD") and left blank whenever the text does not match that pattern cleanly. Anthropic's note says its ranges for sales roles are on-target earnings (base plus commission target), so those are shown apart from base salaries. Equity is not included anywhere.

Labs left out: Google DeepMind lists its roles on Google's careers site, which has no public job-board API, and Meta's AI hiring sits inside Meta's general careers site with no way to separate its superintelligence lab cleanly. Both are left out rather than scraped.

  1. Anthropic. Job board, via the Greenhouse Job Board API. boards-api.greenhouse.io/v1/boards/anthropic/jobs. Read daily from October 8, 2026.
  2. OpenAI. Job board, via the Ashby public posting API, with compensation. api.ashbyhq.com/posting-api/job-board/openai. Read daily from October 8, 2026.
  3. xAI. Job board, via the Greenhouse Job Board API. boards-api.greenhouse.io/v1/boards/xai/jobs. Read daily from October 8, 2026.
  4. Mistral AI. Job board, via the Ashby public posting API. api.ashbyhq.com/posting-api/job-board/mistral.ai. Read daily from October 8, 2026.
  5. Thinking Machines Lab. Job board, via the Ashby public posting API. api.ashbyhq.com/posting-api/job-board/thinkingmachines. Read daily from October 8, 2026.
  6. Greenhouse Software. Job Board API documentation. 2026. docs.greenhouse.io/job-board.html.
  7. Ashby. Public Job Posting API documentation. 2026. developers.ashbyhq.com/docs/public-job-posting-api.
  8. Internet Archive. Wayback Machine captures of the labs' job boards, 2016 to 2026, located with the Wayback CDX Server API. Each capture used is linked below and in the hover text of its point.
Every archived capture used

Code and the daily data files (data/jobs.json, data/daily.json) live in apps/web/lab-hiring/ of the site's repository. A tidy dataset of every posting seen, one row per posting with its function, level, area, flags and posted pay (no description text; each row links to the original posting), is published daily at dataset/postings.jsonl.gz, described in its datasheet.