Refolk
TeardownMarket and talent intelligence

Reading a Competitor's Roadmap From Its Open Roles

You can turn one quarter of a named competitor's public postings and org changes into two to three product or market bets, each with a confidence level.

14 min readLast reviewed July 31, 2026Read as Markdown

Key takeaways

  • The signal is the cluster's tightness, not its size: five same-function reqs in two weeks encode urgency that eight scattered over a year do not.
  • Between 18% and 27% of active postings are likely ghost jobs, so an analyst who skips the ATS cross-check over-reads roughly one in four signals as strategy.
  • Rarer functions shout louder per req: Refolk's index holds 16,492 US Enterprise Account Executives against 5,491 ML Engineers, so an equal count of net-new ML reqs is a larger relative bet.
  • The average US posting fills in about 41 days, which makes age itself a usable discard filter for auto-renewed evergreen listings.
  • A backfill inherits an existing seat and vendor relationships; only net-new headcount, confirmed against a departure scan and a first-time-role test, carries a real expansion signal.
  • In-person roles posted outside HQ are the cleanest bet to read because they cannot be faked remotely and tie directly to local budget.

This guide walks one named example all the way from raw job data to a ranked set of a competitor's likely next moves. It is for strategy analysts, talent-intelligence researchers, and operators who need to know what a rival is about to build and where it is expanding, using nothing but public postings and org changes. By the end you can reconstruct two to three of a competitor's next product or market bets from a single quarter of its public listings, and attach a defensible confidence level to each.

Most pages on this topic stop at "watch their job postings." That is advice, not a method. Watching does nothing until you can tell a cluster from a coincidence, a net-new hire from a backfill, and a real req from a ghost. This is the worked example, with the queries, the counts, and the two wrong turns that trip up nearly everyone.

What a competitor's open roles actually tell you

A company's open roles are a pre-committed budget decision made months ahead of any announcement, so a tight cluster of related postings reveals a direction before the product ships. Headcount is expensive and slow to approve. When a rival opens five machine learning engineer roles in one quarter, someone has already signed off on the salaries, the tooling, and a team lead. That commitment surfaces in postings long before it surfaces in a press release.

The direction is well attested even if the exact lead time is not. One documented case saw a competitor post five net-new data-engineering roles in a single week, one of them an "ML Infrastructure Lead," and launch a data product in a new market roughly four months later. Another proxy: across 528 verified cases, the median gap from a Product Hunt launch to a Series A announcement was 265 days, with 70.6% of raises inside twelve months. Neither number is a hiring-to-launch law, so treat a quarter as your read window and track month over month to catch acceleration.

Headcount is a pre-committed budget decision, which is why postings reveal direction months before an announcement does.

The read fails in one predictable way: people treat a single posting as a trend. A lone senior req is usually routine. Intelligence starts at the cluster, defined across a department, a region, a capability, or a seniority band. Everything below is built to find real clusters and throw out the fakes.

The worked example: one competitor, one quarter

The rest of this guide follows a single fictional target so you can run the same steps against your own. Call it Northwind, a mid-stage B2B software company whose home market is the United States and whose ATS is Greenhouse. The window is one quarter. The goal is two to three bets with confidence levels attached.

Here is what a raw pull returned before any cleaning, normalized to one row per job with title, department, location, and posted date. Straight off the careers page it looked like a hiring spree. It was not. Roughly a quarter of it was noise, and one cluster that looked like growth turned out to be a backfill. Those two corrections are the whole value of the method.

From raw postings to ranked bets

  1. Scope
    Fix one competitor and one quarter, find the ATS slug
  2. Pull
    Get structured postings from the ATS API, not the careers page
  3. De-noise
    Drop ghosts, evergreens, and postings past the 41-day fill benchmark
  4. Cluster
    Count by function, seniority, region, and product keyword, per month
  5. Classify
    Tag each cluster expansion, backfill, or restructuring
  6. Map and rate
    Translate expansion clusters into bets and assign confidence
The pipeline turns a noisy job list into two or three bets, each with a confidence level.

Where to pull postings and how fresh each source is

Pull from the applicant-tracking-system public API, treat aggregators as corroboration only, and read WARN filings for the departure side. The ATS endpoint is the company's own live record; everything else lags, caches, or duplicates it.

Greenhouse's public Boards API returns structured job data over plain HTTP with no auth, and the same holds for Lever, Ashby, SmartRecruiters, and Workday. That gives you title, department, location, posted date, and full description in one clean pull. LinkedIn, Indeed, Glassdoor, and niche boards like Dice are primary in the sense that a company might post on one and not another, but they are noisy and laggy. For the departure and downsizing side, WARN filings are public: one aggregator pulls official notices from 49 states, updated daily, with more than 42,741 notices tracked, and another holds more than 82,000 notices covering 8.87 million workers.

SourceWhat it gives youCurrency
ATS public APIStructured live listings, full JDLive, daily
Aggregator boardsBroad reach, corroborationNoisy, laggy
WARN filingsDepartures, restructuringDaily to twice-monthly

WARN filings carry a quiet advantage. The federal WARN Act requires employers with 100 or more staff to give 60 days' notice of a mass layoff, and states like New York and New Jersey require 90 days and cover employers with 50 or more. Those advance-notice dates can sit in the future, which means a filing lets you spot a restructuring before the layoff actually happens. That built-in lead time sharpens the net-new-versus-backfill call later.

De-noising: why one in four postings is not a real signal

Before counting anything, throw out the fakes, because between 18% and 27% of active postings are likely ghost jobs and will otherwise inflate every cluster you build. De-noising is not optional cleanup. It is the step that decides whether your read is intelligence or fiction.

A Greenhouse internal review found 18% to 22% of posts were ghost listings, and nearly 70% of companies on the platform posted at least one ghost job in a single quarter. A separate LinkedIn-data analysis put the share of active US postings that are likely ghosts at about 27.4%. The mechanics are simple: ATS platforms auto-renew listings every 30 to 90 days, sometimes across multiple boards, even when hiring is paused or the role was quietly filled. That manufactures fake freshness. On top of that, a survey found 68% of managers had postings live longer than 30 days and one in ten kept them open past six months.

18-27%
Share of active postings that are likely ghost jobs
Skip the ATS cross-check and roughly one in four signals reads as strategy when it is noise.

Two thresholds do most of the work. First, the average US posting fills in about 41 days, so treat that as a freshness cutoff: anything older warrants source verification and is disproportionately an auto-renewed evergreen. Second, if a job appears on LinkedIn or Indeed but is absent from the company's own ATS portal, it is likely stale, filled, or cached by an aggregator that never got the removal signal. Drop it.

BenchmarkValueWhat it sets
Ghost-job share (Greenhouse)18-22%Why de-noising is mandatory
Ghost-job share (LinkedIn data)~27.4%Upper bound on noise
Avg US time-to-fill~41 daysFreshness cutoff
ATS auto-renew window30-90 daysSource of fake freshness

For Northwind, de-noising cut the raw pull by about a fifth. Two "always-on" support reqs, an auto-renewed senior sales role two quarters old, and a duplicate posting reposted by three staffing agencies all came out. What remained was the live-and-real subset worth clustering.

Clustering: functions, seniority, region, and keyword

Group the surviving postings into clusters by function, seniority, region, and product keyword, then count each cluster per month; the tightness of the cluster, not its raw size, is the signal. Five same-function roles posted within two weeks reads as compressed urgency and real headcount commitment. Eight scattered across a year do not.

The month-over-month ramp is the stronger version of this. Three AI/ML roles in the first month, five in the second, eight in the third, all senior, is a clear acceleration signal. Flat counts are not. Break each function down by seniority too, because a cluster weighted toward senior and lead titles signals a team being stood up rather than a line being backfilled.

There is a weighting nuance that most analysts miss: rarer functions shout louder per req. In Refolk's index there are three times as many Enterprise Account Executives as ML Engineers in the US market, so an equal count of net-new ML reqs represents a larger relative bet and deserves higher confidence.

Function (current US professionals)CountShare of the two
Enterprise Account Executive16,49275%
Machine Learning Engineer (ML skill)5,49125%

Read that table as a calibration tool. Four net-new AE reqs against a base of 16,492 is a smaller relative move than four net-new ML reqs against a base of 5,491. Same headcount, different loudness.

Geography deserves its own cluster because it is the cleanest bet to read. When a company begins posting in-person roles in countries outside its HQ, that typically indicates market entry or regional expansion. An onsite role cannot be faked remotely; it ties to local budget, a local lease, and local vendor evaluation. Refolk's index shows how thin some markets are, which affects how you weight the signal.

Title (current professionals)United StatesGermanyUS:DE ratio
Machine Learning Engineer (ML skill)5,491507~10.8x

If Northwind posted two onsite ML roles in Germany, a market with roughly a tenth the ML talent of the US, that is a louder market-entry signal than the raw count suggests, because filling those seats locally is genuinely hard.

For Northwind, clustering surfaced three candidates: a ramp of senior ML and data-pipeline roles (3 then 5 then 6 across the quarter), a small cluster of enterprise account executives and solutions engineers based in a new European city, and a first-ever "RevOps Manager" title.

Pulling and cleaning postings by hand is the slow part of this whole method. Refolk collapses the scope, pull, and de-dupe steps into one plain-English query, so you can spend your time on the classification and mapping that actually require judgement.

The step-by-step procedure

Run these seven steps in order against your own target. Steps one through five are analyst work; steps six and seven bring in a strategy lead. The whole pass is roughly two days for one competitor and one quarter.

Reconstructing a competitor's bets from one quarter

  1. Scope the target and window
    Pick one named competitor and one quarter, then find its ATS slug. Done when you have a defined date range and a confirmed ATS endpoint.
  2. Pull raw postings from the ATS
    Hit the Greenhouse, Lever, or Ashby public API for title, department, location, posted date, and description. Done when you have a normalized one-row-per-job table.
  3. De-noise the list
    Drop evergreen and high-turnover roles, flag anything older than ~41 days, and cross-check aggregators against the ATS to catch ghosts. Done when you have a live-and-real subset.
  4. Cluster by function, seniority, region, and keyword
    Count roles per cluster and per month across the quarter. Done when you have a table showing a ramp or a flat line.
  5. Separate net-new from backfill
    For each cluster run a departure and new-hire scan and a first-time-role test, then net against WARN filings and headcount trend. Done when each cluster is tagged expansion, backfill, or restructuring.
  6. Map surviving clusters to bets
    Apply the role-to-bet lookup to translate each expansion cluster into a product or market move. Done when you have two to three candidate bets with supporting roles listed.
  7. Assign confidence
    Rate each bet high for a multi-department cluster plus an exec hire plus explicit JD language, low for a single posting. Done when every bet carries a confidence level and discarded false readings are documented.

Net-new versus backfill: the check that changes the answer

A backfill replaces someone who left and inherits their seat and vendor relationships; an expansion hire is net-new headcount and carries a far stronger signal. Confusing the two is the most expensive error in this whole method, because a backfill cluster looks exactly like a growth cluster until you check.

Three data pulls settle it. Run a departure and new-hire scan on a professional network: did the predecessor leave in the same title around the same time? A matching exit means the req is probably a replacement. Run a first-time-role test: has this exact title ever existed at the company before? A first-ever RevOps Manager or first SDR means a function is being built from zero, and research suggests a first-time role in a new function shows two to three times higher purchase intent than a backfill. Finally, net the cluster against total-headcount trend and WARN filings, because one team can grow while the company cuts elsewhere.

Classifying a cluster

Company growing (headcount up)Company shrinking (WARN filings)
Backfill amid cuts
Discard, this is churn not strategy
Net-new amid cuts
A deliberate bet funded by cutting elsewhere, rate carefully
Backfill during growth
Routine replacement, do not read as a new bet
Net-new during growth
Strongest expansion signal, this is where bets come from
Predecessor left / title existedNo predecessor / first-ever title
Two questions - is the headcount new, and is the wider company growing - place any cluster in one of four cells.

For Northwind, the check reversed one reading. The European AE cluster passed: the titles were first-ever in that region, no matching departures showed up, and headcount was trending up. Real market entry. The RevOps Manager passed too, as a first-ever function build. But the ML ramp partly failed. Two of the six ML roles matched senior departures from the same team in the prior quarter, visible as exits on a professional network. Those two were backfill. The remaining four were still net-new and still a real cluster, but the bet is smaller than the raw count of six implied.

Mapping roles to bets, and rating confidence

Translate each surviving expansion cluster into a candidate bet with a documented role-to-bet lookup, then rate confidence by how many independent signals point the same way. A bet backed by one posting is a guess; a bet backed by a multi-department cluster, an executive hire, and explicit job-description language is a call you can defend in a leadership review.

The lookup is direct. ML engineers or data scientists map to AI/ML feature investment or data-pipeline build-out. A new CRO means the sales playbook changes, a new CMO means marketing shifts, a new CTO means the tech stack is under review. In-person roles outside HQ map to market entry. A first-ever RevOps or SDR means a go-to-market function is being built from zero. Compliance and security engineers whose job descriptions cite SOC 2, ISO 27001, FedRAMP, or HIPAA and phrases like "enterprise prospects" map to an enterprise or regulated-tier push.

title: Confidence rubric for a competitor bet
note: Score each bet, then require corroboration for any product or market claim. A lone C-level hire may flag direction on its own but still needs one more signal for a bet.
HIGH   = multi-department cluster + exec hire + explicit JD keyword language
MEDIUM = single-department cluster (3+ net-new roles) OR month-over-month ramp
LOW    = one or two postings, no ramp, no corroborating exec or JD language
DISCARD = failed de-noise, backfill, compliance-only, or agency-repost

Questions practitioners ask

How many job postings does it take before I call something a real signal?

Require a cluster, not a posting. Practitioners converge on roughly five same-function roles inside a two-week window, or a month-over-month ramp such as three roles then five then eight. One senior req is normal backfill until proven otherwise. The only exception is a lone C-level hire, which can flag a direction change on its own but still needs corroboration before you attach a product or market bet to it.

How do I tell a backfill apart from net-new expansion hiring?

Run three checks per cluster. First, scan a professional network for a same-title departure in the same period; a matching exit means the req is likely a replacement. Second, apply a first-time-role test: has this exact title ever existed at the company before? A first-ever RevOps or SDR hire builds a function from zero. Third, net the whole thing against total-headcount trend and WARN filings so a growing team inside a shrinking company is not read as company-wide growth.

Why pull from the ATS API instead of the company careers page or LinkedIn?

The applicant-tracking-system public endpoint carries the live, structured record with posted dates and full descriptions, and it is the single source of truth the company controls. Greenhouse, Lever, Ashby, SmartRecruiters, and Workday all expose this over plain HTTP with no auth. Aggregators like LinkedIn and Indeed lag, cache, and duplicate, which is exactly why a role present on an aggregator but absent from the ATS is a prime ghost-job suspect.

What is the lead time between a competitor's hiring and its product launch?

No rigorous public study isolates that gap, so treat any precise number with suspicion. The available proxies point at a matter of months: one worked case saw five net-new data-engineering roles precede a market-entering launch by about four months, and the median Product Hunt launch to Series A interval is 265 days. Use one quarter as your window and track month over month to catch acceleration rather than betting on a single lead-time figure.

How big a problem are ghost and stale job postings?

Large enough that de-noising is mandatory. A Greenhouse internal review found 18% to 22% of posts were ghost listings, and a LinkedIn-data analysis estimated about 27.4% of active US postings are likely ghosts. ATS platforms auto-renew listings every 30 to 90 days even when a role is paused or filled. Skip the cross-check and you will over-read roughly one in four signals as strategy.

Read next