ML/AIWork

Methodology

The market figures on ML/AI Work — median salary, remote share, top employers — are computed from our own corpus of AI job postings. Here is exactly how.

What counts as an AI job

A job board that searches for “AI” collects a lot of non-AI noise. We classify every posting into three tiers and only publish the first two:

  • Core — a clear AI signal in the job title (e.g. “Machine Learning Engineer”, “LLM Engineer”).
  • Probable — no AI signal in the title, but several strong AI terms in the description.
  • Excluded — postings with no real AI relevance. These are hidden from the site.

All counts and statistics on the site reflect Core and Probable roles only.

Salary figures

Postings advertise pay in different units — per hour, day, week, month or year. We annualize every figure to a yearly equivalent using standard full-time multipliers, so an hourly rate and a yearly salary can be compared on the same scale.

The median salary on a page is the 50th percentile of annualized pay across the roles in that view. To avoid mixing currencies, we compute it within the single most common currency of that result set (for example, EUR for a German page, USD for a US page) rather than blending dollars and euros. Only postings that actually list a salary are included; salary is disclosed on roughly six in ten postings, and that share varies by role and country.

Specializations and pillars

Each role is tagged against a taxonomy of around 300 AI job titles grouped into 26 specializations, which in turn roll up into six career pillars. A posting can belong to more than one specialization; when we count roles for a pillar, a job that matches several of its specializations is counted once.

Specialization sizes reflect what is currently in our corpus, not a census of the whole market — a small specialization means we hold fewer such postings today, not that the role is rare.

Deduplication and freshness

The same role is often posted to several places. We collapse duplicates using a content fingerprint so each job appears once.

Postings are re-checked on each refresh; roles that are no longer live are retired from the listings. Every figure on the site carries an as-of date and a dataset version so you can see exactly how current it is and pin a citation to a specific release.

Dataset version & changelog

The dataset is released under a version tag, currently v2026.06. Each figure on the site is stamped with the version it was drawn from, so a citation stays meaningful even as the corpus grows. We bump the version whenever the underlying data or pipeline changes materially.

  • v2026.06 — initial public dataset, US + 12 European countries.

Limitations

We would rather be candid than oversell. The figures here come with real caveats:

  • All figures are derived from public job postings — they describe advertised roles, not hires, headcount, or the whole labour market.
  • Coverage is currently US-skewed and expanding across 12 European countries; smaller markets hold fewer postings, so their figures are less stable.
  • Salary is disclosed on roughly 61% of postings, and that share varies by role and country — median pay reflects only the postings that state a number.
  • AI-relevance is assigned by a classifier with core, probable and excluded tiers. The probable tier (no AI signal in the title, inferred from the description) is noisier than core and will include the occasional false positive.

Applying

ML/AI Work is an index, not an applicant-tracking system. Every “Apply” link sends you to the original posting on the employer’s own site, where you apply directly. See About for more on how the project works.

Cite this

ML/AI Work, "ML/AI Work methodology", dataset v2026.06, n=34150, as of 2026-06-11. https://mlai.work/methodology