The Posting-Source Coverage Map, One Row per Channel
You can assemble a posting-source set that surfaces openings any single board misses, and name each channel's blind spot, refresh lag, and duplication behavior.
This is the coverage map for job-posting sources: one row per channel, with what it captures, what it structurally omits, how late it runs, and how it duplicates. It is for a job seeker who wants to see the true set of openings for a role and metro rather than trusting whatever one board happens to show. Read the whole thing once to build your source set, then jump back to a single row when you need to know exactly what that channel proves and how it lies.
Most advice on this either argues "board versus aggregator" in the abstract or sells the hidden job market as a networking pitch. Neither tells you which sources to watch or what each one is blind to. This does.
Why one board never shows the true set of openings
No single source carries every opening, and the ones that carry the most are the slowest and the noisiest. The company career page and its ATS feed are the source of truth at t0. Everything downstream is a delayed, partial, and often duplicated copy.
The mechanism is architecture, not brand size. Aggregators and general boards do not pull jobs in real time. Their indexing runs on scheduled crawl and integration cycles that process listings in queues. So a seeker who starts from an aggregator is reading a copy that is hours to days behind the page it was copied from, missing every employer that never enabled syndication at all.
There is also a counting problem. Aggregate opening counts do not deduplicate across boards, so the same role on an aggregator, a general board, and a staffing site shows up as several openings. The true number of unique opportunities is lower than the headline. That means the two questions "where is it posted first" and "how many of these are real" have to be answered per channel, which is what the rest of this map does.
The freshness ranking follows the data flow, not the brand. The career page is t0; everything else is a copy running late.
I will not repeat the claim that 70 to 80 percent of jobs are never advertised. Fact-checks trace that number to a 1960s local survey, and it is not usable outside that context. One modern counter-estimate puts currently advertised roles nearer 40 percent, but even that is not firmly established. What is documented is the mechanism: career pages post first, and some ATS roles never syndicate. Build on the mechanism, not the percentage.
The source-type coverage map
Here is the map itself: seven channel types, each defined by what it captures and what it structurally omits. Jump to the row you need. The freshness and duplication behavior of each is broken out in the two tables that follow.
General aggregator. Crawls and ingests from many boards and career sites into one search. Captures breadth of high-volume and entry-level roles. Omits non-syndicating ATS roles entirely, and after March 31, 2026 omits single-source feeds routable through an ATS from the free layer. Duplicates heavily, because it does not deduplicate across the sources it ingests.
General board. A destination where employers or integrations post directly, with a global search across companies. Captures a wide cross-section, strong for mid-market roles. Omits employers who post only to their ATS without enabling the integration. Its "just posted" label means "just indexed," not "just created."
Niche and association board. A field-specific or membership-run board. Captures specialized, senior, and member-facing roles with high relevance. Omits most high-volume and entry-level roles, and coverage is uneven because there are tens of thousands of these boards. Low duplication, because postings are curated.
Company career page and its ATS feed. The employer's own listings on Workday, Greenhouse, Lever, Ashby, or iCIMS. Captures everything the employer is actually hiring for, first. Omits nothing for that employer, but has no cross-company search, so an uncurated company list silently omits employers you never added. This is t0.
Structured-data search index. Google for Jobs, which surfaces career-page listings that carry valid JobPosting markup. Captures marked-up career pages in one searchable box. Omits any page without valid JSON-LD markup, regardless of quality. Indexes 1 to 3 days after the markup appears.
Professional network. A general board layered on a graph of people and companies. Captures roles posted through its integration plus what recruiters push. Omits non-integrated ATS roles, and its posting lag runs up to 24 hours, longer for smaller firms. Duplicates against aggregators.
Government and staffing portal. Public-sector, licensed, and contract-role portals. Captures eligible role classes that often appear nowhere else. Omits most private-sector direct-hire roles. Staffing portals in particular are a source of decorated-title reposts.
The seven layers of a coverage set
- Career page / ATS feedThe source of truth, t0, no cross-company search
- Structured-data indexMarked-up career pages, 1 to 3 days to index
- General board / networkDirect posts plus integrations, up to 24 hrs late
- General aggregatorBroad crawl, 24 to 72 hrs late, heavily duplicated
- Niche / government portalsField- and eligibility-specific, low overlap
What each channel omits, and how it misleads you
Every channel proves something and lies about something else. The rule for reading any source: know what its counts prove, and know the specific artifact that makes them wrong.
- A general aggregator's count proves demand exists somewhere. It lies when staffing farms repost one role under four decorated titles; the count balloons while the unique total stays flat.
- A general board's "just posted" proves the role was indexed recently. It lies about age, because indexing can trail the real posting by 24 to 72 hours.
- A niche board's presence proves relevance. It lies when you read its thin volume as the whole market for your field; it is one slice, not coverage.
- A career page proves the employer is hiring that exact req. It cannot lie about that role, but silence there proves nothing about other channels, and your list of pages proves coverage only for the employers you chose to watch.
- Google for Jobs presence proves the page carries valid markup. Its absence does not prove the company is not hiring; it may simply have no markup.
- A government portal's listing proves the role is real and open through that process. It rarely tells you anything about the private-sector equivalents.
The sharpest single trap is treating a career-page-only employer as not hiring. Some roles never appear on a network or an aggregator at all, because the company posts directly to its ATS without enabling syndication. Those roles are invisible to every crawl-based search. The only way to see them is to watch the career page.
Freshness: how late each channel runs
The channel closest to the employer is the freshest, and the ranking follows the data flow rather than brand size. Career page is t0; everything else is a copy that arrives later.
| Channel | Lag to appear | Source |
|---|---|---|
| Company career page / ATS | 0, the source of truth | jobstrack.io career-page monitoring |
| Google for Jobs (schema) | 1 to 3 days to index | jobdatalake schema guide |
| General board / network (integration) | up to 24 hrs | jobstrack.io posting-delay research |
| General aggregator (crawl) | 24 to 72 hrs | jobstrack.io posting-delay research |
One reported practitioner estimate puts the average network lag near 18 hours, stretching to 36 to 48 hours for smaller companies. Treat that as a vendor estimate, not a documented figure; the documented ranges are the up-to-24-hour integration window and the 24-to-72-hour crawl window. Either way, the direction is fixed: aggregator-first seekers start behind.
Duplication: why the counts overstate the market
Aggregate counts overstate the real market because nothing deduplicates across boards, and deduplication by ID is impossible by design. The same posting is assigned a different internal ID by every platform that carries it, so you cannot match records by ID at all.
That leaves fuzzy matching on title stem, employer name, and description similarity as the only detector a job seeker has. And that is precisely what staffing-farm reposts are built to defeat: one role reposted by several scraper farms, each under its own "company" name, each with a decorated title variant like "[Remote] X," "X - REMOTE," or "X (100% Remote)." Cluster by company name and you miss them; cluster by title stem and description, and they collapse into one.
The noise is worse in the US. In Refolk's index there are 95,118 profiles with a "Recruiter" title in the US against 6,809 in the UK, a 14x gap driven by a larger market and higher agency density. More agencies means more staffing reposts, so dedup discipline matters proportionally more in the US market.
| Country | "Recruiter"-titled profiles | Ratio vs UK |
|---|---|---|
| United States | 95,118 | 14.0x |
| United Kingdom | 6,809 | 1.0x |
Counts from Refolk's index of professional profiles; the ratio is derived from those counts.
The second duplication artifact is not overcounting but staleness. A listing live on Monday may be filled and removed by Wednesday, but aggregators do not always pull it down promptly. Datasets accumulate ghost jobs: records that appear active but are closed at the source. The defense is the validThrough date and a check against the employer's own ATS page.
From headline count to real openings
- 500Headline aggregate count
as displayed, undeduplicated
- 120After clustering reposts
unique roles by title stem and description
- fewerAfter removing ghost jobs
only listings still live at the source
The direct layer: which career-page feeds to watch
The direct layer is a curated list of employer career pages and their ATS feeds, and it is the freshest and least duplicated source you have. Its blind spot is that it covers only the employers you deliberately add, because ATS boards expose one company at a time with no global search.
Which ATS families to prioritize is not a coin flip. In Refolk's index, among US recruiters and talent-acquisition professionals, 516 list Workday against 119 listing Greenhouse: Workday appears 4.3 times as often. Enterprise employers standardize on Workday, so a seeker watching only Greenhouse and Lever startups misses the larger enterprise career-page pool.
| ATS skill | US recruiter/TA profiles | Share of the pair |
|---|---|---|
| Workday | 516 | 81% |
| Greenhouse | 119 | 19% |
Counts from Refolk's index of professional profiles; the percentages and the 4.3x multiple are derived from those counts.
Read the table as a coverage instruction, not a preference. Watch both ends: the Workday-heavy enterprise pages that hold the larger feed pool, and the Greenhouse, Lever, and Ashby pages where startups post before anything reaches an aggregator. The point of the direct layer is to see roles at t0 and to see the ones that never syndicate.
The hard part of the direct layer is assembling the target-employer list in the first place, and doing it from the actual movement in your field rather than a guess. That is a people-and-company mapping problem, and it is exactly where Refolk removes friction: you describe the employers you care about in plain language and get back the companies and roles to monitor.
Assemble your source set, step by step
This is the procedure that turns the map into a working source set. It moves from the target definition outward through each layer and ends with a single canonical list. There is a genuine disagreement about order: source-first practitioners put career-page monitoring before aggregators, while general career advice starts with aggregators. Both agree the direct layer is the freshest, so the order below sets the general layer as a wide net and treats the direct layer as the one that must exist.
Build a coverage set that no single channel could give you
- Define the target tupleWrite role class, metro, and seniority as one tuple. Senior and specialist tilt toward career pages and niche boards; high-volume and entry-level tilt toward general boards. Done when the tuple is written and the tilt is clear.
- Map the general layerSet alerts on one aggregator and one general board, and treat the counts as inflated. Done when both alerts are live and you have noted that aggregate counts overstate unique openings.
- Build the direct layerIdentify 20 to 50 target employers and bookmark their ATS career pages across Workday, Greenhouse, Lever, Ashby, and iCIMS. Done when a monitored company list exists, because career pages post first and some roles never syndicate.
- Add the structured-data layerRun your role and metro query in Google for Jobs to catch marked-up career-page listings. Done when the query is bookmarked and the caveat that unmarked pages will not appear is noted.
- Add the niche and association layerSearch your field plus "professional association" and your field plus "jobs," skipping past general listings. Done when at least one niche board for the field is identified.
- Add the government and staffing layerFor public-sector, licensed, or contract roles, add the relevant portals. Done when the portals for your eligible role classes are on the list; skip if none apply.
- Deduplicate and detect stalenessCompare postings across sources by title stem, employer name, and description; flag decorated-title reposts and ghost jobs. Done when you hold a single canonical list of unique, live openings.
To find the niche board in step five, the reliable method is to search the name of your field plus "professional association," and separately your field plus "jobs," then skip past the general listings to see what else surfaces. If your field has an association, it very likely runs a board. Relevance there usually beats raw traffic for specialized, senior, or member-facing roles.
How this goes wrong: failure modes and false positives
The most valuable part of a coverage map is the list of ways it lies to you. Each of these produces a confident but wrong conclusion; each has a concrete check.
- Trusting aggregate counts. One role reposted by staffing farms under decorated titles inflates the number. The false positive is "500 openings" that is really about 120 unique. Check by clustering on title stem and description similarity, never on company name.
- Ghost jobs. A listing shows "active" but was filled days ago because the aggregator did not pull it down. The false positive is applying to a closed req. Check the validThrough date and whether the role still exists on the employer's own ATS page.
- Misreading "just posted." The tag means "just indexed," so the role may be 24 to 72 hours old at the source. Check the real datePosted on the company ATS page before assuming you are early.
- Assuming Google for Jobs equals full coverage. Pages without valid JobPosting markup are invisible there. The false positive is concluding a company "isn't hiring." Check the career page directly.
- Relying on the free aggregator layer after March 31, 2026. Non-ATS single-source roles become sponsored-only or hidden, so counts drop without hiring dropping. Check by cross-referencing the employer's ATS.
- Over-weighting niche-board conversion stats. The roughly 3x conversion and 38 percent lower cost-per-hire figures are secondhand vendor citations, not primary studies. Treat them as directional only.
- Citing "70 to 80 percent hidden." The number is unsourced and depends on seniority. The false positive is telling entry-level seekers to abandon boards; entry and high-volume roles are mostly posted. Qualify by seniority.
- ATS blind spots. Per-company boards have no global search, so an uncurated company list silently omits employers who never syndicate. Check by expanding the monitored company list deliberately.
Keep the map current
A coverage set decays, so re-check the mechanisms on a schedule rather than the values once. The channels shift, the lags drift, and one large aggregator is actively re-gating its free layer as of the dates in this map. Watch the direction, not the announcement.
The concrete moving part right now is the aggregator free layer. Indeed's single-source feed policy removes free visibility for ATS-routable single-source feeds from March 31, 2026, and takes ad-agency sponsored-only feeds invisible from June 30, 2026. Indeed also capped free hosted posts at three per employer per month and cut the organic window from 120 to 30 days in December 2025. The effect on your coverage set is that the general aggregator's weight drops and the career-page and structured-data layers carry more. Re-check the employer help page for the current terms before you lean on aggregator counts.
Run this verification pass before you trust your source set.
Before you rely on the source set
- The target tuple of role class, metro, and seniority is written and the channel tilt is decided.
- Alerts are live on at least one aggregator and one general board, flagged as inflated counts.
- A list of 20 to 50 target employers has their ATS career pages bookmarked, spanning both Workday-heavy enterprises and Greenhouse or Lever startups.
- A Google for Jobs query is saved, with the note that unmarked pages will not appear there.
- At least one niche or association board is identified for the field.
- Government and staffing portals are added for any public-sector, licensed, or contract roles.
- A single canonical list exists, deduplicated by title stem and description, with ghost jobs removed by ATS check.
Keep the canonical list as the artifact you actually work from. Everything upstream is a feed into it, and the feeds lie in known ways: aggregators overcount, indexes undercount absent markup, and career pages cover only the employers you chose. Hold the template below at the top of your list so the discipline travels with the work.
Role (title stem) | Employer | Metro/seniority Seen on: [career page? / Google for Jobs? / board? / aggregator? / niche? / gov] Source of truth confirmed at ATS page: yes / no datePosted at source: ____ validThrough: ____ Duplicate of an existing row? cluster by title stem + description Ghost check: still live on employer ATS? yes / no Status: unique+live / duplicate / ghost / expired
One row per unique role; fill the checks before you count it as real.
When you review the market from this list rather than from a board, the true set of openings is the count of rows marked unique and live. That number is smaller than any headline and more honest than all of them.
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.