19% of Q2 2026 Job Posts Were Ghosts. Source People Instead.
Ghost jobs poisoned competitor hiring intel in 2026. Here is why JD scraping broke and which people-side sourcing signals still work.
Every sourcing playbook I have seen in the last three years starts the same way: scrape competitor job descriptions, infer their roadmap, and reverse-engineer the shortlist. That playbook broke in 2026. Between Pennsylvania's Ghost Job Postings Prevention Act, Ontario's January 1 disclosure rules, and Greenhouse's own admission that 19% of Q2 2026 postings showed no hiring activity, the competitor JD board is now a poisoned dataset, and a share of it was posted specifically to poison yours.
The competitor JD board is a poisoned dataset
Ghost postings - roles that are already filled, do not exist, or are decoys - now account for roughly 19% to 47% of what sourcers scrape from competitor career pages. That is not a data-quality issue you can clean around. It is a poisoned-well problem, and 2026 legislation is about to make the noise louder before it makes it quieter.
Three data points frame the scale:
- Greenhouse's own client data shows 19% of jobs advertised in Q2 2026 received applications but produced no meaningful hiring activity afterward, per WSJ reporting.
- MyPerfectResume's 2024 survey of 753 U.S. recruiters found 8 in 10 said their company posts jobs that are filled or do not exist, and 17% admitted up to three-fourths of their postings are fake.
- ResumeBuilder's employer sample of 649 companies posting ghost ads: 26% posted 1 to 3 fake listings, 19% posted 10, 10% posted 25, and 13% posted 75 or more in a single year.
If you are scraping a competitor career page for hiring intel and treating each req as a signal, roughly one in five of those signals is confirmed noise before you even account for decoys, evergreen listings, and JDs kept live for pipeline theater. The structural backdrop: the hires-per-posting ratio has roughly halved since 2019, from 8 in 10 to 4 in 10, according to a 2025 Columbia Law Review analysis. Fewer of any given posting turns into a hire, so more of any given scrape is dead weight.
Why recruiters post fake jobs, and which bucket should worry sourcers
Recruiters post ghost jobs for three main reasons, and one of them is specifically designed to corrupt your sourcing pipeline. From the MyPerfectResume survey:
- 38% post to maintain job-board presence when not actively hiring.
- 36% post to test posting effectiveness (title, copy, comp band).
- 26% post to gain competitive market insight.
That third bucket is the important one. Roughly a quarter of competitor postings you scrape were listed specifically to see who bites, what other companies post in response, and what compensation gets floated in the market. When you scrape those, you are not gathering intel. You are handing it over.
A quarter of competitor postings you scrape were listed specifically to see who bites. Scraping them is not intel gathering. It is intel donation.
The naive counter-argument is: "Senior and executive reqs must be real, nobody fakes a VP hire." Wrong. Fake listings hit senior (53%) and executive (45%) roles nearly as often as entry-level (63%) and mid-level (68%). The premium end of the JD board is only marginally cleaner than the junior end.
Pennsylvania, Ontario, New York, Texas: the 2026 legal wall
Four jurisdictions moved against ghost jobs in the first half of 2026, and Pennsylvania went further and reached the sourcing side too. If you scrape competitor JDs at scale, you now have a compliance surface that did not exist eighteen months ago.
| Jurisdiction | Instrument | Effective / Status | Key provision |
|---|---|---|---|
| Pennsylvania | HB2321 (Rep. Jim Prokopiak) | Introduced March 26, 2026 | $1K to $5K base fine; $25K per applicant for data-mining |
| Ontario | Public job posting rules | January 1, 2026 | 25+ staff must disclose vacancy status, pay, AI use; up to $100K CAD |
| New York | S8877 (Sen. Michael Gianaris) | Passed Assembly June 2, 2026 | 100+ staff and third-party platforms must disclose timing |
| Texas | AG Ken Paxton CID to LinkedIn | July 14, 2026 | Investigating how LinkedIn verifies job listings |
Pennsylvania's HB2321, introduced by Rep. Jim Prokopiak on March 26, 2026 and now sitting in the House Labor and Industry Committee, is the one that changes sourcing itself. It requires disclosure of hiring timeline, intended hire and start dates, salary range, extent of AI use in hiring, and how many times the role has been posted in the prior year. Base penalties run $1,000 to $5,000. The data-mining provision reaches $25,000 per applicant for employers who retain or mine applicant data from ghost postings, and employers under 50 staff are exempt. Read the mechanism carefully: a company that scrapes competitor JDs, posts corresponding decoy roles to attract those competitors' candidates, and mines the inbound resumes is now looking at five-figure per-applicant exposure. That is the exact behavior 26% of surveyed recruiters admitted to.
Ontario's regime is more sourcer-friendly. Every publicly advertised posting from an employer with 25+ staff must now state whether it is for an existing vacancy, and employers who fail to follow up with interviewed candidates within 45 days face fines up to $100,000 CAD. Sourcing teams can use the absence of the vacancy-status language as a live disqualifier for any Canadian competitor intel. Free ghost-job filter, courtesy of the province.
New York's S8877, sponsored by Sen. Michael Gianaris, passed the Assembly on June 2, 2026 and would apply to employers with 100+ staff and to third-party platforms, requiring disclosure of if and when hiring is expected. Gianaris put it plainly after Senate passage: "No more applying to jobs that don't actually exist." The subtext for sourcers is the same. No more sourcing off jobs that do not actually exist either.
The people-side signals that still work
The durable sourcing signal in 2026 lives on the candidate, not the posting. Four signals survive the ghost-job era, and none of them can be spoofed by a competitor's talent-brand team.
- Tenure changes on LinkedIn. A senior engineer flipping from "3 years at Databricks" to "1 month at a stealth co" is a real event. A JD is not.
- GitHub contribution shape. New repos, first-time contributions to a specific org, or a sudden spike in commits to an inference-adjacent project reveals what someone is actually building.
- Team-level headcount moves. Five people from the same sub-team changing employers inside 90 days tells you more than fifty scraped JDs.
- Conference talks, papers, and PR reviews. Public artifacts of expertise, timestamped and unfakeable.
This is the exact gap Refolk closes. Instead of scraping competitor career pages and hoping the reqs are real, you describe the person you want in plain English and get a ranked shortlist pulled from GitHub, LinkedIn, and the open web. The signal is the candidate, not the JD.
Team-level headcount moves are the highest signal-to-noise input available in 2026 because they are self-verifying: a person either changed jobs or they did not. A JD, by contrast, is a claim about the future that 19% to 47% of the time turns out to be false. When three senior engineers from the same infra team at a single company all update their profiles inside a quarter, you have discovered a real hiring event, whether or not the destination company ever posted a req.
The ratio math: 21,270 recruiters, 45,993 senior Python engineers
The talent pool is smaller than the noise around it. Refolk's index contains 55,204 U.S. software engineers with Python, of which 45,993 (~83%) are Senior or Staff level, and 21,270 U.S. technical recruiters and sourcers - concentrated in Austin, Seattle and the Bay Area - competing for that pool. That works out to roughly 2.2 senior Python engineers per recruiter.
| Segment | Figure | Source |
|---|---|---|
| U.S. Software Engineers with Python (all levels) | 55,204 | Refolk index |
| U.S. Senior/Staff Software Engineers with Python | 45,993 | Refolk index |
| Share of Python SWE pool that is Senior/Staff | ~83% | Derived |
| U.S. Technical Recruiters / Sourcers | 21,270 | Refolk index |
| Senior Python SWE per U.S. tech recruiter | ~2.2:1 | Derived |
| Greenhouse Q2 2026 postings with no hiring activity | 19% | WSJ / Greenhouse |
| Recruiters admitting ≥75% of postings are ghosts | 17% | MyPerfectResume 2024 |
| Employers posting 75+ ghost listings per year | 13% | ResumeBuilder |
Do the comparison directly. A recruiter monitoring 500 target-company engineers for tenure and GitHub changes is covering roughly 1.1% of the entire senior Python universe in the country, all of them real, all of them verifiable. A recruiter scraping 500 competitor JDs is watching a list where 95 to 235 of the reqs are ghosts, and where roughly 130 of them were posted specifically to see who bites.
The math is not close.
What to actually do this quarter
Retire the JD scrape as the primary hiring-intel input and rebuild the pipeline around candidate-side signals. Concretely:
- Kill the competitor JD scraper, or at minimum stop treating its output as a signal. Downgrade it to a weak tiebreaker.
- Instrument tenure-change alerts on named target lists. Pick 300 to 800 engineers at the 8 to 12 companies you actually care about - Databricks, GitHub, Adobe, Omada Health are the kind of names that anchor a real senior-Python watchlist. Watch them, not their employers' career pages.
- Add GitHub as a first-class source. New repos, contribution graphs, and org-level commit patterns are the closest thing to a real-time roadmap leak that exists.
- Use Ontario's disclosure language as a filter. For any Canadian competitor posting, require the "existing vacancy" statement. Reject the rest.
- Audit your own postings before HB2321 moves. If Pennsylvania's bill clears committee, the $25K-per-applicant data-mining exposure lands on employers, not vendors.
For the sourcing motion itself, plain-English search over a people-side index is now faster than any scraper pipeline. Refolk was built for exactly this: ask for "ex-Stripe payments engineers who joined a Series A in the last 90 days and have recent Rust commits" and get the shortlist, without touching a JD board. When the postings are noise, the query has to run against the people.
FAQ
What counts as a ghost job under Pennsylvania's HB2321?
Under Rep. Jim Prokopiak's HB2321, introduced March 26, 2026, a ghost job is any posting that fails to disclose the hiring timeline, intended hire and start dates, salary range, extent of AI use in hiring, and how many times the role has been posted in the prior year. Base penalties run $1,000 to $5,000 per violation. The data-mining provision reaches $25,000 per applicant, which is what makes this the first bill to reach the sourcing side rather than only the posting side. Employers under 50 staff are exempt.
Are executive-level competitor postings more reliable than junior ones?
No, and this is the counterintuitive finding sourcers keep missing. Fake listings hit executive roles at 45% and senior roles at 53%, versus 63% for entry-level and 68% for mid-level. VP and director postings are only marginally less poisoned than IC reqs, so building an exec search around a competitor's leadership page is nearly as risky as building a college pipeline off their intern JDs.
Which people-side signals are hardest to fake?
GitHub contribution graphs, tenure changes on LinkedIn, timestamped conference talks and papers, and coordinated team-level headcount moves. Each of these is a public artifact tied to a specific person on a specific date. A competitor's talent-brand team cannot spoof a real engineer's commit history or job change, which is why Refolk indexes candidate-side signals across GitHub, LinkedIn, and the open web instead of scraping JDs.
How do I know if my sourcing vendor is scraping ghost jobs?
Ask what fraction of their "hiring intent" signal is derived from public JD scrapes versus candidate-side changes. If the answer is majority JD-derived, benchmark their shortlists against Greenhouse's 19% Q2 2026 inactivity floor and assume the real error rate is higher because of decoys. A vendor that cannot separate real reqs from ghosts is selling noise at 2026 prices.
Try it on the search you came here for
Stop building boolean strings. Just describe the person.
Type one sentence. I plan the search, read GitHub, public LinkedIn and Crunchbase records, and the open web as it is right now, and hand back a ranked list with the reason next to every name.
01Describe them
One plain sentence. Role, city, stack, stage, whatever matters to you.
02I read the web live
GitHub, public LinkedIn and Crunchbase records, the open web. Not a database that went stale last quarter.
03You read the shortlist
Ranked, with the reasoning under every name. Open a profile, ask a follow-up, narrow it down.
- Staff backend engineers in NYC who shipped Rust in production
- Series A fintechs in SF under 50 people, growing headcount this year
- Maintainers of fast-growing Rust web frameworks on GitHub
- No boolean, no filters, no seat to buy. One box.
- Read at search time, so a profile updated yesterday counts today.
- Every step visible as it runs, every name with its reason.
500 free credits on sign-up. No card, no demo call. See real searches.