How we estimate ghost-job risk

Every job ShouldApply scores gets an estimated ghost probability from 0 to 100. It is additive: each signal below contributes, capped at 95%, and the result is an estimate of risk — never a verdict on any employer's intent.

Posting age

Strongest

Real openings get filled. A posting alive at 90+ days has usually lost its budget, its urgency, or both. Age is the single most predictive signal in our data.

No salary range

Strong

A company that will not name a number often has no approved budget for the seat. Across our pool, most postings with no salary also carry other risk signals.

Vague description

Moderate

Under ~100 words, no team, no concrete responsibilities. Placeholder text correlates with placeholder intent.

Repost patterns

Moderate

The same role reappearing on a loop suggests resume-pile building, not a chair being filled. We track first-seen dates across the pool to catch this.

High applicant count while still open

Moderate

Hundreds of applicants over weeks with the listing still up means either nobody is reading them or the req is frozen.

Staffing-agency indicators

Contextual

Postings routed through staffing shells are more often talent-pool nets than specific openings. Detected from employer-name and apply-link patterns.

Careers-page verification

Corrective

When a posting IS verified on the company's own careers page, estimated risk drops. Absence on the careers page raises it.

Limitations, plainly

  • These are probabilistic signals, not proof. A high estimate can be wrong about any individual posting.
  • Our pool skews toward the roles our users search for; it is not a census of the job market.
  • Company-level statistics are only ever published above minimum sample sizes, and always as estimates.

See the numbers this method produces in the Ghost Jobs Report, or test a specific posting with the free ghost job checker.