How ULC Checks That a Job Vacancy Is Still Open

Most job boards have the same quiet problem: a vacancy gets filled, the employer moves on, and the listing stays up. Nobody benefits from that. The job seeker wastes an application. The employer fields enquiries for a role that closed weeks ago. And the board slowly fills with pages that look active and are not.

ULC handles this differently, and the method is worth explaining because it is the opposite of what most automated systems do.

Why a script cannot decide if a job is still open

The obvious approach is automation. Fetch the employer's careers page every week, check whether the job title still appears, and expire the listing if it does not. It is cheap, it runs unattended, and it is wrong often enough to be dangerous.

Three real examples from checks run on ULC:

  • A training company's careers page returned a clean HTTP 200 and contained the exact job title being checked. The match was inside a customer testimonial byline. The vacancy did not exist.
  • Another employer's job page was live, indexed and fully formatted. Halfway down the body text it said the closing date had already passed. A keyword check would have kept it.
  • A third employer listed nothing on the careers page itself. The real vacancies sat on sub-pages that a simple text scrape never reached. An automated rule would have expired five genuine, open roles.

The pattern is consistent. A page returning HTTP 200 proves the page exists. It proves nothing about whether the job exists. Keyword matching produces both false positives and false negatives, and the false negatives are the expensive ones, because deleting a real vacancy destroys inventory that took work to find.

What ULC does instead

Every approved vacancy on ULC carries a check-back date. When a listing comes due, it goes into a queue. The queue decides nothing. It only says which jobs need looking at.

Each queued vacancy is then read against the employer's own careers page or the specific vacancy URL it came from, and one of three verdicts is recorded along with the evidence seen:

  • Open. The role is still listed by the employer. The verification date is stamped and the listing stays.
  • Gone. The role is no longer offered. The listing is expired and its page stops serving.
  • Unclear. The source could not be read properly, or the evidence is ambiguous. Nothing is expired. The listing waits for a human.

That third verdict matters more than it looks. Ambiguity always fails safe. A wrong "gone" removes a real opportunity from a real job seeker, so uncertainty is never allowed to trigger a deletion.

A worked example

On 6 August 2026, 36 vacancies were due for a check. Every one was read against its source. The result:

  • 29 were confirmed still open and re-stamped.
  • 7 were confirmed gone and expired the same day.
  • 6 new vacancies were found on those same employer pages and added.

Of the seven removed, four were roles at a construction group whose vacancy URLs had quietly started redirecting to a generic company page. The URLs still returned HTTP 200. An automated checker would have kept all four indefinitely.

Why the expiry dates are staggered

There is a second failure mode that has nothing to do with accuracy. If a batch of vacancies is added on the same day with the same default expiry window, they all die on the same day. The board looks healthy right up until it empties in a single afternoon.

ULC spreads expiry dates deliberately. Where an employer states a closing date, that date is used exactly as given. Where no closing date is stated, the window is set so that vacancies fall due gradually rather than in one block, which keeps the check-back workload steady and prevents a cliff.

What this means if you are job hunting

A vacancy on ULC carries a verification date and a closing date. If it is listed, it was confirmed against the employer's own page recently, and the evidence for that confirmation was recorded. If a role disappears from the site, it is because it was checked and found closed, not because a link rotted.

It also means the count of open vacancies on ULC goes down as well as up. That is intentional. A directory that only ever grows is not maintaining anything.

What this means if you are hiring

Vacancies sourced from an employer's own careers page are reproduced as published, with a link back to the original posting so applications land where the employer wants them. When a role closes, the listing is removed rather than left to collect applications you no longer want.

If you run a South African business and want your vacancies included, create a free listing and your careers page becomes part of the check cycle.

You can browse everything currently confirmed open on the ULC jobs page.