{"id":1130,"date":"2026-10-17T04:06:11","date_gmt":"2026-10-17T04:06:11","guid":{"rendered":"https:\/\/getaiwork.com\/articles\/?p=1130"},"modified":"2026-10-17T04:41:59","modified_gmt":"2026-10-17T04:41:59","slug":"ai-engineering-jobs","status":"publish","type":"post","link":"https:\/\/getaiwork.com\/articles\/ai-engineering-jobs\/","title":{"rendered":"AI Engineering Jobs: The Four Titles, Counted, Pay as Posted"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>AI engineering jobs are four different jobs sharing one search: AI engineer, machine learning engineer, forward deployed engineer and AI automation engineer. On 17 October 2026 our board&#8217;s 1,702 live listings held 450 of them, and US postings at Anthropic, OpenAI, Scale AI and Databricks listed salaries from $166,000 to $500,000 a year.<\/strong><\/p>\n\n\n\n<div class=\"msq-audio\" data-article=\"ai-engineering-jobs\" data-minutes=\"14\">\n<style>.msq-audio{margin:1.25em 0 1.75em;padding:16px 18px;background:#F1F4FA;border:1px solid #DDE3EE;border-radius:12px}\n.msq-audio-lead{margin:0 0 8px;font-size:.95em}.msq-audio audio{width:100%;margin:0 0 12px;display:block}\n.msq-toc-title{margin:0 0 6px;font-weight:700}.msq-toc ol{margin:0;padding:0;list-style:none}\n.msq-toc li{display:flex;gap:10px;align-items:center;padding:6px 6px;border-bottom:1px solid #DDE3EE;border-radius:8px}\n.msq-toc li:last-child{border-bottom:0}.msq-toc li.is-active{background:#fff}\n.msq-toc-play{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:0;background:#1E3A8A;color:#fff;font:inherit;font-size:.72em;line-height:30px;padding:0;cursor:pointer}\n.msq-toc-play.is-playing{background:#B45309}\n.msq-toc-time{flex:0 0 auto;min-width:3.1em;font-variant-numeric:tabular-nums;color:#55555F;font-size:.9em}\n.msq-toc a{color:#1B1F24;text-decoration:none;line-height:1.35}.msq-toc li.is-active a{font-weight:700;color:#1E3A8A}\n.msq-audio-note{margin:10px 0 0;font-size:.82em;color:#55555F}\nh2.wp-block-heading[id]{scroll-margin-top:24px}\n.msq-hplay{display:inline-block;vertical-align:middle;width:26px;height:26px;margin:0 0 0 10px;border-radius:50%;border:0;background:#1E3A8A;cursor:pointer;padding:0;position:relative;top:-2px}\n.msq-hplay::before{content:'\u25b6\ufe0e';display:block;color:#fff;font-size:11px;line-height:26px;text-align:center}\n.msq-hplay.is-playing{background:#B45309}.msq-hplay.is-playing::before{content:'\u2016';font-size:13px;font-weight:700}\n.msq-bar{position:fixed;left:0;right:0;bottom:0;z-index:9000;display:flex;align-items:center;gap:10px;padding:8px 12px;padding-bottom:calc(8px + env(safe-area-inset-bottom));background:#FFFFFF;border-top:1px solid #DDE3EE;box-shadow:0 -4px 16px rgba(0,0,0,.08);font-size:.92em;color:#1B1F24;transition:transform .2s ease}\n.msq-bar.is-hidden{transform:translateY(130%)}\n.msq-bar-play{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;background:#1E3A8A;color:#fff;font:inherit;font-weight:700;padding:8px 14px 8px 12px;cursor:pointer;white-space:nowrap}\n.msq-bar-play.is-playing{background:#B45309}\n.msq-bar-icon::before{content:'\u25b6\ufe0e';font-size:12px}.msq-bar-play.is-playing .msq-bar-icon::before{content:'\u2016';font-size:14px;font-weight:700}\n.msq-bar-chapter{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.msq-bar-time{flex:0 0 auto;font-variant-numeric:tabular-nums;color:#55555F;font-size:.9em}\n.msq-bar-rate,.msq-bar-close{flex:0 0 auto;border:1px solid #DDE3EE;background:#fff;color:#1B1F24;font:inherit;font-size:.85em;line-height:1;border-radius:8px;padding:7px 9px;cursor:pointer}\n.msq-bar-close::before{content:'\u2715'}\n.msq-bar.msq-bar-pill{left:auto;right:14px;bottom:14px;padding:6px;padding-bottom:6px;border:1px solid #DDE3EE;border-radius:999px;box-shadow:0 6px 20px rgba(0,0,0,.15)}\n.msq-bar.msq-bar-pill .msq-bar-chapter,.msq-bar.msq-bar-pill .msq-bar-time,.msq-bar.msq-bar-pill .msq-bar-rate{display:none}\nbody.msq-has-bar{padding-bottom:76px}\n@media (max-width:600px){.msq-bar-time{display:none}.msq-bar{gap:8px;padding-left:10px;padding-right:10px}}\n.msq-s.msq-now{background:#F1F4FA;box-shadow:0 2px 0 #1E3A8A;border-radius:2px}\ntr.msq-now td,tr.msq-now th{background:#F1F4FA;box-shadow:inset 0 -2px 0 #1E3A8A}\n@media (hover:hover){.msq-s,tr[data-i]{cursor:pointer}.msq-s:hover{background:#F1F4FA}}<\/style>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"AudioObject\",\"@id\":\"https:\/\/getaiwork.com\/articles\/ai-engineering-jobs\/#audio\",\"name\":\"AI Engineering Jobs: The Four Titles, Counted, Pay as Posted, read aloud\",\"description\":\"Synthetic voice reading of the article, recorded 17 October 2026.\",\"contentUrl\":\"https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/ai-engineering-jobs-audio-202610170940.mp3\",\"encodingFormat\":\"audio\/mpeg\",\"duration\":\"PT13M43S\",\"uploadDate\":\"2026-10-17\",\"inLanguage\":\"en-US\",\"isAccessibleForFree\":true,\"mainEntityOfPage\":\"https:\/\/getaiwork.com\/articles\/ai-engineering-jobs\/\",\"hasPart\":[{\"@type\":\"Clip\",\"name\":\"AI Engineering Jobs: The Four Titles, Counted, Pay as Posted\",\"startOffset\":0,\"endOffset\":60},{\"@type\":\"Clip\",\"name\":\"Which four job titles hide behind AI engineering jobs?\",\"startOffset\":60,\"endOffset\":139,\"url\":\"https:\/\/getaiwork.com\/articles\/ai-engineering-jobs\/#which-four-job-titles-hide-behind-ai-engineering-jobs\"},{\"@type\":\"Clip\",\"name\":\"How many AI engineering jobs did the boards list on 17 October 2026?\",\"startOffset\":139,\"endOffset\":287,\"url\":\"https:\/\/getaiwork.com\/articles\/ai-engineering-jobs\/#how-many-ai-engineering-jobs-did-the-boards-list-on-17-octob\"},{\"@type\":\"Clip\",\"name\":\"What pay do AI engineering job postings list?\",\"startOffset\":287,\"endOffset\":512,\"url\":\"https:\/\/getaiwork.com\/articles\/ai-engineering-jobs\/#what-pay-do-ai-engineering-job-postings-list\"},{\"@type\":\"Clip\",\"name\":\"Why do some AI engineering postings print pay and others do not?\",\"startOffset\":512,\"endOffset\":594,\"url\":\"https:\/\/getaiwork.com\/articles\/ai-engineering-jobs\/#why-do-some-ai-engineering-postings-print-pay-and-others-do\"},{\"@type\":\"Clip\",\"name\":\"What do people working these titles report?\",\"startOffset\":594,\"endOffset\":698,\"url\":\"https:\/\/getaiwork.com\/articles\/ai-engineering-jobs\/#what-do-people-working-these-titles-report\"},{\"@type\":\"Clip\",\"name\":\"Where are the AI engineering jobs for people in India?\",\"startOffset\":698,\"endOffset\":768,\"url\":\"https:\/\/getaiwork.com\/articles\/ai-engineering-jobs\/#where-are-the-ai-engineering-jobs-for-people-in-india\"},{\"@type\":\"Clip\",\"name\":\"Which AI engineering title fits your background?\",\"startOffset\":768,\"endOffset\":823,\"url\":\"https:\/\/getaiwork.com\/articles\/ai-engineering-jobs\/#which-ai-engineering-title-fits-your-background\"}],\"contentSize\":\"5.8 MB\"}<\/script>\n<p class=\"msq-audio-lead\"><strong>Listen to this article<\/strong>, about 14 minutes. A synthetic voice reads the article and announces each section title as it begins; tables are read row by row and the questions at the end are left out.<\/p>\n<audio class=\"msq-audio-player\" controls preload=\"metadata\" src=\"https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/ai-engineering-jobs-audio-202610170940.mp3\"><\/audio>\n<nav class=\"msq-toc\" aria-label=\"In this article\"><p class=\"msq-toc-title\">In this article<\/p>\n<ol>\n<li data-start=\"0.0\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"0.0\" aria-label=\"Play from: AI Engineering Jobs: The Four Titles, Counted, Pay as Posted\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:00<\/span><a href=\"#top\">AI Engineering Jobs: The Four Titles, Counted, Pay as Posted<\/a><\/li>\n<li data-start=\"60.42\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"60.42\" aria-label=\"Play from: Which four job titles hide behind AI engineering jobs?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">1:00<\/span><a href=\"#which-four-job-titles-hide-behind-ai-engineering-jobs\">Which four job titles hide behind AI engineering jobs?<\/a><\/li>\n<li data-start=\"138.76\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"138.76\" aria-label=\"Play from: How many AI engineering jobs did the boards list on 17 October 2026?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">2:19<\/span><a href=\"#how-many-ai-engineering-jobs-did-the-boards-list-on-17-octob\">How many AI engineering jobs did the boards list on 17 October 2026?<\/a><\/li>\n<li data-start=\"287.06\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"287.06\" aria-label=\"Play from: What pay do AI engineering job postings list?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">4:47<\/span><a href=\"#what-pay-do-ai-engineering-job-postings-list\">What pay do AI engineering job postings list?<\/a><\/li>\n<li data-start=\"512.44\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"512.44\" aria-label=\"Play from: Why do some AI engineering postings print pay and others do not?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">8:32<\/span><a href=\"#why-do-some-ai-engineering-postings-print-pay-and-others-do\">Why do some AI engineering postings print pay and others do not?<\/a><\/li>\n<li data-start=\"594.22\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"594.22\" aria-label=\"Play from: What do people working these titles report?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">9:54<\/span><a href=\"#what-do-people-working-these-titles-report\">What do people working these titles report?<\/a><\/li>\n<li data-start=\"698.12\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"698.12\" aria-label=\"Play from: Where are the AI engineering jobs for people in India?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">11:38<\/span><a href=\"#where-are-the-ai-engineering-jobs-for-people-in-india\">Where are the AI engineering jobs for people in India?<\/a><\/li>\n<li data-start=\"767.74\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"767.74\" aria-label=\"Play from: Which AI engineering title fits your background?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">12:48<\/span><a href=\"#which-ai-engineering-title-fits-your-background\">Which AI engineering title fits your background?<\/a><\/li>\n<\/ol><\/nav>\n<p class=\"msq-audio-note\">Recorded 17 October 2026 from the article as published that day. Press a chapter to jump there; the highlighted line is what is playing. A play button sits beside every section heading, and once you scroll past this player a bar at the bottom of the screen keeps the controls in reach. Tap or click any sentence to hear the reading start from there.<\/p>\n<script>var MSQ_SENT = [[0.0,\"h\",\"aiengineeringjobsthefour\",48],[4.68,\"p\",\"aiengineeringjobsarefour\",132],[16.28,\"p\",\"on17october2026ourboards\",140],[35.24,\"p\",\"onthispageeveryaienginee\",231],[60.42,\"h\",\"whichfourjobtitleshidebe\",45],[64.7,\"p\",\"typethephraseintoajobsit\",62],[69.26,\"p\",\"underneaththetitlessplit\",70],[74.5,\"t\",\"aiengineerappliedaiengin\",181],[90.62,\"t\",\"machinelearningengineer\",151],[103.78,\"t\",\"forwarddeployedengineer\",152],[116.9,\"t\",\"aiautomationengineer\",141],[129.42,\"p\",\"thefirstandsecondfamilie\",50],[132.22,\"p\",\"thewordsaiandmlgetswappe\",65],[138.76,\"h\",\"howmanyaiengineeringjobs\",55],[145.72,\"p\",\"wecountedratherthanguess\",26],[148.16,\"p\",\"on17october2026wecrawled\",130],[161.4,\"p\",\"thatgave599\",11],[163.24,\"p\",\"ofthose450belongtothefou\",145],[177.44,\"t\",\"titlesnamingai149sayexac\",88],[190.24,\"t\",\"machinelearningengineer\",73],[200.12,\"t\",\"forwarddeployedengineer\",71],[210.64,\"t\",\"aiautomationengineer\",67],[219.84,\"p\",\"twothingsstandout\",17],[221.08,\"p\",\"only37ofthe450arelisteda\",63],[227.4,\"p\",\"andtheaiautomationengine\",142],[240.88,\"p\",\"thevendorsownboardsreadt\",63],[245.36,\"p\",\"countingindividualengine\",189],[267.2,\"p\",\"databricksaloneposted84f\",112],[276.76,\"p\",\"ifyouarenotsurewhichfami\",129],[287.06,\"h\",\"whatpaydoaiengineeringjo\",37],[290.38,\"p\",\"alotforexperiencedengine\",78],[296.94,\"p\",\"everyfigurebelowisaslist\",125],[307.86,\"t\",\"appliedaiengineerstartup\",91],[323.38,\"t\",\"appliedaiengineerpublics\",92],[334.9,\"t\",\"frontieragentsengineerap\",92],[349.74,\"t\",\"machinelearningengineerg\",95],[362.86,\"t\",\"machinelearninginfrastru\",118],[376.9,\"t\",\"machinelearningengineerp\",96],[390.54,\"t\",\"seniorappliedmlengineerm\",93],[405.82,\"t\",\"forwarddeployedengineerf\",99],[421.38,\"t\",\"staffforwarddeployedengi\",96],[433.06,\"t\",\"srforwarddeployedenginee\",100],[446.7,\"t\",\"aiautomationengineercost\",88],[456.5,\"p\",\"smalleremployersonourboa\",41],[459.42,\"p\",\"activecampaignssenioraie\",149],[479.62,\"p\",\"attheotherendoftheboards\",148],[492.98,\"p\",\"contractworkexiststoomic\",95],[501.54,\"p\",\"thatisacontracttaskraten\",69],[506.62,\"p\",\"ourpageonthehighestpayin\",75],[512.44,\"h\",\"whydosomeaiengineeringpo\",52],[517.36,\"p\",\"becausesomeplacesmakeemp\",37],[519.68,\"p\",\"lookatthetableagainevery\",116],[529.48,\"p\",\"coloradosdepartmentoflab\",204],[546.56,\"p\",\"thesameguidancesaysthera\",100],[554.52,\"p\",\"keepthatinmindthenexttim\",94],[562.64,\"p\",\"californianewyorkandwash\",244],[578.96,\"p\",\"apostedrangetellsyouwhat\",68],[583.92,\"p\",\"itdoesnottellyouwhatanyo\",136],[594.22,\"h\",\"whatdopeopleworkingthese\",36],[597.38,\"p\",\"wereadthree2026threadsin\",103],[606.78,\"p\",\"thesearewhatpeoplereport\",62],[611.58,\"p\",\"inajune2026threadaskingw\",249],[632.86,\"p\",\"otherswereblunterandcall\",171],[645.06,\"p\",\"aseptember2026threadaske\",82],[650.98,\"p\",\"severalpeoplewhosaidthey\",191],[664.98,\"p\",\"onesaidtherolesuitsanyon\",130],[673.7,\"p\",\"inanaugust2026threadacan\",74],[679.78,\"p\",\"thetopreplyfromsomeonewh\",143],[688.86,\"p\",\"thepatternacrossallthree\",120],[698.12,\"h\",\"wherearetheaiengineering\",44],[701.2,\"p\",\"mostlyatindianemployersa\",63],[706.48,\"p\",\"on17october2026ourboardc\",108],[716.96,\"p\",\"someprintpayinrupeesente\",190],[733.32,\"p\",\"thelabsarethinneronthegr\",28],[736.24,\"p\",\"anthropicsandscaleaisboa\",78],[744.44,\"p\",\"openaishowedoneapartnera\",165],[758.16,\"p\",\"noneofthoseprintedasalar\",25],[759.76,\"p\",\"ifyouareearlierinyourcar\",98],[767.74,\"h\",\"whichaiengineeringtitlef\",41],[770.42,\"p\",\"yourcurrentworkdecidesit\",41],[773.34,\"p\",\"abackendorfullstackdevel\",57],[778.18,\"p\",\"someonewithgenuinemltrai\",100],[785.78,\"p\",\"adeveloperwhoenjoyscusto\",81],[792.78,\"p\",\"andsomeonewhoalreadybuil\",198],[807.14,\"p\",\"thetitledecoderbelowrest\",73],[812.98,\"p\",\"everylistingwecountediso\",123]];\n(function(){\n  function init(){\n  var root = document.querySelector('.msq-audio'); if (!root) { return; }\n  var audio = root.querySelector('audio'), items = Array.prototype.slice.call(root.querySelectorAll('.msq-toc li'));\n  var starts = items.map(function(li){ return parseFloat(li.getAttribute('data-start')) || 0; });\n  var names = items.map(function(li){ return li.querySelector('a').textContent; });\n  var anchors = items.map(function(li){ var h = li.querySelector('a').getAttribute('href') || ''; return (h.charAt(0) === '#' && h !== '#top') ? document.getElementById(h.slice(1)) : null; });\n  var article = root.getAttribute('data-article') || location.pathname, minutes = root.getAttribute('data-minutes') || '';\n  var marks = {}, started = false, pausedAt = -1, closed = false, ended = false;\n  var RATES = [1, 1.25, 1.5], rate = 1;\n  try { var saved = parseFloat(localStorage.getItem('msq-audio-rate')); if (RATES.indexOf(saved) >= 0) { rate = saved; } } catch (e) {}\n  audio.playbackRate = rate;\n  function track(name, extra){ try { if (typeof gtag === 'function') { var p = { article: article }; for (var k in extra) { p[k] = extra[k]; } gtag('event', name, p); } } catch (e) {} }\n  function current(){ var t = audio.currentTime, idx = 0; for (var i = 0; starts.length > i; i += 1) { if (t + 0.25 >= starts[i]) { idx = i; } } return idx; }\n  function onScreen(){\n    var line = window.innerHeight \/ 3, idx = 0;\n    for (var i = 0; anchors.length > i; i += 1) { var el = anchors[i]; if (el && line >= el.getBoundingClientRect().top) { idx = i; } }\n    return idx;\n  }\n  function fmt(s){ s = Math.max(0, Math.round(s || 0)); var m = Math.floor(s \/ 60), r = s % 60; return m + ':' + (10 > r ? '0' : '') + r; }\n  function play(from, source){\n    if (from !== null) { audio.currentTime = from; }\n    var p = audio.play(); if (p && p.catch) { p.catch(function(){}); }\n    track(from === null ? 'audio_resume' : 'audio_chapter', { chapter: names[current()], start: Math.round(audio.currentTime), source: source });\n  }\n  var hbtns = anchors.map(function(el, i){\n    if (!el) { return null; }\n    var b = document.createElement('button'); b.type = 'button'; b.className = 'msq-hplay'; b.setAttribute('aria-label', 'Play this section: ' + names[i]);\n    b.addEventListener('click', function(){\n      if (!audio.paused && current() === i) { audio.pause(); track('audio_pause', { source: 'heading' }); return; }\n      play(starts[i], 'heading');\n    });\n    el.appendChild(b); return b;\n  });\n  var bar = document.createElement('div'); bar.className = 'msq-bar msq-bar-pill is-hidden'; bar.setAttribute('role', 'region'); bar.setAttribute('aria-label', 'Audio player');\n  var playBtn = document.createElement('button'); playBtn.type = 'button'; playBtn.className = 'msq-bar-play';\n  var icon = document.createElement('span'); icon.className = 'msq-bar-icon'; icon.setAttribute('aria-hidden', 'true');\n  var label = document.createElement('span'); label.className = 'msq-bar-label';\n  playBtn.appendChild(icon); playBtn.appendChild(label);\n  var chap = document.createElement('span'); chap.className = 'msq-bar-chapter';\n  var clock = document.createElement('span'); clock.className = 'msq-bar-time';\n  var rateBtn = document.createElement('button'); rateBtn.type = 'button'; rateBtn.className = 'msq-bar-rate'; rateBtn.setAttribute('aria-label', 'Playback speed');\n  var closeBtn = document.createElement('button'); closeBtn.type = 'button'; closeBtn.className = 'msq-bar-close'; closeBtn.setAttribute('aria-label', 'Close the audio bar');\n  bar.appendChild(playBtn); bar.appendChild(chap); bar.appendChild(clock); bar.appendChild(rateBtn); bar.appendChild(closeBtn);\n  document.body.appendChild(bar);\n  function showRate(){ rateBtn.textContent = (rate === 1 ? '1' : String(rate)) + 'x'; }\n  showRate();\n  rateBtn.addEventListener('click', function(){\n    rate = RATES[(RATES.indexOf(rate) + 1) % RATES.length]; audio.playbackRate = rate; showRate();\n    try { localStorage.setItem('msq-audio-rate', String(rate)); } catch (e) {}\n    track('audio_rate', { rate: rate });\n  });\n  closeBtn.addEventListener('click', function(){\n    closed = true; if (!audio.paused) { audio.pause(); } paint(); track('audio_bar_close', {});\n  });\n  function mode(){\n    if (!audio.paused) { return 'pause'; }\n    if (ended) { return 'again'; }\n    if (!started) { return 'listen'; }\n    return (pausedAt === onScreen()) ? 'resume' : 'section';\n  }\n  playBtn.addEventListener('click', function(){\n    var m = mode();\n    if (m === 'pause') { audio.pause(); track('audio_pause', { source: 'bar' }); return; }\n    if (m === 'again') { ended = false; play(0, 'bar'); return; }\n    if (m === 'resume') { play(null, 'bar'); return; }\n    play(starts[onScreen()], 'bar');\n  });\n  function paint(){\n    var idx = current(), playing = !audio.paused, m = mode();\n    items.forEach(function(li, i){\n      var on = (i === idx) && playing, b = li.querySelector('.msq-toc-play'), a = li.querySelector('a');\n      li.classList.toggle('is-active', on); b.classList.toggle('is-playing', on);\n      b.textContent = on ? '\u2016' : '\u25b6\ufe0e';\n      b.setAttribute('aria-label', (on ? 'Pause: ' : 'Play from: ') + a.textContent);\n    });\n    hbtns.forEach(function(b, i){ if (b) { var on = (i === idx) && playing; b.classList.toggle('is-playing', on); b.setAttribute('aria-label', (on ? 'Pause this section: ' : 'Play this section: ') + names[i]); } });\n    playBtn.classList.toggle('is-playing', playing);\n    label.textContent = m === 'pause' ? 'Pause' : m === 'again' ? 'Play again' : m === 'resume' ? 'Resume' : m === 'section' ? 'Play this section' : 'Listen, ' + minutes + ' min';\n    playBtn.setAttribute('aria-label', label.textContent);\n    chap.textContent = started ? names[(playing || m === 'resume') ? idx : onScreen()] : '';\n    clock.textContent = started ? fmt(audio.currentTime) + ' \/ ' + fmt(audio.duration) : '';\n    bar.classList.toggle('msq-bar-pill', !started);\n    var show = !closed && (started || 0 > root.getBoundingClientRect().bottom);\n    bar.classList.toggle('is-hidden', !show);\n    document.body.classList.toggle('msq-has-bar', show);\n  }\n  root.addEventListener('click', function(e){\n    var b = e.target.closest ? e.target.closest('.msq-toc-play') : null; if (!b) { return; }\n    var li = b.parentNode, s = parseFloat(b.getAttribute('data-start')) || 0;\n    if (!audio.paused && current() === items.indexOf(li)) { audio.pause(); track('audio_pause', { source: 'index' }); return; }\n    play(s, 'index');\n  });\n  audio.addEventListener('play', function(){ ended = false; closed = false; if (!started) { started = true; track('audio_play', { minutes: Math.round((audio.duration || 0) \/ 60) }); } paint(); });\n  audio.addEventListener('pause', function(){ pausedAt = current(); paint(); });\n  audio.addEventListener('timeupdate', function(){\n    paint();\n    if (audio.duration > 0) {\n      var pct = Math.floor(audio.currentTime \/ audio.duration * 100);\n      [25, 50, 75].forEach(function(m){ if (pct >= m && !marks[m]) { marks[m] = true; track('audio_progress', { percent: m }); } });\n    }\n  });\n  audio.addEventListener('ended', function(){ ended = true; track('audio_complete', {}); paint(); });\n  var ticking = false;\n  function onScroll(){ if (ticking) { return; } ticking = true; setTimeout(function(){ ticking = false; paint(); }, 80); }\n  window.addEventListener('scroll', onScroll, { passive: true }); window.addEventListener('resize', onScroll);\n  paint();\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); }\n})();\n\n(function(){\n  function start(){\n    var root = document.querySelector('.msq-audio'), audio = root ? root.querySelector('audio') : null;\n    var map = (typeof MSQ_SENT !== 'undefined') ? MSQ_SENT : [];\n    if (!root || !audio || !map.length) { return; }\n    var scope = root.closest('main') || root.closest('article') || root.closest('.entry-content') || document.body;\n    var SKIP = '.msq-audio,.msq,.msq-tool,.msq-end,.msq-bar,script,style,noscript,figcaption,#rank-math-faq,.rank-math-block,nav,header,footer';\n    function norm(s){ return s.toLowerCase().replace(\/[^a-z0-9]+\/g, ''); }\n    var nodes = [], stream = '', walker = document.createTreeWalker(scope, NodeFilter.SHOW_TEXT, null), n;\n    while ((n = walker.nextNode())) {\n      var el = n.parentElement; if (!el || el.closest(SKIP)) { continue; }\n      var raw = n.nodeValue, keep = [], norms = '';\n      for (var i = 0; raw.length > i; i += 1) { var c = raw.charAt(i).toLowerCase(); if (\/[a-z0-9]\/.test(c)) { keep.push(i); norms += c; } }\n      if (!norms) { continue; }\n      nodes.push({ node: n, a: stream.length, b: stream.length + norms.length, keep: keep });\n      stream += norms;\n    }\n    var segs = [], cursor = 0, lastRow = null;\n    map.forEach(function(m, idx){\n      var kind = m[1], f = m[2], len = m[3];\n      if (kind === 't') {\n        var rows = scope.querySelectorAll('tr'), after = !lastRow;\n        for (var r = 0; rows.length > r; r += 1) {\n          var tr = rows[r];\n          if (!after) { if (tr === lastRow) { after = true; } continue; }\n          var cell = tr.querySelector('td,th');\n          if (cell && norm(cell.textContent).indexOf(f) === 0) { tr.setAttribute('data-i', idx); lastRow = tr; break; }\n        }\n        return;\n      }\n      var p = stream.indexOf(f, cursor); if (0 > p) { return; }\n      segs.push({ i: idx, a: p, b: Math.min(p + len, stream.length) }); cursor = p + len;\n    });\n    var si = 0;\n    nodes.forEach(function(nd){\n      var frag = document.createDocumentFragment(), raw = nd.node.nodeValue, rawPos = 0, any = false;\n      for (var k = si; segs.length > k; k += 1) {\n        var sg = segs[k]; if (sg.a >= nd.b) { break; } if (nd.a >= sg.b) { continue; }\n        var s = Math.max(sg.a, nd.a), e = Math.min(sg.b, nd.b);\n        var rs = nd.keep[s - nd.a], re2 = nd.keep[e - nd.a - 1] + 1;\n        if (rs > rawPos) { frag.appendChild(document.createTextNode(raw.slice(rawPos, rs))); }\n        var span = document.createElement('span'); span.className = 'msq-s'; span.setAttribute('data-i', sg.i); span.textContent = raw.slice(rs, re2);\n        frag.appendChild(span); rawPos = re2; any = true;\n        if (sg.b > nd.b) { break; }\n      }\n      while (segs.length > si && nd.b >= segs[si].b) { si += 1; }\n      if (!any) { return; }\n      if (raw.length > rawPos) { frag.appendChild(document.createTextNode(raw.slice(rawPos))); }\n      nd.node.parentNode.replaceChild(frag, nd.node);\n    });\n    var starts = map.map(function(m){ return m[0]; }), curIdx = -1, lastUser = 0, timer = null, autoUntil = 0, dragging = false;\n    function idxAt(t){ var lo = 0, hi = starts.length; while (hi > lo + 1) { var mid = (lo + hi) >> 1; if (t + 0.15 >= starts[mid]) { lo = mid; } else { hi = mid; } } return (t + 0.15 >= starts[0]) ? lo : -1; }\n    function setNow(i){\n      if (i === curIdx) { return; }\n      Array.prototype.forEach.call(scope.querySelectorAll('.msq-now'), function(el){ el.classList.remove('msq-now'); });\n      curIdx = i; if (0 > i) { return; }\n      var els = scope.querySelectorAll('[data-i=\"' + i + '\"]'); if (!els.length) { return; }\n      Array.prototype.forEach.call(els, function(el){ el.classList.add('msq-now'); });\n      var r = els[0].getBoundingClientRect(), now = Date.now();\n      if (!dragging && now > lastUser + 2500 && (80 > r.top || r.bottom > window.innerHeight - 140)) {\n        var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n        autoUntil = now + (reduce ? 400 : 1600);\n        els[0].scrollIntoView({ block: 'center', behavior: reduce ? 'auto' : 'smooth' });\n      }\n    }\n    function tick(){ if (!audio.paused) { setNow(idxAt(audio.currentTime)); } }\n    function userScrolled(){ lastUser = Date.now(); }\n    ['wheel', 'touchmove', 'keydown'].forEach(function(ev){ window.addEventListener(ev, userScrolled, { passive: true }); });\n    window.addEventListener('scroll', function(){ if (Date.now() > autoUntil) { userScrolled(); } }, { passive: true });\n    window.addEventListener('mousedown', function(e){ if (e.clientX >= document.documentElement.clientWidth) { dragging = true; userScrolled(); } }, { passive: true });\n    window.addEventListener('mouseup', function(){ if (dragging) { dragging = false; userScrolled(); } }, { passive: true });\n    audio.addEventListener('play', function(){ if (timer) { clearInterval(timer); } timer = setInterval(tick, 150); tick(); });\n    audio.addEventListener('pause', function(){ if (timer) { clearInterval(timer); timer = null; } });\n    scope.addEventListener('click', function(e){\n      if (e.target.closest('a, button, input, select, textarea, label, summary, .msq, .msq-tool, .msq-end, .msq-audio, .msq-bar')) { return; }\n      var sel = window.getSelection ? String(window.getSelection()) : '';\n      if (sel && sel.trim()) { return; }\n      var el = e.target.closest('[data-i]'); if (!el) { return; }\n      var i = parseInt(el.getAttribute('data-i'), 10); if (isNaN(i)) { return; }\n      if (!audio.paused && i === curIdx) { return; }\n      lastUser = Date.now();\n      audio.currentTime = starts[i];\n      var p = audio.play(); if (p && p.catch) { p.catch(function(){}); }\n      try { if (typeof gtag === 'function') { gtag('event', 'audio_chapter', { article: location.pathname, source: 'sentence', start: Math.round(starts[i]) }); } } catch (err) {}\n    });\n    audio.addEventListener('seeked', tick);\n    audio.addEventListener('ended', function(){ setNow(-1); });\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', start); } else { start(); }\n})();<\/script>\n<\/div>\n\n\n\n<p class=\"msq-hook wp-block-paragraph\">On this page: every AI engineering title on the getAIwork board counted into four families on 17 October 2026, the same count on the Anthropic, OpenAI, Scale AI and Databricks boards, a table of US pay ranges exactly as posted, and what three 2026 Reddit threads report about the titles.<\/p>\n\n\n\n<div class=\"msq\" id=\"ms-quiz\" data-slug=\"ai-engineering-jobs\" data-category=\"ai jobs\" data-list=\"1\">\n<style>.msq,.msq-hook,.msq-box,.msq-end,.msq-tool{--msq-accent:#1E3A8A;--msq-accent-text:#FFFFFF;--msq-line:#DDE3EE;--msq-warn:#B45309;--msq-muted:#55555F;--msq-tint:#F1F4FA;--msq-base:#FFFFFF}\n.msq{margin:1.25em 0 1.75em}\n.msq-hook{border-left:3px solid var(--msq-accent);padding:6px 14px;color:var(--msq-muted);font-size:.97em}\n.msq-box{background:var(--msq-tint);border:1px solid var(--msq-line);border-radius:12px;padding:0}\n.msq-box>summary{cursor:pointer;list-style:none;padding:14px 18px;font-weight:700;color:var(--msq-accent)}\n.msq-box>summary::-webkit-details-marker{display:none}\n.msq-box>summary::before{content:\"+\";display:inline-block;width:1.1em;font-weight:800}\n.msq-box[open]>summary::before{content:\"\\00d7\"}\n.msq-body{padding:2px 18px 18px}\n.msq-intro{margin:0 0 12px;font-size:.95em;color:var(--msq-muted)}\n.msq-list{margin:0;padding:0;list-style:none}\n.msq-q{margin:0 0 18px;padding:0}\n.msq-question{font-weight:700;margin:0 0 8px}\n.msq-options{display:flex;flex-direction:column;gap:8px}\n.msq-opt{text-align:left;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:8px;padding:10px 12px;font:inherit;font-size:.95em;color:inherit;cursor:pointer;line-height:1.35}\n.msq-opt:hover{border-color:var(--msq-accent)}\n.msq-opt[disabled]{cursor:default}\n.msq-opt.is-right{border-color:var(--msq-accent);background:var(--msq-line);font-weight:700}\n.msq-opt.is-wrong{border-color:var(--msq-warn);color:var(--msq-warn)}\n.msq-explain{margin:8px 0 0;font-size:.92em;padding:10px 12px;border-left:3px solid var(--msq-accent);background:var(--msq-base);border-radius:0 8px 8px 0}\n.msq-explain[hidden]{display:none}\n.msq-verdict{font-weight:700}\n.msq-result{margin-top:14px;padding:14px 16px;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:10px}\n.msq-result[hidden]{display:none}\n.msq-result h3{margin:0 0 6px;font-size:1.1em}\n.msq-result p{margin:0 0 8px}\n.msq-jump{margin:0 0 8px;padding-left:1.2em}\n.msq-form{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}\n.msq-form input[type=email]{flex:1 1 220px;padding:10px 12px;border:1px solid var(--msq-muted);border-radius:8px;font:inherit;background:#fff}\n.msq-btn{background:var(--msq-accent);color:var(--msq-accent-text);border:0;border-radius:8px;padding:11px 18px;font:inherit;font-weight:700;cursor:pointer}\n.msq-btn:hover{filter:brightness(.92)}\n.msq-btn[disabled]{opacity:.7;cursor:default}\n.msq-no{font-size:.9em;color:var(--msq-muted);margin-left:4px}\n.msq-privacy{margin:6px 0 0;font-size:.82em;color:var(--msq-muted);flex-basis:100%}\n.msq-hp{position:absolute;left:-5000px;width:1px;height:1px;overflow:hidden}\n.msq-msg{margin:8px 0 0;font-size:.92em}\n.msq-end{margin:1.5em 0;padding:18px;border:1px solid var(--msq-accent);border-radius:12px;text-align:center;background:var(--msq-tint)}\n.msq-end p{margin:0 0 12px}\n.msq-end .msq-body{text-align:left;padding:16px 0 0}\n.msq-end .msq-start-test[hidden]{display:none}\n.msq-tool{margin:1.5em 0;padding:18px 20px;background:var(--msq-tint);border:1px solid var(--msq-line);border-radius:12px}\n.msq-tool h3{margin:0 0 6px;font-size:1.15em}\n.msq-tool p{margin:0 0 10px}\n.msq-tool .msq-note{font-size:.85em;color:var(--msq-muted);margin:10px 0 0}\n.msq-check label{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--msq-line);cursor:pointer;line-height:1.4}\n.msq-check label:last-of-type{border-bottom:0}\n.msq-check input{margin-top:5px;flex:0 0 auto;width:18px;height:18px;accent-color:var(--msq-accent)}\n.msq-check-count{font-weight:700;margin:10px 0 0}\n.msq-verdict-box{margin:12px 0 0;padding:10px 14px;border-radius:8px;background:var(--msq-base);border-left:3px solid var(--msq-warn)}\n.msq-verdict-box[hidden]{display:none}\n.msq-calc{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px}\n.msq-calc label{display:flex;flex-direction:column;gap:4px;font-size:.92em}\n.msq-calc input,.msq-calc select{padding:8px 10px;border:1px solid var(--msq-muted);border-radius:8px;font:inherit;background:#fff}\n.msq-calc-out{grid-column:1 \/ -1;margin-top:6px;padding:12px 14px;background:var(--msq-base);border-radius:8px;border:1px solid var(--msq-line)}\n.msq-calc-out strong{font-size:1.15em}\n.msq-choose label{display:block;padding:9px 12px;margin:0 0 8px;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:8px;cursor:pointer}\n.msq-choose input{margin-right:8px;accent-color:var(--msq-accent)}\n.msq-choice-result{margin-top:10px;padding:12px 14px;background:var(--msq-base);border-left:3px solid var(--msq-accent);border-radius:0 8px 8px 0}\n.msq-choice-result[hidden]{display:none}\n@media (max-width:600px){.msq-calc{grid-template-columns:1fr}}\nh2.wp-block-heading[id]{scroll-margin-top:24px}<\/style>\n<noscript><style>.msq-explain{display:block !important}<\/style><\/noscript>\n<details class=\"msq-box\">\n<summary>Think you already know this? Five questions, one minute.<\/summary>\n<div class=\"msq-body\">\n<p class=\"msq-intro\">Every answer is on this page. Answer from what you know now; the page fills in the rest.<\/p>\n<ol class=\"msq-list\">\n<li class=\"msq-q\" data-q=\"1\" data-answer=\"a\" data-title=\"How many AI engineering jobs did the boards list on 17 October 2026?\" data-section=\"#how-many-ai-engineering-jobs-did-the-boards-list-on-17-octob\">\n<p class=\"msq-question\">1. How many of the 450 AI engineering listings on the getAIwork board were listed as remote on 17 October 2026?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 1 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">37<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">About half<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">All of them<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Only 37 of 450 were listed as remote, so most of this work is office or hybrid. Source: the <a href=\"https:\/\/getaiwork.com\/board\/\" target=\"_blank\" rel=\"noopener\">getAIwork board<\/a>, crawled 17 October 2026. <a class=\"msq-section\" href=\"#how-many-ai-engineering-jobs-did-the-boards-list-on-17-octob\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"2\" data-answer=\"b\" data-title=\"What pay do AI engineering job postings list?\" data-section=\"#what-pay-do-ai-engineering-job-postings-list\">\n<p class=\"msq-question\">2. What annual range did OpenAI&#8217;s Forward Deployed Engineer (FDE), SF posting list on 17 October 2026?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 2 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">$40 to $60 an hour<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">$185K to $300K plus equity<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">No range was printed<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The posting lists $185K to $300K a year plus equity; a posted range is not an offer. Source: <a href=\"https:\/\/jobs.ashbyhq.com\/openai\/967f94aa-1706-4dba-ac89-bfbc2c38b688\" target=\"_blank\" rel=\"noopener\">OpenAI&#8217;s posting<\/a>. <a class=\"msq-section\" href=\"#what-pay-do-ai-engineering-job-postings-list\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"3\" data-answer=\"c\" data-title=\"Why do some AI engineering postings print pay and others do not?\" data-section=\"#why-do-some-ai-engineering-postings-print-pay-and-others-do\">\n<p class=\"msq-question\">3. According to Colorado&#8217;s labour department, what must a posting from an employer with a Colorado employee include?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 3 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Only the job title<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">An &#8220;up to&#8221; figure with no floor<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">The pay or a good faith pay range, with a general description of bonuses and benefits<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The guidance requires the pay or a range in each posting and says an open ended &#8220;up to&#8221; figure does not count. Source: <a href=\"https:\/\/cdle.colorado.gov\/sites\/cdle\/files\/INFO%20%239A%20Transparency%20in%20Pay%20and%20Job%20Opportunities%20The%20Colorado%20EPEWA%20Part%202%205.29.24%20%5Baccessible%5D.pdf\" target=\"_blank\" rel=\"noopener\">CDLE INFO #9A<\/a>. <a class=\"msq-section\" href=\"#why-do-some-ai-engineering-postings-print-pay-and-others-do\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"4\" data-answer=\"a\" data-title=\"What do people working these titles report?\" data-section=\"#what-do-people-working-these-titles-report\">\n<p class=\"msq-question\">4. In a September 2026 Reddit thread, what did people holding the forward deployed engineer title say decides whether it is consulting?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 4 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">How the employer makes money, billing hours or selling a product<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Whether the job is remote<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">The size of the salary<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Several said that if the employer bills engineer hours the job is consulting, and if it sells a product it is integration work. That is what people report, not a rule. Source: <a href=\"https:\/\/www.reddit.com\/r\/cscareerquestions\/comments\/1wgf8yu\/is_forward_deployed_engineer_just_a_rebranding_of\/\" target=\"_blank\" rel=\"noopener\">the r\/cscareerquestions thread<\/a>. <a class=\"msq-section\" href=\"#what-do-people-working-these-titles-report\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"5\" data-answer=\"b\" data-title=\"Where are the AI engineering jobs for people in India?\" data-section=\"#where-are-the-ai-engineering-jobs-for-people-in-india\">\n<p class=\"msq-question\">5. How many engineering postings in India did Anthropic&#8217;s and Scale AI&#8217;s boards show on 17 October 2026?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 5 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Dozens each<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">None<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Exactly seven each<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Neither showed any, while Databricks showed seven and OpenAI one. Source: <a href=\"https:\/\/databricks.com\/company\/careers\/open-positions\/job?gh_jid=8771566002\" target=\"_blank\" rel=\"noopener\">Databricks&#8217; Forward Deployed Engineer posting for India<\/a> and the labs&#8217; boards, read 17 October 2026. <a class=\"msq-section\" href=\"#where-are-the-ai-engineering-jobs-for-people-in-india\">Read the section<\/a><\/p>\n<\/li>\n<\/ol>\n<div class=\"msq-result\" hidden><\/div>\n<\/div>\n<\/details>\n<script>(function(){\n  if (window.__msqInit) { return; }\n  window.__msqInit = true;\n  var root = document.getElementById('ms-quiz');\n  if (!root) { return; }\n  var meta = { slug: root.getAttribute('data-slug'), category: root.getAttribute('data-category'),\n               list: root.getAttribute('data-list') || '1' };\n  function qs(el, s){ return el.querySelector(s); }\n  function qsa(el, s){ return Array.prototype.slice.call(el.querySelectorAll(s)); }\n  function track(name, params){\n    try { if (typeof gtag === 'function') { var p = params || {}; p.article = meta.slug; gtag('event', name, p); } } catch (e) {}\n  }\n  function jumpList(missed){\n    if (!missed.length) { return ''; }\n    return '<ul class=\"msq-jump\">' + missed.map(function(q){\n      return '<li><a href=\"' + q.getAttribute('data-section') + '\">' + q.getAttribute('data-title') + '<\/a><\/li>';\n    }).join('') + '<\/ul>';\n  }\n  function emailForm(){\n    return '<div class=\"msq-sub\"><p><strong>Get the next one.<\/strong> We publish new articles on ' + meta.category\n      + ' most weeks and recheck this page on Sundays. Email me when a new article goes up or this page changes.<\/p>'\n      + '<form class=\"msq-form\" method=\"post\" action=\"\/mail\/form.php\" novalidate>'\n      + '<input type=\"hidden\" name=\"list\" value=\"' + meta.list + '\">'\n      + '<input type=\"hidden\" name=\"name\" value=\"\">'\n      + '<label class=\"msq-hp\" aria-hidden=\"true\">Leave this empty<input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\"><\/label>'\n      + '<input type=\"email\" name=\"email\" placeholder=\"you@example.com\" required aria-label=\"Email address\" autocomplete=\"email\">'\n      + '<button type=\"submit\" class=\"msq-btn\">Email me the updates<\/button>'\n      + '<a href=\"#\" class=\"msq-no\">No thanks<\/a>'\n      + '<p class=\"msq-privacy\">We store your email and this page\\'s topic, nothing else. Unsubscribe any time.<\/p>'\n      + '<\/form><p class=\"msq-msg\" aria-live=\"polite\"><\/p><\/div>';\n  }\n  \/* The autoresponder always answers 200 with its own page. A \".msg.err\" box means the\n     address was rejected, \"You're subscribed\" means accepted, and a redirect only happens\n     after a successful subscribe. Same reading as the landing pages on the other sites. *\/\n  function sendForm(form){\n    return fetch(form.getAttribute('action'), { method: 'POST', body: new FormData(form), credentials: 'same-origin', redirect: 'manual' })\n      .then(function(res){\n        if (res.type === 'opaqueredirect') { return { status: 'ok' }; }\n        if (res.status === 404) { return { status: 'notlive' }; }\n        if (!res.ok) { throw new Error('HTTP ' + res.status); }\n        return res.text().then(function(t){\n          var doc = new DOMParser().parseFromString(t, 'text\/html');\n          var err = doc.querySelector('.msg.err');\n          if (err) {\n            var m = err.textContent.trim();\n            if (\/something went wrong\/i.test(m)) { throw new Error(m); }\n            return { status: 'rejected', message: m };\n          }\n          if (\/you.re subscribed\/i.test(doc.body.textContent)) { return { status: 'ok' }; }\n          return { status: 'unknown' };\n        });\n      });\n  }\n  function wireForm(sub){\n    var form = qs(sub, '.msq-form'), msg = qs(sub, '.msq-msg');\n    qs(form, '.msq-no').addEventListener('click', function(e){\n      e.preventDefault();\n      sub.innerHTML = '<p class=\"msq-msg\">No problem. The Sunday refresh keeps this page current either way.<\/p>';\n      track('quiz_email', { result: 'declined' });\n    });\n    form.addEventListener('submit', function(e){\n      e.preventDefault();\n      var input = qs(form, 'input[name=email]'), btn = qs(form, '.msq-btn');\n      var email = input.value.trim(); input.value = email;\n      if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) { msg.textContent = 'That email does not look right.'; return; }\n      btn.disabled = true; btn.textContent = 'Sending';\n      function reset(){ btn.disabled = false; btn.textContent = 'Email me the updates'; }\n      sendForm(form).then(function(r){\n        if (r.status === 'ok' || r.status === 'unknown') {\n          sub.innerHTML = '<p class=\"msq-msg\"><strong>Done.<\/strong> We will email you when the next article on ' + meta.category\n            + ' goes up and when this page changes. If a confirmation email arrives, click it.<\/p>';\n          track('quiz_email', { result: r.status });\n          if (r.status === 'ok') { track('generate_lead', { method: 'quiz' }); }\n        } else if (r.status === 'notlive') {\n          msg.textContent = 'Sign up is not switched on yet for this site. Nothing was stored.'; reset();\n          track('quiz_email', { result: 'notlive' });\n        } else {\n          msg.textContent = r.message || 'Please check the email address and try again.'; reset();\n          track('quiz_email', { result: 'rejected' });\n        }\n      }).catch(function(){\n        msg.textContent = 'Could not reach the sign up service just now. Nothing was stored.'; reset();\n        track('quiz_email', { result: 'error' });\n      });\n    });\n  }\n  function finish(container, mode, score, total, missed){\n    var result = qs(container, '.msq-result');\n    track('quiz_complete', { mode: mode, score: score, total: total });\n    var h;\n    if (mode === 'pre') {\n      h = '<h3>You knew ' + score + ' of ' + total + ' before reading.<\/h3>';\n      h += (score === total) ? '<p>All of them. Read on anyway; the sections below carry the detail behind each answer.<\/p>'\n                             : '<p>The rest is below. Jump straight to what you missed:<\/p>' + jumpList(missed);\n      try { sessionStorage.setItem('msq-pre-' + meta.slug, String(score)); } catch (e) {}\n    } else {\n      var pre = null;\n      try { pre = sessionStorage.getItem('msq-pre-' + meta.slug); } catch (e) {}\n      h = '<h3>You got ' + score + ' of ' + total + '.<\/h3>';\n      if (pre !== null) { h += '<p>Before reading you had ' + pre + ' of ' + total + '.<\/p>'; }\n      if (missed.length) { h += '<p>Worth a second look:<\/p>' + jumpList(missed); }\n      h += emailForm();\n    }\n    result.innerHTML = h; result.hidden = false;\n    if (mode !== 'pre') { wireForm(qs(result, '.msq-sub')); }\n    result.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n  }\n  function setup(container, mode){\n    var qEls = qsa(container, '.msq-q'), answered = 0, score = 0, missed = [];\n    qEls.forEach(function(q){\n      var answer = q.getAttribute('data-answer'), opts = qsa(q, '.msq-opt'), explain = qs(q, '.msq-explain');\n      q.removeAttribute('data-done'); explain.hidden = true; qs(explain, '.msq-verdict').textContent = '';\n      opts.forEach(function(b){ b.disabled = false; b.classList.remove('is-right', 'is-wrong'); });\n      opts.forEach(function(b){\n        b.addEventListener('click', function(){\n          if (q.getAttribute('data-done')) { return; }\n          q.setAttribute('data-done', '1');\n          var ok = b.getAttribute('data-opt') === answer;\n          opts.forEach(function(o){ o.disabled = true; if (o.getAttribute('data-opt') === answer) { o.classList.add('is-right'); } });\n          if (ok) { score += 1; } else { b.classList.add('is-wrong'); missed.push(q); }\n          qs(explain, '.msq-verdict').textContent = ok ? 'Right. ' : 'Not quite. ';\n          explain.hidden = false;\n          answered += 1;\n          track('quiz_answer', { mode: mode, question: q.getAttribute('data-q'), correct: ok ? 1 : 0 });\n          if (answered === qEls.length) { finish(container, mode, score, qEls.length, missed); }\n        });\n      });\n    });\n  }\n  var box = qs(root, '.msq-box');\n  setup(root, 'pre');\n  if (box) { var skipFirst = box.hasAttribute('data-default-open'); box.addEventListener('toggle', function(){ if (!box.open) { return; } if (skipFirst) { skipFirst = false; return; } track('quiz_open', { mode: 'pre' }); }); }\n  \/* The end block sits far below this script, so it does not exist yet while this runs\n     during parsing. A delegated listener finds it at click time. *\/\n  document.addEventListener('click', function(e){\n    var startBtn = (e.target && e.target.closest) ? e.target.closest('.msq-start-test') : null;\n    if (!startBtn) { return; }\n    var end = startBtn.closest('.msq-end');\n    if (!end) { return; }\n    var mount = qs(end, '.msq-mount');\n    var clone = qs(root, '.msq-body').cloneNode(true);\n    var intro = qs(clone, '.msq-intro');\n    if (intro) { intro.textContent = 'The same five questions, now that you have read the page.'; }\n    var res = qs(clone, '.msq-result'); if (res) { res.hidden = true; res.innerHTML = ''; }\n    mount.innerHTML = ''; mount.appendChild(clone);\n    setup(mount, 'test');\n    startBtn.hidden = true;\n    track('quiz_open', { mode: 'test' });\n    mount.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    var first = qs(mount, '.msq-opt'); if (first) { first.focus({ preventScroll: true }); }\n  });\n  \/* Shared tool behaviour: checklists remember their ticks on this device, and a chooser\n     shows the result for the option picked. Calculators carry their own small script. *\/\n  function initTools(){\n    qsa(document, '.msq-check').forEach(function(box){\n      var key = 'msq-check-' + meta.slug + '-' + (box.getAttribute('data-id') || 'x');\n      var boxes = qsa(box, 'input[type=checkbox]'), count = qs(box, '.msq-check-count');\n      var yes = qs(box, '.msq-verdict-yes'), no = qs(box, '.msq-verdict-no');\n      var saved = {};\n      try { saved = JSON.parse(localStorage.getItem(key) || '{}'); } catch (e) {}\n      boxes.forEach(function(cb, i){ if (saved[i]) { cb.checked = true; } });\n      function refresh(){\n        var n = boxes.filter(function(cb){ return cb.checked; }).length, state = {};\n        boxes.forEach(function(cb, i){ if (cb.checked) { state[i] = 1; } });\n        try { localStorage.setItem(key, JSON.stringify(state)); } catch (e) {}\n        if (count) { count.textContent = n + ' of ' + boxes.length + (box.getAttribute('data-verb') || ' done'); }\n        if (yes && no) { yes.hidden = n === 0; no.hidden = n !== 0; }\n      }\n      boxes.forEach(function(cb){ cb.addEventListener('change', function(){ refresh(); track('tool_check', { tool: box.getAttribute('data-id') }); }); });\n      refresh();\n    });\n    qsa(document, '.msq-choose').forEach(function(box){\n      var results = qsa(box, '.msq-choice-result');\n      qsa(box, 'input[type=radio]').forEach(function(r){\n        r.addEventListener('change', function(){\n          results.forEach(function(el){ el.hidden = el.getAttribute('data-for') !== r.value; });\n          track('tool_choose', { tool: box.getAttribute('data-id'), choice: r.value });\n        });\n      });\n    });\n  }\n  \/\/ read progress: how far down the article the reader has scrolled, fired once per quarter\n  (function(){\n    var art = root.closest('article') || root.parentNode, fired = {};\n    function check(){\n      var top = art.getBoundingClientRect().top + window.pageYOffset, h = art.offsetHeight || 1;\n      var seen = (window.pageYOffset + window.innerHeight - top) \/ h * 100;\n      [25, 50, 75, 100].forEach(function(m){ if (seen >= m && !fired[m]) { fired[m] = true; track('read_progress', { percent: m }); } });\n    }\n    window.addEventListener('scroll', check, { passive: true }); window.addEventListener('load', check);\n  })();\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initTools); } else { initTools(); }\n})();<\/script>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"which-four-job-titles-hide-behind-ai-engineering-jobs\">Which four job titles hide behind AI engineering jobs?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Type the phrase into a job site and you get a wall of identical looking cards. Underneath, the titles split into four families that ask for quite different people.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Title family<\/th><th>What the postings describe<\/th><th>Who it suits<\/th><\/tr><\/thead><tbody><tr><td>AI engineer, applied AI engineer<\/td><td>Building products on top of existing models: agents, retrieval, evaluation, the glue between a model and an app<\/td><td>Software engineers who ship product<\/td><\/tr><tr><td>Machine learning engineer<\/td><td>Training, serving and measuring models, ranking systems, ML infrastructure<\/td><td>Engineers with real ML and maths depth<\/td><\/tr><tr><td>Forward deployed engineer<\/td><td>Working inside a customer&#8217;s systems to make the vendor&#8217;s product work there<\/td><td>Engineers who like customers and travel<\/td><\/tr><tr><td>AI automation engineer<\/td><td>Wiring AI into business workflows and internal tools<\/td><td>Integration and scripting people, often freelance<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The first and second families are the ones people mix up most. The words AI and ML get swapped freely in titles, so read the duties, not the badge.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-many-ai-engineering-jobs-did-the-boards-list-on-17-octob\">How many AI engineering jobs did the boards list on 17 October 2026?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We counted rather than guessed. On 17 October 2026 we crawled every card on our <a href=\"https:\/\/getaiwork.com\/board\/\">free, public work board<\/a>, whose <a href=\"https:\/\/getaiwork.com\/stats.json\">stats.json<\/a> showed 1,702 live listings, and pulled every title containing engineer. That gave 599. Of those, 450 belong to the four AI families and 149 are other engineering jobs, from backend developers to a commercial blasting engineer, who is not, we checked, blasting models.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Family, getAIwork board, 17 October 2026<\/th><th>Listings<\/th><th>Listed as remote<\/th><th>Printing a real pay figure<\/th><\/tr><\/thead><tbody><tr><td>Titles naming AI (149 say exactly AI Engineer)<\/td><td>322<\/td><td>23<\/td><td>79<\/td><\/tr><tr><td>Machine learning engineer<\/td><td>99<\/td><td>12<\/td><td>18<\/td><\/tr><tr><td>Forward deployed engineer<\/td><td>25<\/td><td>2<\/td><td>8<\/td><\/tr><tr><td>AI automation engineer<\/td><td>4<\/td><td>0<\/td><td>0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Two things stand out. Only 37 of the 450 are listed as remote, so this is mostly office or hybrid work. And the AI automation engineer, a title that fills a lot of course adverts, barely exists as a salaried job: four listings, all in the UK, Germany and Australia, none printing pay.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The vendors&#8217; own boards, read the same day, tell the same story at a larger scale. Counting individual engineering titles and leaving out managers, architects and leads, Anthropic&#8217;s Greenhouse board carried 37 of its 656 postings in these families, Scale AI&#8217;s 28 of 182, OpenAI&#8217;s 99 of 815 and Databricks&#8217; 116 of 898. Databricks alone posted 84 forward deployed engineer jobs, many of them the same role repeated city by city, so count postings, not seats.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you are not sure which family you are aiming at, the getAIwork <a href=\"https:\/\/getaiwork.com\/?h=jobs&#038;utm_source=articles&#038;utm_medium=organic&#038;utm_content=ai-engineering-jobs\">match quiz<\/a> asks a few questions about your background and points you at the listings that fit.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-pay-do-ai-engineering-job-postings-list\">What pay do AI engineering job postings list?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A lot, for experienced engineers in the US, and that is the honest limit of what the postings show. Every figure below is as listed by the named posting on 17 October 2026, for one US role; rates change, a range is not an offer and nothing here is guaranteed.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Posting, read 17 October 2026<\/th><th>Family<\/th><th>Employer<\/th><th>Pay as listed<\/th><\/tr><\/thead><tbody><tr><td><a href=\"https:\/\/jobs.ashbyhq.com\/openai\/71e7252f-abb1-4b74-8e69-318413042357\" target=\"_blank\" rel=\"noopener\">Applied AI Engineer, Startups<\/a><\/td><td>AI engineer<\/td><td>OpenAI<\/td><td>$211K to $278K a year plus equity<\/td><\/tr><tr><td><a href=\"https:\/\/job-boards.greenhouse.io\/anthropic\/jobs\/5445410008\" target=\"_blank\" rel=\"noopener\">Applied AI Engineer, Public Sector<\/a><\/td><td>AI engineer<\/td><td>Anthropic<\/td><td>$280,000 to $320,000 a year<\/td><\/tr><tr><td><a href=\"https:\/\/job-boards.greenhouse.io\/scaleai\/jobs\/4720573005\" target=\"_blank\" rel=\"noopener\">Frontier Agents Engineer (Applied AI)<\/a><\/td><td>AI engineer<\/td><td>Scale AI<\/td><td>$180,000 to $225,000 a year<\/td><\/tr><tr><td><a href=\"https:\/\/jobs.ashbyhq.com\/openai\/70042d81-4db6-4c5c-bdb2-76c133ee2917\" target=\"_blank\" rel=\"noopener\">Machine Learning Engineer, Growth<\/a><\/td><td>ML engineer<\/td><td>OpenAI<\/td><td>$381K to $423K a year plus equity<\/td><\/tr><tr><td><a href=\"https:\/\/job-boards.greenhouse.io\/anthropic\/jobs\/5364804008\" target=\"_blank\" rel=\"noopener\">Machine Learning Infrastructure Engineer, Safeguards Research<\/a><\/td><td>ML engineer<\/td><td>Anthropic<\/td><td>$350,000 to $500,000 a year<\/td><\/tr><tr><td><a href=\"https:\/\/job-boards.greenhouse.io\/scaleai\/jobs\/4631848005\" target=\"_blank\" rel=\"noopener\">Machine Learning Engineer, Public Sector<\/a><\/td><td>ML engineer<\/td><td>Scale AI<\/td><td>$196,000 to $294,000 a year<\/td><\/tr><tr><td><a href=\"https:\/\/databricks.com\/company\/careers\/open-positions\/job?gh_jid=8656900002\" target=\"_blank\" rel=\"noopener\">Senior Applied ML Engineer, ML4Sys<\/a><\/td><td>ML engineer<\/td><td>Databricks<\/td><td>$166,000 to $210,250 a year<\/td><\/tr><tr><td><a href=\"https:\/\/jobs.ashbyhq.com\/openai\/967f94aa-1706-4dba-ac89-bfbc2c38b688\" target=\"_blank\" rel=\"noopener\">Forward Deployed Engineer (FDE), SF<\/a><\/td><td>Forward deployed<\/td><td>OpenAI<\/td><td>$185K to $300K a year plus equity<\/td><\/tr><tr><td><a href=\"https:\/\/job-boards.greenhouse.io\/anthropic\/jobs\/5449229008\" target=\"_blank\" rel=\"noopener\">Staff Forward Deployed Engineer<\/a><\/td><td>Forward deployed<\/td><td>Anthropic<\/td><td>$280,000 to $320,000 a year<\/td><\/tr><tr><td><a href=\"https:\/\/databricks.com\/company\/careers\/open-positions\/job?gh_jid=8461243002\" target=\"_blank\" rel=\"noopener\">Sr. Forward Deployed Engineer, Denver<\/a><\/td><td>Forward deployed<\/td><td>Databricks<\/td><td>$182,000 to $250,208 a year<\/td><\/tr><tr><td><a href=\"https:\/\/databricks.com\/company\/careers\/open-positions\/job?gh_jid=8829033002\" target=\"_blank\" rel=\"noopener\">AI Automation Engineer, Costa Rica<\/a><\/td><td>AI automation<\/td><td>Databricks<\/td><td>No pay printed<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Smaller employers on our board print lower bands. ActiveCampaign&#8217;s <a href=\"https:\/\/getaiwork.com\/board\/job\/8419\">Senior AI Engineer<\/a> listing shows $148,000 to $203,500 a year, and Torc Robotics&#8217; <a href=\"https:\/\/getaiwork.com\/board\/job\/8682\">Senior ML Engineer, VLM<\/a> listing shows $177,300 to $212,800, both as listed on 17 October 2026. At the other end of the board sits an <a href=\"https:\/\/getaiwork.com\/board\/job\/8872\">AI Engineer Apprentice<\/a> listing at $7.25 to $10 an hour, which is a useful reminder that the word engineer in a title guarantees nothing about the pay.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Contract work exists too. micro1&#8217;s <a href=\"https:\/\/getaiwork.com\/board\/job\/8796\">Forward Deployed Engineer, U.S. Government<\/a> listing shows $40 to $60 an hour as listed. That is a contract task rate, not a salary, and the two are not comparable line for line. Our page on the <a href=\"https:\/\/getaiwork.com\/articles\/highest-paying-ai-jobs\/\">highest paying AI jobs<\/a> covers the wider salary picture beyond engineering.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/desk-organization-preparing-for-ai-engineering-jobs.jpg\" alt=\"Close-up of hands organizing tasks on a desk while preparing for new ai engineering jobs.\" class=\"wp-image-1128\" srcset=\"https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/desk-organization-preparing-for-ai-engineering-jobs.jpg 1376w, https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/desk-organization-preparing-for-ai-engineering-jobs-300x167.jpg 300w, https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/desk-organization-preparing-for-ai-engineering-jobs-1024x572.jpg 1024w, https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/desk-organization-preparing-for-ai-engineering-jobs-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">US postings in the table print a pay range; the same employers&#8217; European and Asian postings mostly do not.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\" src=\"https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/ai-engineering-jobs-chart.png\" alt=\"Bar chart of posted salary floors and tops for ai engineering jobs by title family at four vendors\" class=\"wp-image-1132\" srcset=\"https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/ai-engineering-jobs-chart.png 1600w, https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/ai-engineering-jobs-chart-300x169.png 300w, https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/ai-engineering-jobs-chart-1024x576.png 1024w, https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/ai-engineering-jobs-chart-768x432.png 768w, https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/ai-engineering-jobs-chart-1536x864.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-block-image__caption\">Floors and tops come from ten US postings at OpenAI, Anthropic, Scale AI and Databricks, as listed on 17 October 2026. No AI automation posting printed pay. Ranges are not offers.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"why-do-some-ai-engineering-postings-print-pay-and-others-do\">Why do some AI engineering postings print pay and others do not?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Because some places make employers print it. Look at the table again: every US posting carries a range, while OpenAI&#8217;s and Anthropic&#8217;s postings for London, Paris, Munich and Tokyo carry none. Colorado&#8217;s Department of Labor and Employment explains why in its <a href=\"https:\/\/cdle.colorado.gov\/sites\/cdle\/files\/INFO%20%239A%20Transparency%20in%20Pay%20and%20Job%20Opportunities%20The%20Colorado%20EPEWA%20Part%202%205.29.24%20%5Baccessible%5D.pdf\" target=\"_blank\" rel=\"noopener\">INFO #9A guidance<\/a>: an employer with even one Colorado employee must state the hourly or salary pay, or a range, in each posting, along with a general description of bonuses and benefits.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The same guidance says the range must be a good faith estimate and cannot be open ended, so a bare &#8220;up to&#8221; figure does not count. Keep that in mind the next time an advert promises AI engineer pay of up to some heroic number with no floor in sight. California, New York and Washington are widely reported to have similar posting rules, which we did not check against their own regulators for this article; either way, it fits why so many San Francisco, New York and Seattle roles show ranges, and why Databricks&#8217; Denver posting above carries one too.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A posted range tells you what the employer expected to pay when it wrote the advert. It does not tell you what anyone was actually paid, and Colorado&#8217;s own guidance notes that the final pay can sit outside the range if the estimate was made in good faith.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-do-people-working-these-titles-report\">What do people working these titles report?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We read three 2026 threads in Reddit&#8217;s r\/cscareerquestions through a read only fetch, with more than 100 replies between them. These are what people report, not evidence of what any employer pays or does.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In a <a href=\"https:\/\/www.reddit.com\/r\/cscareerquestions\/comments\/1udw58x\/what_do_these_socalled_ai_engineers_actually_do\/\" target=\"_blank\" rel=\"noopener\">June 2026 thread<\/a> asking what so called AI engineers actually do, the most upvoted answer said it is two jobs sharing one title: machine learning engineers who train models and do the maths, and application engineers who build products on top of existing models with retrieval, agents and evaluation. Others were blunter and called the title a backend developer who uses a chatbot, while one self described AI engineer listed infrastructure, deployment, observability and client meetings as the actual day.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A <a href=\"https:\/\/www.reddit.com\/r\/cscareerquestions\/comments\/1wgf8yu\/is_forward_deployed_engineer_just_a_rebranding_of\/\" target=\"_blank\" rel=\"noopener\">September 2026 thread<\/a> asked whether forward deployed engineer is just a new name for consultant. Several people who said they hold the title answered that it depends on how the employer makes money: if it bills engineer hours, the job is consulting; if it sells a product, the job is integration work that feeds back into that product. One said the role suits anyone who likes being sent to a different customer problem every few months; another warned to expect long stretches at client sites.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In an <a href=\"https:\/\/www.reddit.com\/r\/cscareerquestions\/comments\/1vxnrie\/forward_deployed_engineer_roles_seem_like_a_scam\/\" target=\"_blank\" rel=\"noopener\">August 2026 thread<\/a>, a candidate worried the role would stall their technical growth. The top reply, from someone who said they do the job and enjoy it, described it as half sales and half engineering, and said it is not for anyone who dislikes talking to customers. The pattern across all three: the titles are real, but the duties under them vary more than the titles suggest, which matches the spread in our table.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"where-are-the-ai-engineering-jobs-for-people-in-india\">Where are the AI engineering jobs for people in India?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mostly at Indian employers and global capability centres, not at the US labs. On 17 October 2026 our board carried 36 AI and ML engineering listings in India, from Deutsche Bank, Novartis, Ford and smaller firms. Some print pay in rupees: ENTER&#8217;s <a href=\"https:\/\/getaiwork.com\/board\/job\/8697\">AI Engineer<\/a> listing shows Rs 30 lakh to Rs 50 lakh a year, I-Stem&#8217;s <a href=\"https:\/\/getaiwork.com\/board\/job\/9148\">AI Engineer (Voice AI)<\/a> shows Rs 20 lakh to Rs 25 lakh, and Inferigence Quotient&#8217;s <a href=\"https:\/\/getaiwork.com\/board\/job\/8084\">AI Engineer<\/a> shows Rs 6 lakh to Rs 12 lakh, all as listed that day.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/man-working-on-balcony-seeking-ai-engineering-jobs.jpg\" alt=\"A young man works on his balcony in India, looking up ai engineering jobs on his computer.\" class=\"wp-image-1129\" srcset=\"https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/man-working-on-balcony-seeking-ai-engineering-jobs.jpg 1376w, https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/man-working-on-balcony-seeking-ai-engineering-jobs-300x167.jpg 300w, https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/man-working-on-balcony-seeking-ai-engineering-jobs-1024x572.jpg 1024w, https:\/\/getaiwork.com\/articles\/wp-content\/uploads\/2026\/10\/man-working-on-balcony-seeking-ai-engineering-jobs-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">The board carried 36 AI and ML engineering listings in India on 17 October 2026.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The labs are thinner on the ground. Anthropic&#8217;s and Scale AI&#8217;s boards showed no AI engineering postings in India on 17 October 2026. OpenAI showed one, a <a href=\"https:\/\/jobs.ashbyhq.com\/openai\/87989505-81e5-4513-bba0-5f00bb064216\" target=\"_blank\" rel=\"noopener\">Partner AI Deployment Engineer<\/a> based in Bangalore and remote, and Databricks showed seven AI engineering postings, including a <a href=\"https:\/\/databricks.com\/company\/careers\/open-positions\/job?gh_jid=8771566002\" target=\"_blank\" rel=\"noopener\">Forward Deployed Engineer<\/a> listed as Remote, India. None of those printed a salary. If you are earlier in your career, our list of <a href=\"https:\/\/getaiwork.com\/articles\/ai-jobs-no-experience\/\">AI jobs for people with no experience<\/a> is the more realistic starting point.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"which-ai-engineering-title-fits-your-background\">Which AI engineering title fits your background?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Your current work decides it more than any course. A backend or full stack developer reaches applied AI engineer roles. Someone with genuine ML training and evaluation experience reaches ML engineer roles, the best paid family in our table. A developer who enjoys customers and can stand an airport lounge reaches forward deployed roles. And someone who already builds workflows and integrations will find few salaried jobs under that exact title, four on our board that day, so the freelance and contract side matters more, which our guide to <a href=\"https:\/\/getaiwork.com\/articles\/ai-automation-jobs\/\">AI automation jobs<\/a> covers in detail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The title decoder below restates the tables above; it scores nothing and predicts no pay. Every listing we counted is on the <a href=\"https:\/\/getaiwork.com\/board\/\">getAIwork board<\/a>, which is free and public with no signup, and the <a href=\"https:\/\/getaiwork.com\/?h=compare&#038;utm_source=articles&#038;utm_medium=organic&#038;utm_content=ai-engineering-jobs\">match quiz<\/a> will narrow them down to your background.<\/p>\n\n\n\n<div class=\"msq-tool msq-choose\" data-id=\"aie-title-decoder\">\n<h3>Title decoder<\/h3>\n<p>Pick the kind of title you saw on a posting. The decoder tells you which family the article&#8217;s table puts it in and the posted range column from that table. It predicts no pay.<\/p>\n<label><input type=\"radio\" name=\"aie-title-decoder\" value=\"applied\">AI Engineer, Applied AI Engineer, Frontier Agents Engineer<\/label>\n<label><input type=\"radio\" name=\"aie-title-decoder\" value=\"ml\">Machine Learning Engineer, ML Infrastructure, Applied ML<\/label>\n<label><input type=\"radio\" name=\"aie-title-decoder\" value=\"fde\">Forward Deployed Engineer, FDE<\/label>\n<label><input type=\"radio\" name=\"aie-title-decoder\" value=\"auto\">AI Automation Engineer<\/label>\n<div class=\"msq-choice-result\" data-for=\"applied\" hidden><strong>AI engineer family.<\/strong> Products built on existing models. Posted US ranges in the table: $180,000 to $320,000 a year at Scale AI, OpenAI and Anthropic, as listed on 17 October 2026.<\/div>\n<div class=\"msq-choice-result\" data-for=\"ml\" hidden><strong>ML engineer family.<\/strong> Training, serving and measuring models. Posted US ranges in the table: $166,000 to $500,000 a year at Databricks, Scale AI, OpenAI and Anthropic, as listed on 17 October 2026.<\/div>\n<div class=\"msq-choice-result\" data-for=\"fde\" hidden><strong>Forward deployed family.<\/strong> Making the vendor&#8217;s product work inside a customer&#8217;s systems. Posted US ranges in the table: $182,000 to $320,000 a year at Databricks, OpenAI and Anthropic, as listed on 17 October 2026. micro1&#8217;s contract version lists $40 to $60 an hour.<\/div>\n<div class=\"msq-choice-result\" data-for=\"auto\" hidden><strong>AI automation family.<\/strong> Wiring AI into business workflows. No posting in the table printed pay, and the board carried only four, all outside the US and India, on 17 October 2026.<\/div>\n<p class=\"msq-note\">This restates the article&#8217;s tables only. Ranges are as posted on the date shown, are not offers, and change.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"frequently-asked-questions\">Frequently asked questions<\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-q-1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Is an AI engineer the same as a machine learning engineer?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Not usually. In the postings we read, AI engineer titles mostly mean building products on existing models, while ML engineer titles mean training, serving and measuring the models themselves.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Are AI engineering jobs remote?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Mostly not. Of 450 AI engineering listings on our board on 17 October 2026, 37 were listed as remote.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Do AI engineering job postings have to show salary?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>In some US states they do. Colorado&#8217;s labour department says employers with a Colorado employee must post the pay or a range. California, New York and Washington are widely reported to have similar rules.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-4\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What does a forward deployed engineer do?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The postings and practitioners describe working inside a customer&#8217;s systems to make the vendor&#8217;s product work there, often with travel and plenty of customer contact.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Is AI automation engineer a common job title?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Not as a salaried title. Our board carried four on 17 October 2026, all outside the US and India, and Databricks listed one in Costa Rica.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-6\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Is the getAIwork board free?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes. The board at getaiwork.com\/board\/ is free and public, with no signup. It carried 1,702 live listings on 17 October 2026.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"msq-end\" id=\"ms-quiz-end\">\n<p><strong>Finished the page?<\/strong> The same five questions from the top, to see what stuck.<\/p>\n<button type=\"button\" class=\"msq-btn msq-start-test\">Test Your Understanding of This Article<\/button>\n<div class=\"msq-mount\"><\/div>\n<\/div>\n\n\n\n<!-- gaw-video --><section class=\"gaw-video\" id=\"video-summary\"><h2>Watch the 39 second summary<\/h2><div class=\"gaw-video-frame is-landscape\"><iframe id=\"gaw-yt-EBHBaO15fNM\" data-src=\"https:\/\/www.youtube.com\/embed\/EBHBaO15fNM?rel=0&#038;enablejsapi=1&#038;playsinline=1&#038;origin=https:\/\/getaiwork.com\" data-vid=\"EBHBaO15fNM\" title=\"AI Engineering Jobs: The Four Real Titles Explained\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div><div class=\"gaw-video-frame is-portrait\"><iframe id=\"gaw-yt-E9sjwvCUIbo\" data-src=\"https:\/\/www.youtube.com\/embed\/E9sjwvCUIbo?rel=0&#038;enablejsapi=1&#038;playsinline=1&#038;origin=https:\/\/getaiwork.com\" data-vid=\"E9sjwvCUIbo\" title=\"AI Engineering Jobs: The Four Real Titles Explained\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div><p class=\"gaw-video-note\">The video covers the takeaways of this guide in under a minute. More summaries are on <a href=\"https:\/\/www.youtube.com\/@getaiwork\" rel=\"noopener\" target=\"_blank\">getAIwork on YouTube<\/a>.<\/p><\/section><style>.gaw-video{margin:2rem 0 1.6rem}.gaw-video-frame{position:relative;aspect-ratio:16\/9;background:#0b0b0f;border-radius:12px;overflow:hidden}.gaw-video-frame.is-portrait{aspect-ratio:9\/16;max-width:400px;margin:0 auto}.gaw-video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.gaw-video-note{font-size:.9rem;color:#64748b;margin:.7rem 0 0}.gaw-video-play{position:absolute;inset:0;width:100%;height:100%;border:0;padding:0;margin:0;background:#0b0b0f;cursor:pointer;z-index:2}.gaw-video-play img{width:100%;height:100%;object-fit:cover;display:block}.gaw-video-play::after{content:'';position:absolute;left:50%;top:50%;width:84px;height:84px;margin:-42px 0 0 -42px;border-radius:50%;background:#FFD400 url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24'><path d='M8 5v14l11-7z' fill='%230B0B0F'\/><\/svg>\") center\/40px no-repeat;box-shadow:0 6px 24px rgba(0,0,0,.35)}.gaw-video-play:hover::after{transform:scale(1.06)}.gaw-video-frame.is-playing .gaw-video-play{display:none}@media (max-width:767px){.gaw-video-frame.is-landscape{display:none}}@media (min-width:768px){.gaw-video-frame.is-portrait:not(.is-only){display:none}}<\/style><script type=\"application\/ld+json\">[{\"@context\": \"https:\/\/schema.org\", \"@type\": \"VideoObject\", \"name\": \"AI Engineering Jobs: The Four Real Titles Explained\", \"description\": \"Full guide: https:\/\/getaiwork.com\/articles\/ai-engineering-jobs\/\", \"thumbnailUrl\": [\"https:\/\/i.ytimg.com\/vi\/EBHBaO15fNM\/maxresdefault.jpg\"], \"uploadDate\": \"2026-10-17T04:41:37Z\", \"duration\": \"P0D\", \"embedUrl\": \"https:\/\/www.youtube.com\/embed\/EBHBaO15fNM\", \"contentUrl\": \"https:\/\/www.youtube.com\/watch?v=EBHBaO15fNM\"}, {\"@context\": \"https:\/\/schema.org\", \"@type\": \"VideoObject\", \"name\": \"AI Engineering Jobs: The Four Real Titles Explained (vertical)\", \"description\": \"Full guide: https:\/\/getaiwork.com\/articles\/ai-engineering-jobs\/\", \"thumbnailUrl\": [\"https:\/\/i.ytimg.com\/vi\/E9sjwvCUIbo\/maxresdefault.jpg\"], \"uploadDate\": \"2026-10-17T04:41:54Z\", \"duration\": \"PT40S\", \"embedUrl\": \"https:\/\/www.youtube.com\/embed\/E9sjwvCUIbo\", \"contentUrl\": \"https:\/\/www.youtube.com\/watch?v=E9sjwvCUIbo\"}]<\/script><script>(function(){var L=\"gaw-yt-EBHBaO15fNM\",P=\"gaw-yt-E9sjwvCUIbo\";var id=(P!=\"gaw-yt-\"&&window.matchMedia(\"(max-width:767px)\").matches)?P:L;var f=document.getElementById(id);if(!f){return;}function load(){if(!f.src){f.src=f.getAttribute(\"data-src\");}}if(\"IntersectionObserver\" in window){var o=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){load();o.disconnect();}});},{rootMargin:\"600px\"});o.observe(f);}else{load();}var n=0;function hook(){if(!window.YT||!YT.Player){if(n++<100){setTimeout(hook,300);}return;}new YT.Player(id,{events:{onStateChange:function(e){if(e.data===YT.PlayerState.ENDED){e.target.cueVideoById(f.getAttribute(\"data-vid\"));}}}});}if(!document.querySelector(\"script[src*=\\\"youtube.com\/iframe_api\\\"]\")){var s=document.createElement(\"script\");s.src=\"https:\/\/www.youtube.com\/iframe_api\";document.head.appendChild(s);}f.addEventListener(\"load\",hook);})();<\/script><!-- \/gaw-video -->\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Platform statuses and listed pay change without notice. Pay figures are quoted only as listed by the poster on the date shown and are never a promise of earnings. This page was verified on the date shown and is rechecked on the weekly refresh.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>AI engineering jobs counted on 17 October 2026: AI engineer, ML engineer, forward deployed and AI automation titles, with US pay ranges only as posted.<\/p>\n","protected":false},"author":2,"featured_media":1127,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","rank_math_title":"AI Engineering Jobs: The Four Titles, Counted, Pay as Posted","rank_math_description":"AI engineering jobs are four titles in one search. We counted 450 on our board on 17 October 2026 and list US lab pay ranges exactly as posted.","rank_math_focus_keyword":"ai engineering jobs","rank_math_canonical_url":"","rank_math_breadcrumb_title":"","rank_math_facebook_title":"","rank_math_facebook_description":"","rank_math_facebook_image":"","rank_math_twitter_title":"","rank_math_twitter_description":"","rank_math_twitter_image":"","rank_math_pillar_content":"","rank_math_robots":[],"rank_math_advanced_robots":[]},"categories":[3],"tags":[],"class_list":["post-1130","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-jobs"],"_links":{"self":[{"href":"https:\/\/getaiwork.com\/articles\/wp-json\/wp\/v2\/posts\/1130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/getaiwork.com\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/getaiwork.com\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/getaiwork.com\/articles\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/getaiwork.com\/articles\/wp-json\/wp\/v2\/comments?post=1130"}],"version-history":[{"count":5,"href":"https:\/\/getaiwork.com\/articles\/wp-json\/wp\/v2\/posts\/1130\/revisions"}],"predecessor-version":[{"id":1137,"href":"https:\/\/getaiwork.com\/articles\/wp-json\/wp\/v2\/posts\/1130\/revisions\/1137"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/getaiwork.com\/articles\/wp-json\/wp\/v2\/media\/1127"}],"wp:attachment":[{"href":"https:\/\/getaiwork.com\/articles\/wp-json\/wp\/v2\/media?parent=1130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/getaiwork.com\/articles\/wp-json\/wp\/v2\/categories?post=1130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/getaiwork.com\/articles\/wp-json\/wp\/v2\/tags?post=1130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}