The Ghost-Job Read, Scored Per Posting to Apply, Verify, or Skip
You will score any one posting in two minutes on observable signals and land on apply now, verify first, or skip, with a reason you can defend.
Here is the job: for the one posting open in your browser right now, decide whether it is a real, fillable opening worth your tailored application or a listing with no intent to hire. This guide is for job seekers who are tired of scanning the same lists of "red flags" that never resolve into an action. It gives you a weighted per-posting score, explicit thresholds, and a three-way verdict - apply now, verify first, or skip - so you stop re-litigating the same judgement on every listing.
The problem is not a shortage of warning signs. It is that warning signs without weights and without a decision rule are just anxiety. A posting can carry three "red flags" and still be worth a one-click application, while a posting with one flag can be a bad bet for a long-form senior application. The missing piece is effort. The cost of a wrong "apply" scales with how much work the application takes, so the same signal set should resolve differently depending on what you are about to spend.
How common are ghost jobs, really?
There is no official number, so treat every prevalence figure as a measurement of something specific rather than a fact about the whole market. The Congressional Research Service stated in April 2025 that there are no official statistics on the magnitude of ghost jobs. What exists are platform counts, survey self-reports, and gap analyses, and they disagree because they measure different things.
The cleanest primary figure is Greenhouse's own platform data. In its 2024 State of Job Hunting report, published on 10 December 2024, the company reported that in any given quarter, 18 to 22 percent of jobs posted on the Greenhouse platform are classified as ghost jobs. That comes from the platform itself, not from asking people. Other estimates are higher or lower depending on method.
| Source | Figure | What it measures |
|---|---|---|
| Greenhouse (Dec 2024) | 18-22% | Posts on one ATS platform, per quarter |
| ResumeUp.AI (2025) | 27.4% | US LinkedIn listings flagged |
| MyPerfectResume/JOLTS (2026) | 32.9% | Openings-to-hires gap, all nonfarm |
| Clarify Capital (2026) | ~14% (1 in 7) | Active posts, employer self-report |
The point of this table is not to pick a winner. It is to show that a listicle quoting "1 in 3 jobs are fake" is quoting a JOLTS gap, which is an economy-wide openings-to-hires ratio, not a count of fraudulent listings. Use the number that matches your question. For "how suspicious should I be of this one posting on a mainstream ATS," the 18 to 22 percent platform figure is the most relevant anchor.
Two more facts set the stakes. A LiveCareer survey of 918 HR professionals in March 2025 found 45 percent post ghost jobs "regularly" and 48 percent "occasionally," 93 percent combined. And Jobright.ai estimated, from an analysis of 4.4 million applications, that the average ghost-job application cycle costs a seeker nine hours. Nine hours per bad bet is why a decision rule beats a vibe.
Why the posting date lies, and what to read instead
The displayed date is the single most-corrupted signal on any board, which is exactly why age-based rules fail. Boards show a refresh date, not the original date. When LinkedIn shows "Reposted X days ago," it means the employer manually refreshed the listing to push it back to the top of search results; the original job may have been posted weeks or months earlier. A job showing "Reposted 3 days ago" might actually be several months old.
It gets worse. Applicant tracking systems like Workday and Greenhouse are commonly configured to auto-refresh or repost a listing after a set number of days, often 30, to keep it ranking. So a "fresh" date can be a machine keeping the listing alive, with no human on the other end deciding anything.
The structural fix is to stop reading the board and read the source. If the listing links to an address like boards.greenhouse.io, jobs.lever.co, or jobs.ashbyhq.com, that is the system of record. Open it and look for the original post date and whether the requisition still exists. This one click turns your weakest signal into one of your strongest.
How to read age against time-to-fill
Age is only meaningful against the time it actually takes to fill that kind of role. A flat "30 days means ghost" rule treats a tech backfill and an executive search as the same thing, and they are not. The average time to fill open roles fell from 48 days in 2023 to 41 days in 2024, per SHRM. Tech and engineering run longer, roughly 50 to 62 days, and executive or C-suite roles legitimately stay live 80 to 120+ days.
| Posting age | All-industry benchmark | Tech benchmark | Read |
|---|---|---|---|
| Under 30 days | Within 41-day fill | Within 50-62d | Fresh |
| 30-60 days | At/near fill time | Normal for tech | Aging - verify |
| 60-90+ days | Past fill time | Past even tech | Stale - high ghost risk |
The seniority trap compounds here. Senior postings carry roughly 1 in 5 ghost odds, yet executive roles legitimately stay live the longest, so age-based rules misfire hardest exactly where your application costs the most to produce. For a senior role at 70 days, age alone tells you almost nothing; you have to verify the other way.
Age is not a verdict. Age is a question you answer with the ATS date and the sector benchmark.
The signals, what each proves, and when it lies
Every signal in this score has a failure direction. Treating a signal as proof when it can mislead is how good listings get skipped and bad ones get applications. Here is what each observable signal actually proves and what it looks like when it lies.
- Named hiring manager or team. Active recruiters and hiring managers often link their profiles or name themselves in the description; an anonymous post tends to indicate a lower-urgency or automated listing. It lies because absence is common on high-volume ATS posts even for real roles, so read absence as a weak negative, not proof.
- Concrete role detail. A real first-six-months description, specific stack, named reporting line. It lies rarely; vague boilerplate is a genuine weak negative.
- Salary range. A present, sensible band is a positive where the law requires it. It lies when the role is outside a disclosure jurisdiction or is commission-only, in which case absence is noise.
- Careers-page presence. If the role is missing from the company's own site, that hints the ad may be outdated or pipeline-building. It lies because boards lag the ATS, so absence can be sync timing - search the exact title on the ATS, not the landing page.
- Repost pattern. The same title cycling every 30 or 60 days. It lies because reposts are often mechanical ATS renewals or license-expiry refreshes, not fresh searches - compare requisition numbers and description diffs.
- Confirmation email. Proves ATS receipt only. It lies constantly; see the warning above.
Pay transparency deserves its own line because it is jurisdiction-bound. As of 2026, 18 US states plus DC have pay-transparency laws, with penalties from $100 to $250,000 per violation. As of December 2025, eleven states require the salary range in the posting itself: California, Colorado, Hawaii, Illinois, Maryland, Massachusetts, Minnesota, New Jersey, New York, Vermont, and Washington. A missing band is a weighted negative only when the role is performable in one of those states. Everywhere else it is noise.
The score: dimensions, weights, and thresholds
Score the posting on six weighted dimensions, then apply a threshold that depends on your effort tier. The score is a tool for a repeated judgement, not a precise instrument; its job is to make you consistent and to force the effort question before you act.
Each dimension scores from -2 (strong ghost signal) to +2 (strong live signal), with 0 for absent or neutral. Weight the date and specificity dimensions double, because they carry the most information and are hardest to fake with a cheap refresh.
Line 1 - True ATS age vs sector benchmark (x2): ___ Line 2 - Description specificity: named manager, real detail, real band (x2): ___ Line 3 - Pay-range compliance (only if in a mandatory in-posting state): ___ Line 4 - Careers-page / ATS presence of exact title: ___ Line 5 - Repost pattern: mechanical renewal (-) vs genuine fresh search (+): ___ Line 6 - Named human confirms live search, or recent related hires exist: ___ TOTAL (range -16 to +16): ___ Thresholds by effort tier: - One-click apply: proceed unless TOTAL is at or below -6. Cost of a wrong apply is trivial. - Tailored / medium-effort: apply if TOTAL >= +2; verify if -5 to +1; skip if <= -6. - Senior / long-form: apply only if TOTAL >= +4; verify if -3 to +3; skip if <= -4.
Score each line from -2 to +2. Multiply the two weighted lines by 2. Sum. Compare the total to your effort-tier threshold below.
Why asymmetric thresholds? Because the expected cost of a wrong "apply" scales with effort. For a one-click application, a false "apply" costs you seconds, so a low bar is rational. For a tailored senior application that can run hours, an ambiguous signal set should trigger "verify," not "apply." The same math is why practitioners advise five well-targeted applications with tailored materials over twenty to listings showing no signs of active hiring.
Effort versus confidence
The procedure, start to verdict in about seven minutes
Run these eight steps in order on the posting in front of you. Each is a candidate action, timed, with a clear "done" state. The whole pass takes a couple of minutes for a clear posting and up to ten when verification is warranted.
Score one posting to apply, verify, or skip
- Read the date correctlyDo not trust the board's "X days ago." Click through to the source ATS listing and find the original post date. Done when you know the true original date, not the refresh date.
- Score age against time-to-fillBenchmark the true age against roughly 41 days all-industry, 50 to 62 for tech, and 80 to 120+ for executive. Done when you have classed the posting as fresh, aging, or stale.
- Scan the description for specificityLook for a named manager or team, concrete first-six-months detail, and a real salary band. Done when each is marked present or absent.
- Check pay-range complianceIf the role is performable in a state that mandates in-posting salary ranges, a missing or absurdly wide band is a weighted negative. Done when compliance is classed or ruled out of scope.
- Cross-list against the careers pageSearch the exact title on the company's own ATS, not just the branded landing page, and scan recent news for a hiring freeze. Done when the role is confirmed present, absent, or the company signals a freeze.
- Check repost history and recent hiresLook for the same title cycling every 30 or 60 days and for recent related hires on LinkedIn. Done when the repost pattern is classed as mechanical renewal or a genuinely fresh search.
- Set the effort tierDecide whether this is a one-click apply or a tailored, long-form, or senior application. Done when the tier is set, because it sets your verification threshold.
- Resolve to apply, verify, or skipSum the weighted signals, apply the tier threshold, and record the reason. Done when the action is logged so you never re-litigate the same posting.
From posting to verdict
- Read true ATS dateReplace the board's refresh date with the real one
- Benchmark and scanAge against sector; mark specificity and compliance
- Cross-check sourcesCareers page, repost pattern, recent hires
- Tier and thresholdSet effort tier, apply the matching cutoff
- Log the verdictApply, verify, or skip, with the reason recorded
When verification is worth it, and how to do it fast
Verification is worth it when the score lands in the "verify" band and the application is high-effort - never on a one-click, rarely when the score is already clear. When you do verify, the single conclusive step is a named human confirming the search is live. Everything else narrows the odds without settling them.
Four sub-ten-minute checks, in order of how much they prove:
- Open the source ATS URL. Proves the original post date and that the requisition still exists in the system. This is the highest-value check and you have already done it in step one.
- Find and contact a named human or recent hire. Proves a live search only if they confirm it. Ask whether the opening is a backfill or net-new. This is the only step that can turn "verify" into a confident "apply."
- Cross-reference headcount and recent news for a freeze. Proves macro intent, not the specific requisition. A company in a public freeze is a strong negative even on a specific req.
- Check Glassdoor or Indeed interview reviews. Proves a process exists, not that this role is open.
The named-human step is realistic in the US and thinner elsewhere, and the gap is large.
| Segment | Count | Derived |
|---|---|---|
| US recruiters/TA | 118,621 [OURS] | baseline |
| UK recruiters/TA | 7,847 [OURS] | US is ~15.1x UK (derived) |
| US recruiting leadership (Dir/VP/CXO) | 505 [OURS] | 0.43% of US pool (derived) |
In Refolk's index of professional profiles, there are 118,621 recruiters and talent-acquisition professionals in the US against 7,847 in the UK, roughly fifteen times the supply. That is why "find and message a recruiter or recent hire" is a dependable sub-ten-minute step in the US market and a harder one in the UK. Refolk writes your resume from your own history, tailors it to each posting, and scores your fit, so the hours you save by skipping ghost jobs go into applications that can actually land.
Once you have a shortlist of people to approach, Refolk turns the verification step into a search instead of an afternoon of manual scrolling, and it keeps the output tied to roles you can actually confirm.
How this read goes wrong
The score is only as good as your discipline about its failure modes. These are the ways a careful reader still gets it wrong, each with the false positive it produces and the check that catches it.
- Trusting the board date. False positive: a "posted 2 days ago" that is really eight months old, refreshed. Check: open the ATS source URL and read the original date.
- Treating age alone as a ghost verdict. False positive: skipping a real tech or executive req that legitimately runs 60 to 120 days. Check: benchmark against the role's sector time-to-fill, not a flat 30 days.
- "I got a confirmation email, so it's real." The email proves only ATS receipt, and 13 percent of Greenhouse employers ghosted more than half of applicants. Check: look for a named human and recent hires, not the autoresponder.
- "No salary range, so it's an illegal ghost." False positive: a role genuinely outside a disclosure jurisdiction, or commission-only. Check: confirm the role is performable in a mandatory in-posting state before weighting it.
- "It's not on the careers page, so it's fake." False positive: board-to-ATS sync lag on a real new req. Check: search the exact title on the ATS, not just the branded careers landing page.
- Reading a repost as a fresh search. False positive: an automated 30-day renewal or a license-expiry repost read as new urgency. Check: compare requisition numbers and description diffs across reposts.
- Weighting every signal equally. A listicle sums red flags; this score does not. Check: apply the effort-tier threshold before acting, so a one-click apply is not skipped on weak signals and a tailored senior apply does not proceed on weak positives.
Before you call a posting judged
Run this checklist before you act on any medium- or high-effort application. It is the difference between a scored decision and a guess that happens to feel confident.
Verdict readiness check
- I read the true original date from the source ATS, not the board's refresh date.
- I benchmarked the age against the role's sector time-to-fill, not a flat 30 days.
- I marked specificity: named manager or team, concrete detail, real salary band.
- I weighted pay-range absence only if the role is performable in a mandatory in-posting state.
- I searched the exact title on the company's own ATS, not just the landing page.
- I classed the repost pattern as mechanical renewal or a genuine fresh search.
- I set the effort tier and applied the matching threshold before deciding.
- I logged the verdict - apply, verify, or skip - with a one-line reason.
Keeping the read current
The thresholds in this guide are anchored to mechanisms, not to a moment, so they age well - but two inputs move and you should re-check them. The first is time-to-fill: it fell from 48 days in 2023 to 41 in 2024, and your age benchmarks shift with it. Re-check the current SHRM figure once a year and adjust the "fresh/aging/stale" bands accordingly. The second is pay-transparency law: the list of states requiring in-posting ranges grows, so before you weight a missing band as a negative, confirm the role's jurisdiction still requires disclosure.
Everything else holds because it rests on structure. Boards will keep showing refresh dates, ATS systems will keep auto-renewing listings, and autoresponders will keep firing at receipt regardless of whether a human is reading. The mechanism is the durable part. Read the ATS, not the board; benchmark against the sector, not a round number; and let the effort tier - not the length of a red-flag list - decide whether an ambiguous posting earns your application.
Questions job seekers ask
How do I spot a ghost job in under two minutes?
Click through to the source applicant tracking system to read the true original post date, then scan for three things: a named hiring manager, concrete role detail, and a real salary band. Age it against the sector time-to-fill, roughly 41 days all-industry. If the true date is stale and specificity is thin, treat it with caution. No single signal is conclusive, so weigh several together against how much effort the application costs you.
Should I apply to a job posted 30 days ago that is still open?
It depends on the role's sector and the true date. Thirty days is near the 41-day all-industry average fill time and well inside the 50 to 62 days normal for tech and 80 to 120+ for executive roles, so 30 days alone is weak evidence of a ghost. Confirm the true original date on the ATS first, since the board may be showing a refresh date. If the true age is 60-plus days with no sector justification, verify before investing a tailored application.
Does a confirmation email mean the job is real?
No. An automated confirmation proves only that the applicant tracking system received your application, not that a human reviews it. In Q2 2024 only 4 percent of roughly 6,500 companies on Greenhouse contacted all rejected applicants, and 13 percent ghosted more than half. Silence after the autoresponder is the normal outcome for real and ghost roles alike. Look for a named human and recent related hires instead.
Is a missing salary range proof of a ghost job?
Only inside a jurisdiction that requires it. As of late 2025, eleven states require salary ranges in the posting itself, and 18 states plus DC mandate disclosure overall. A missing band is a weighted negative only when the role is performable in one of those states. Outside them, or for commission-only roles, a missing range is noise, not evidence.
How many ghost jobs are actually out there?
There is no official figure. The Congressional Research Service stated in April 2025 that there are no official statistics on the magnitude of ghost jobs. The cleanest platform number is Greenhouse's 18 to 22 percent of posts per quarter. Other estimates range from about 14 percent (Clarify Capital self-report) to 27.4 percent of US LinkedIn listings, and JOLTS gap analysis puts the openings-to-hires gap at 32.9 percent. Each measures a different thing, so read the method before the number.
How do I verify a recruiter or recent hire behind a posting?
Search for people who hold the recruiting role or who joined the company recently in a related role, then ask whether the opening is live, a backfill, or net-new. This is far easier in the US, where Refolk's index holds 118,621 recruiters against 7,847 in the UK. A named human who confirms the search is the only signal that proves a live req, though absence does not prove a ghost.
Put this to work
Paste your career in once. Every application after that is written for you.
Drop a resume or a LinkedIn URL. I rank the live openings against it, rewrite the resume and write a cover letter for the best of them, and fill in the employer's form when you press the button. You read, you decide what goes out.
01Drop your resume
A PDF or a LinkedIn URL. About a minute, once.
02I rank the openings
Every weekday morning, the live catalog scored against your history. Up to 20 worth your time, not two hundred links.
03Each one is written up
Resume rewritten for the posting, a cover letter, a fit score. Press send, or let me fill in the form.
- New matches ranked and written before you are up.
- Every bullet stays inside what your history supports. Nothing invented.
- Queued, submitted, interviewing, offer: one screen, not a spreadsheet.
500 free credits on sign-up. No card. Nothing is sent until you say so.