DEV Community

Cover image for OpenAI has 34 open "Forward Deployed" jobs. Palantir has 70.
Matthew Curtis
Matthew Curtis

Posted on

OpenAI has 34 open "Forward Deployed" jobs. Palantir has 70.

OpenAI has 34 open jobs with "Forward Deployed" in the title. Twenty-five of them were posted since August 1, and seven went up on November 5 and 6. They're spread over 14 cities, and most of them sit in a department called Forward Deployed Engineering, which has 37 openings.

Palantir has 70, and its oldest open posting is a Forward Deployed Software Engineer listing dated December 2009. Cursor has 8, Anthropic has 8 and Adobe has 6. Of the ten companies I checked on November 8, only Ubisoft had none.

I didn't get this from a jobs site. Most company career pages run on an applicant-tracking system, and five of the common ones (Greenhouse, Lever, Ashby, Workday, SmartRecruiters) serve the whole board as public JSON. It's the same endpoint the careers page calls. The data is sitting there, but nobody opens ten of those every Monday and compares them with last week.

So I pulled all ten in one run with ATS Job Board Scraper, an Apify Actor I wrote. The run made 19 requests, took 65 seconds and cost $1.63. It returned 1,356 open roles matching "engineer", and no request failed. Every number below is from that run.

If you sell to engineering teams and read a new role as a sign of budget, or you're job hunting and want to hear about a role the day it opens, or you use open roles as a headcount proxy, put your own companies in the input and you'll get the same tables.

The input

{
  "boards": [
    "https://boards.greenhouse.io/anthropic",
    "https://boards.greenhouse.io/stripe",
    "https://boards.greenhouse.io/figma",
    "https://boards.greenhouse.io/coinbase",
    "https://jobs.lever.co/palantir",
    "https://jobs.ashbyhq.com/openai",
    "https://jobs.ashbyhq.com/ramp",
    "https://jobs.ashbyhq.com/cursor",
    "https://adobe.wd5.myworkdayjobs.com/external_experienced",
    "https://jobs.smartrecruiters.com/Ubisoft2"
  ],
  "query": "engineer",
  "maxItems": 2000
}
Enter fullscreen mode Exit fullscreen mode

Each URL is the "View all jobs" link from that company's careers page. The Actor works out which system it's looking at from the host name, so there's nothing else to configure. These ten cover all five systems.

query keeps a role when every word in it appears in the title, department, team, location or employment type. That's looser than it sounds: 67 of the 1,356 have no "engineer" in the title and matched on a department or team name. Leave query empty to track every open role.

The 19 requests break down like this. A Greenhouse, Lever or Ashby board arrives whole in one request, and there are eight of those. Ubisoft's SmartRecruiters board took one page. Workday pages by 20 and is searched on the server first, so Adobe took ten.

Pricing is $0.005 to start a run plus $0.0012 per record, so 1,356 records is $1.63. One board of 50 roles is about $0.065. There's no login or API key involved.

Who is hiring

Employer Roles matching "engineer" New since Nov 1 "Forward Deployed" in title Pay band published Median band midpoint (USD)
OpenAI 396 21 34 82% $347,500
Anthropic 260 9 8 95% $402,500
Stripe 190 16 3 0% n/a
Palantir 185 5 70 0% n/a
Coinbase 99 9 2 99% $208,125
Adobe 78 5 6 0% n/a
Cursor 46 0 8 0% n/a
Figma 41 2 1 93% $264,500
Ramp 39 2 2 100% $255,000
Ubisoft 22 2 0 0% n/a

OpenAI and Anthropic have 656 of these roles between them. The other eight companies have 700.

The "new" column is the one I'd watch. Seventy-one roles were posted between November 2 and November 8: 11, 10, 12, 18 and 18 on the weekdays, then one on Saturday and one on Sunday. Stripe posted 16, which is 8% of its open engineering roles in a single week, and three of those are the same Staff Security Engineer, Abuse Control listing. Cursor posted none. OpenAI posted 21, and a third of them were in Forward Deployed Engineering.

Back to "Forward Deployed"

The phrase is in 134 of the 1,356 titles. Palantir accounts for 70, which is 38% of its engineering roles. Thirty-five of those have "Government" in the title and 31 are new-grad or internship postings.

The other 64 are spread over eight companies. Sixty-two of them carry a posted date, and 47 of those dates fall after August 1.

OpenAI's 34 split two ways. Some are by city, with listings for Tokyo, Seoul, Singapore, Sydney, Abu Dhabi, London, Madrid, Munich, Zurich and Paris. The US ones are split by industry: healthcare, legal, financial services, cyber and life sciences. Fourteen share one pay band, $185K to $300K, which sits well under the $347,500 midpoint of OpenAI's engineering bands overall.

Cursor's eight were all posted since June 22, and three of them are Regional Director roles. Four of Anthropic's eight are manager roles. Coinbase has a Forward Deployed Engineer for its own finance department and a Forward Deployed Engineer Intern in HR Technology. I'm not sure where those two get deployed to.

My reading, which one snapshot can't prove, is that the title is moving from Palantir into companies that sell AI to large customers. A weekly count of title words would settle it, and that's cheap to set up.

One caution about dates. The posted date means different things on different systems, and a re-posted evergreen listing looks new. I trust a week-over-week diff more than a date, and the monitor further down is built on one.

What the pay bands say

Whether a company publishes pay depends on how its board is configured. Five of these ten publish a band on 82% to 100% of their roles, and all five are on Greenhouse or Ashby. Stripe (Greenhouse) and Cursor (Ashby) have the field switched off. Palantir on Lever, Adobe on Workday and Ubisoft on SmartRecruiters show none.

Among the ones that publish, Anthropic's bands sit highest. The median midpoint is $402,500 against $347,500 at OpenAI. At Anthropic, 123 of 221 bands have a midpoint of $400K or more. At OpenAI it's 43 of 319. The most common band is $405K to $485K at Anthropic (45 roles) and $266K to $445K at OpenAI (43 roles). Both top out at $850K, on 28 Anthropic roles and 3 OpenAI roles.

I wouldn't lean on those midpoints. These are posted base-pay bands, some of them are very wide (one Anthropic band runs from $280K to $850K), and OpenAI's listings add "Offers Equity" without a number. A midpoint tells you how a company frames a role in public. It doesn't tell you what anyone was offered.

The medians cover annual bands in US dollars only. I left out bands in pounds, euros, rupees and other currencies. I also left out intern postings, which put a monthly rate or what looks like an hourly one in the same fields (Ramp's say $12.5K per month). And I dropped two bands that are typos on the company's own board: one Anthropic posting lists $1 to $2, and one Coinbase posting tops out at $179,300,152.

Turning it into a Monday digest

I don't want to rerun this and compare tables by hand, so I schedule it through Dataset Diff Monitor, another Actor of mine. It runs the scraper, compares the new dataset with last week's by id, and posts one message listing what was added and what was removed.

{
  "sourceActorId": "mdcurt/ats-job-board-scraper",
  "sourceInput": { "boards": ["…the ten URLs above…"], "query": "engineer", "maxItems": 2000 },
  "keyFields": ["id"],
  "ignoreFields": ["scrapedAt", "description", "updatedAt", "postedAt"],
  "notifyOn": ["added", "removed"],
  "firstRunBehavior": "snapshot",
  "title": "Engineering hiring at 10 target employers",
  "labelField": "title",
  "urlField": "url",
  "slackWebhookUrl": "https://hooks.slack.com/services/XXX/YYY/ZZZ"
}
Enter fullscreen mode Exit fullscreen mode

Schedule it for Monday at 07:00 (cron 0 7 * * 1). The first run stores a baseline and stays quiet. From the second run on you get the roles each company opened and closed that week, with titles and links.

Two choices in there need explaining. id is the key because it's built from the system, the board and the job number, so it stays the same from run to run. The four ignored fields change on every run or whenever someone edits a posting, and I only care about roles appearing and disappearing.

On cost: the scraper is $1.63. The monitor adds $0.02 to start, $0.001 per row it compares and $0.01 per notification, which is $1.39 for 1,356 rows. Together that's about $3.02 a week for ten employers. Discord, Telegram and plain webhooks work in place of Slack.

To pay less, narrow query, or run the scraper on its own every day with the previous run's ids in knownIds. It skips those, so a daily run only pays for new postings.

A few other ways to point it:

  • For sales signals, set notifyOn to ["added"] and query to the function you sell to, such as "data", "security" or "platform".
  • For a job search, set location to a city such as "London" and query to "senior engineer", and run it daily.
  • For a headcount proxy, leave query empty, raise maxItems to 10000 and track added minus removed per employer each week.

Calling it from an agent

Pass one job URL as the only board and you get one request and one record back for $0.0062. The Actor works through Apify's MCP server at https://mcp.apify.com/?tools=mdcurt/ats-job-board-scraper.

Fine print

  • It reads career pages hosted on Greenhouse, Lever, Ashby, Workday or SmartRecruiters. Paste the hosted URL, since a custom domain like careers.example.com won't be recognised. Taleo, iCIMS, SuccessFactors and Workable aren't covered.
  • The five endpoints are the public job-board APIs that the career pages call themselves. There's no login and no CAPTCHA. The Actor returns a description snippet of up to 300 characters and a link to the posting. It doesn't copy full postings or collect contact details.
  • Greenhouse, Lever and Ashby return the whole board in one request. Workday and SmartRecruiters are paged through to the last page. Version 1.0.1 fixed a bug that stopped Workday boards at 40 jobs, which I found while writing this post.
  • Lever's postedAt is the date the listing was created, so evergreen listings look ancient. Palantir's oldest says 2009.
  • Adobe's Workday list gave a posted date for 38 of its 78 roles, so its "new" count is a floor.
  • Greenhouse departments are whatever the company typed in. Stripe's are cost-centre codes such as "5112 General University".
  • The "Forward Deployed" counts are titles that contain the phrase, counted once per role.
  • "Pay band published" counts a band in any currency. The medians use 319 bands for OpenAI, 221 for Anthropic, 71 for Coinbase, 33 for Figma and 35 for Ramp.
  • salaryMin and salaryMax are only filled when the band is in the posting.
  • The 1,356 records and the exact input are in the Actor's source under examples/hiring-monitor-target-employers/. The same input is saved as the example task "Monitor engineering hiring at 10 target employers" on the Actor's Example tasks tab.

If you run this on your own list and see a title spreading the way this one has, leave a comment. I'd like to know which one.

Top comments (0)