The one sentence
A role is marked verified when the employer’s own applicant tracking system still lists that requisition — the same feed their public careers page is built from. That is all the badge claims. It is not a promise that anyone will read your application, that headcount is approved, or that the role will still be open tomorrow. Nobody outside the company can promise those things.
How a role gets here
- We keep a registry of employers and the public JSON endpoint their ATS publishes — Greenhouse, Lever, Ashby, SmartRecruiters, Workable, Recruitee.
- Every four hours we read each board: one request per employer, not one per job.
- Each posting is normalised, and any salary is read from a structured field or an explicit range in the employer’s own words. We never estimate one.
- Each role is classified into a role family. Roles outside the domains this board covers are not published — a smaller, relevant board beats a large, noisy one.
- Duplicates collapse to a single result; the copy closest to the employer wins.
Why a job disappears
When a requisition stops appearing in its employer’s feed twice in a row, we mark it closed and archive it. Two runs, not one, because a single network timeout would otherwise close an employer’s entire board. Closed roles are never deleted. They stay archived, which is what lets us tell you a role has been posted before.
The rule we care most about
The date a job was first seen is written once and never changed. If an employer deletes a requisition and republishes the same role under a new number, most boards show “Posted today”. We do not. The new posting really is hours old — so instead of a freshness badge the card says REPOSTED, and the detail page shows every run of that role we have on record, with dates. We match a repost on the employer, the normalised title, the location and the department, with a description-similarity check for roles that were lightly reworded. It is not perfect. When we are not confident two postings are the same role, we treat them as different ones, because inventing a history is worse than missing one.
How search decides what to show
A search resolves to one role family. A job outside that family is not shown at all — it is excluded, not ranked lower. That is why a search for “data engineer” does not return Sales Engineer, Security Engineer or Frontend Engineer just because they share the word. A closely related role can appear, but only with evidence: a Backend Engineer on a data platform team shows up only when the posting itself names the tools. Those results are ranked below the exact ones. Zero results with an explanation is better than five hundred irrelevant ones, so nothing is broadened automatically. When a search comes back empty, each option offered says exactly what it would add and how many roles that is.
What we will never say
We will never tell you a job is fake, a “ghost job”, or that an employer is acting in bad faith. We have no way to know that. You get the evidence instead: where it came from, the requisition number, the employer’s own posting date, the day we first saw it, the minute we last checked, how many times the role has run before, and which host the Apply button opens. Some of that reads as reassuring and some as a caution. Both are facts with a date attached. We also do not show a match percentage. A “92% match” implies a precision this data cannot support, which is the thing this product exists to argue against.
What this does not cover
- We only watch employers in our registry. A role not here is not a judgement about that employer.
- Public ATS APIs only. No scraping, no logging in, no working around a rate limit or a robots file.
- LinkedIn, Indeed, Glassdoor and ZipRecruiter are never a source of truth here, and Apply never sends you to one.
- Seniority, skills and work arrangement are derived from the employer’s text and are occasionally wrong. The description is always there to check.
- History starts the day JobSignal first saw a role, which may be well after the employer first posted it. We never shorten it, but we cannot extend it backwards.
Who pays for this
Nobody. No employer can pay to appear here, to rank higher, to look fresher, to hide a repost, or to remove a caution signal. The ranking code takes no such input — not as policy, but because the parameter does not exist. If that ever changes, sponsored results will be labelled, kept out of organic ones, and this page will say so.
Found something wrong? Tell us — reports are a reason to re-check, never automatic proof.