One Vacancy, Many Listings

Some weeks the feed looks generous. Six results that all look plausible, from four different sources, spread across a few days. Then you open them and three of them are the same job.

This is not a glitch and it is not aimed at you. It’s what happens when one vacancy is published once and then copied — into feeds, into aggregators, into agency listings, into whatever your alert reads. The copies drift as they travel, so by the time two of them reach you they no longer look like the same thing.

It’s worth understanding for one operational reason: if you count listings instead of vacancies, every number you derive from your own search is wrong. Your sense of how much is out there, your applications-per-week, your response rate — all of them.

A listing is a record, not a job

The distinction that fixes most of this: a vacancy is a job an employer wants to fill. A listing is one published record describing it. One vacancy routinely produces many listings, because the record gets handed onward — to job boards the employer posts to directly, to boards that ingest a feed from those boards, to staffing partners who advertise the role under their own name, and to whatever else picks up public postings.

Nobody in that chain is obliged to preserve the record faithfully, and mostly they don’t.

What changes on the way

Compare two copies of one role and you’ll usually find several of these differ:

The title. Rewritten, normalised to a standard job family, or decorated. “Senior Analyst (m/f/d)” becomes “Data Analyst — Senior” becomes “Analyst II”.

The employer name. Replaced by the agency’s, or removed entirely and described as “a leading firm in the sector”. This is the copy you cannot dedupe by company name, which is exactly why the check in never apply to the same job twice searches on company and still misses sometimes.

The location. A specific office becomes a metro area, or a hybrid role becomes “remote” because the source system only had a checkbox.

The reference number. Often dropped. When it survives, it’s the single most reliable way to prove two listings are one vacancy.

Compensation. Frequently present on the original and absent on the copy, or vice versa when an agency adds its own estimate.

The date. Reset to whenever the copy was made — which is the subject of what “posted 3 days ago” actually means.

The apply button. Pointed at a different destination: the employer’s own system, the board’s hosted form, or the agency’s.

None of this requires bad intent. It’s what happens when a record moves between systems with different fields. Job postings really are handled as structured data rather than as pages: Serply’s API endpoint documentation lists a jobs endpoint alongside its web, news and maps ones, each returning results as fields rather than a document to read. That’s the shape the listing is in while it’s being passed around upstream of you — and a field the receiving system doesn’t have is a field that doesn’t survive the copy.

Why it matters when you’re running a process

It inflates the market. Three listings feel like three chances. If your weekly sourcing block produces “eleven roles found”, and four of those are duplicates, your real number is seven and your plan was built on the wrong one.

It hides the route. The listing you clicked determines where your application lands and who owns it — the employer directly, a board’s own database, or an agency who will now introduce you. Those are materially different, and the listing rarely says which one it is until you’re two screens into the form.

It creates collisions. Two routes to one vacancy is the version of duplication with real consequences, because the employer ends up with a question about who introduced you.

It corrupts your numbers. If you log a vacancy you applied to once as two rows because you saw it twice, your response rate drops for no reason. One vacancy, one row.

Finding the original

Before you apply to anything you found on a board, spend thirty seconds looking for the employer’s own version:

  1. Get the employer’s real name. If the listing hides it, the role description usually gives it away — a product name, a location, a specific system. If you genuinely can’t tell, that itself is information about the route.
  2. Search the employer’s careers page for the title, or the nearest thing to it. Look for a reference number.
  3. Compare the two. Same location, same seniority, same core requirements, opened around the same time? Treat it as one vacancy.
  4. Note both. The listing you found and the original you traced to.

That’s it. It takes less time than the first field of the application form.

Which route to apply through

The default is the employer’s own posting, for three reasons: the description there is the un-drifted one, your data goes into the system the hiring team actually reads, and you keep the option of an agency introduction later rather than spending it now.

But this varies more than people assume, and asserting a universal rule would be wrong:

  • Some employers genuinely recruit through partners for certain roles, and the agency route is the only live one. If the careers page doesn’t list the role at all, the agency listing may be the real thing — or it may be speculative.
  • Norms differ by country and sector. In some markets agency-mediated hiring is the mainstream route for mid-level roles; in others it’s the exception.
  • A specific recruiter you already have a relationship with is a different proposition from an anonymous listing, and belongs in your pipeline as a channel — see recruiters as part of your pipeline.

If you’re unsure and there’s a named person, the question is cheap: “I’ve seen this role advertised in a couple of places — are you handling it directly, or should I apply through the careers page?” Nobody minds being asked.

Record the vacancy, tag the listing

One change to your tracker handles all of this. Keep one row per vacancy, and put the listing detail in fields:

Company        northwind
Role           senior analyst
Ref            REQ-4471          (blank if none published)
Route          employer careers page
Seen via       title alert, board X; agency listing, 2 days later
First seen     2026-08-03

Route is what you applied through — it’s the field that lets you compare, after thirty applications, whether direct applications behave differently from mediated ones. Seen via is the messy part, and it’s fine for it to be messy; it’s a note, not data. Ref is the field that resolves arguments with yourself later.

Then, when a fourth copy of the same role turns up in next week’s feed, you search, find the row, and bin the listing in five seconds. Which is the whole point: the goal isn’t to catalogue every copy, it’s to stop the copies from reaching the part of your process where they cost you something.