# The Job-Posting Decoder: What Each Element Proves

*You will be able to take any element of a company's job posting and state what it proves, at what confidence, and how it can mislead.*

- Canonical URL: https://www.refolk.ai/guides/job-posting-decoder-reference
- Pillar: Market and talent intelligence
- Format: Reference
- Published: 2026-09-04
- Last reviewed: 2026-09-04
- Reading time: 15 min
- Keywords: reading competitor job postings, job posting competitive intelligence signals, how to spot a ghost job posting, decode job description tech stack, hiring signals company strategy

## Key takeaways

- Roughly one in five online postings is a ghost job by ATS-outcome data (18-19%), but employer self-report puts it near 33%; always cite the method with the number.
- A named tool in a job description is a leading indicator of adoption, not a status report - hiring for a tool often precedes its production footprint, which is why it beats a website crawler.
- Reposting is the hardest tell to fake cheaply: track the copy, not the displayed date, because identical descriptions that reset the clock every few weeks are the ghost-job fingerprint.
- A first-ever role outranks a velocity spike because building a function from zero requires committed budget that a backfill merely reuses.
- In Refolk's index, US Rust-skilled software engineers outnumber Germany's roughly 7 to 1 (607 vs 87), so a German posting demanding Rust is a louder budget commitment than the same US posting.
- A missing pay band is only a signal in the 13 US jurisdictions that require the range in the posting; in a no-law state it proves nothing.

You are looking at a competitor's or target's careers page and need to know what each part reveals about their plans, and what is just noise. This reference is for talent-intelligence analysts, strategy and research teams, and operators sizing a market. It decodes the posting element by element: title, location, named tools, seniority, reporting line, pay band, and repost cadence, pairing each with what it proves, at what confidence, and the specific way it misleads.

Most public writing on this tells you to set up alerts and then lists a few upbeat signals. It leaves out the part that matters: the false positives, and the roughly one-in-five postings that never lead to a hire. This document is built to be opened mid-task. Jump to the row you need, read what it proves and how it lies, and leave.

## What a single job posting can and cannot prove

A single posting is a data point, not intelligence. Patterns across many postings over weeks and months are intelligence, and a lone posting sits at the bottom of the predictive hierarchy because it is often retention churn rather than a plan.

The core discipline is to separate the element you are reading from the confidence you can attach to it. A title tells you a function exists. A named tool tells you about interest, not confirmed production use. A repost pattern tells you far more than a displayed date. Before any element earns weight, you need two things the posting alone will not give you: a per-company baseline, and proof the role is not a ghost.

**19 - Talent Intelligence Analyst profiles in the US in Refolk's index, versus 3 in the UK**

A roughly 6x supply gap. The same title reads differently depending on where the search runs.

Baselining matters because the same posting means different things at different scales. A hiring spike at a 60-person startup is meaningful; the same absolute spike at a 12,000-person enterprise is noise. Without normalization you cannot tell genuine acceleration from seasonal backfill or a reposted role.

## The element-by-element decoder

Each posting element proves something narrow and lies in a specific way. Read the element, then read its failure mode; never one without the other.

| Element | What it proves | Confidence | How it misleads |
| --- | --- | --- | --- |
| Job title | A function exists or is being built | Medium | A backfill title looks identical to a net-new one; compare against baseline |
| First-ever role | Committed budget for a new function | High | Rare, so easy to miss; confirm the title never appeared before |
| Named tool | Current or imminent use of that tool | Medium | May be nice-to-have, aspirational, or boilerplate; invisible stacks stay hidden |
| Location outside HQ | Market entry into that geography | High | Remote-friendly copy can list a location the team never enters |
| Seniority | Whether the function is being seeded or scaled | Medium | Level can mismatch the real mandate; read against pay and requirements |
| Reporting line | Where the function sits in the org | Medium-high | A named line signals a real role; its absence signals accountability avoidance |
| Pay band | Compliance and the role's real level | Varies | Only a signal where a law requires it; meaningless in a no-law state |
| Repost cadence | Whether the search is live or a ghost | High | Identical copy that resets the clock is the ghost fingerprint |

The two highest-confidence rows are the ones vendor how-tos skip. A first-ever role means building a function from zero, which requires committed budget a backfill merely reuses, so it carries higher intent than a routine replacement. In-person hiring outside the headquarters geography is a strong market-entry indicator because it commits payroll to a new place.

> **Rule:** Read the element with its failure mode, always
>
> Every element in the decoder proves something narrow and lies in a specific way. If you quote what a posting proves without stating how it can mislead, you have written a pitch, not an assessment.

### Named tools: a leading indicator, not a status report

A named tool proves current or imminent use, and it captures backend and internal systems that website crawlers cannot see. Hiring a "Senior Engineer with Snowflake and Kubernetes experience" reveals two technologies no site scanner would find, because those live in the backend rather than the shipped front end.

The reason it beats a crawler is timing. Hiring for a tool often precedes or accompanies adoption, so a tool in a posting can predate its production footprint. That is a feature: you see the intent before the deployment. But it is probabilistic. Coverage depends on the company posting jobs at all and naming the tool, and results need normalization so GCP and Google Cloud Platform collapse to one entry. The published record does not state what fraction of a real stack postings capture, so treat that fraction as not established and do not claim a stack is complete.

#### What each detection method can see

1. **Internal-only tools** - Security and internal systems that never surface anywhere public
2. **Backend systems** - Databases, orchestration, data warehouses named in job postings
3. **Front-end technologies** - JavaScript and DNS-visible tools a website crawler detects

*Website crawlers see only the shipped front end; postings and internal knowledge reach progressively deeper into the real stack.*

The invisible-stack trap is the sharpest limit. Some security products do not appear in DNS records, front-end JavaScript, or job postings, so no scanner finds them. Absence of a tool is never proof of absence of use.

## The ghost-job problem: the one in five you cannot skip

Roughly one in five online postings never leads to a hire, but the true rate depends entirely on how you measure it. That spread is a methodology artifact, not disagreement about the world, so you must cite the method with any figure.

| Method | Rate | What it captures |
| --- | --- | --- |
| ATS outcome data (Ashby) | 18% | Actual outcomes; undercounts freezes |
| ATS research (Greenhouse) | ~19% | Share of online jobs that were ghosts |
| Employer self-report (Clarify Capital) | ~33% | Intent, not outcome; overcounts |
| Openings-to-hires gap (JOLTS-based) | 28-32% | Persistent monthly phantom gap |

Outcome data anchors the low end because it undercounts freezes; self-report anchors the high end because it captures intent rather than result. A Clarify Capital analysis of over 175,000 US listings found about one in seven were ghost jobs, rising to roughly 21% for senior roles. The gap is not evenly spread: government roles show the highest openings-to-hires gap at 60%, followed by education and health at 50%, information and tech at 48%, and financial activities at 44%.

**4 in 10 - Hires per posting, down from 8 in 10 in 2019**

The hires-per-posting ratio has halved, so a posting today is a weaker signal of a real hire than it was.

The reliable discriminators are four, and you read them together: a named contact or reporting line, description specificity, a defined pay band where law requires it, and repost behavior. Legitimate roles move fast and are written by someone who knows the job, so they include specific responsibilities, reporting structures, team context, and technical requirements. Ghost postings avoid accountability with generic buzzword copy and no named owner. One report found 52% of postings from always-hiring companies were ghost jobs, while 83% of fresh postings under seven days old at mid-market companies represented genuine intent.

> Reposting is the hardest tell to fake cheaply, so track the copy, not the displayed date.

Reposting is the single hardest tell to fake. Algorithms deprioritize old listings, so some companies take a listing down and repost it every few weeks with identical title and description to reset the clock. The fingerprint is repetition, not age. This is why displayed date is a trap and repost history is the truth.

## How to work the whole careers page

Run the postings through a fixed procedure so confidence is assigned before patterns are read. The sequence below filters ghosts and baselines before it reads velocity, which keeps you from mistaking reposted noise for acceleration.

#### The careers-page read, in order

1. **Establish the per-company baseline** - Pull 6 to 12 months of postings into a table (date, title, department, seniority, location, tools, requirement behavior). You now know normal monthly volume and mix.
2. **Verify each posting on the careers page** - Confirm every role exists on the company's own careers page, not only aggregators. Flag aggregator-only roles as lower-confidence.
3. **Score each posting for ghost-risk** - Check age, repost count, specificity, named contact or reporting line, and pay-band presence. Each posting now carries a confidence rating.
4. **Extract and normalize named tools** - Pull every named technology and collapse aliases into one entry. You now have a deduplicated stack list per company.
5. **Classify each role against the baseline** - Label each surviving posting net-new, backfill, or expansion by comparing it against the baseline and HQ geography.
6. **Cluster and time the high-confidence roles** - Group surviving roles by function, region, and seniority and plot them over time. Velocity spikes and clusters emerge.
7. **Cross-check against external signals** - Test the hiring story against layoffs, funding, earnings, and news. Each claim is corroborated or contradicted.

Sources disagree on order. Velocity-first practitioners baseline before filtering ghosts; ghost-first practitioners filter fakes before reading patterns. The rule of thumb: filter first if the careers page is noisy, because a baseline built on reposted ghosts is worthless.

#### From raw postings to intelligence

| Stage | Figure | Note |
| --- | --- | --- |
| All postings seen | 100 | Aggregators plus careers page |
| On careers page | 80 | Aggregator-only roles demoted |
| Pass ghost-risk score | 64 | About one in five removed as likely ghosts |
| Corroborated by external signal | 45 | Layoffs, funding, and news cross-checked |

*Each stage strips out lower-confidence roles so only corroborated signals reach the read.*

The funnel figures are illustrative of shape, not measured counts; the one-in-five removal rate reflects the 18 to 19% ATS-outcome ghost estimate, which is the defensible floor.

Once you have the surviving high-confidence clusters, the natural next move is to find the people who match them. Instead of scraping profiles by hand to size a talent pool or a competitor's likely next hire, you can ask in plain English. [Refolk](/) searches GitHub, LinkedIn, and the open web for the exact role, skill, stage, and place your decode surfaced.

I ran this search: `Companies that posted their first-ever RevOps or Head of Revenue Operations role in the last 6 months` - [see the full result list](https://www.refolk.ai/s/eazg2b0cn5).

*Returns the net-new roles that carry the highest intent, so you see which companies are building a function from zero rather than backfilling.*

## Where this goes wrong: false positives and misreads

The failure modes below are the most valuable part of this reference. Each is a specific way a correct-looking read is wrong. Check them before you brief a decision on a posting.

- **Posting age misread.** Boards auto-expire at 30 days, so age alone conflates a deliberately reposted live search with an abandoned one. Check repost history, not the displayed date.
- **Seasonal false positive.** Postings up in late November and December age strangely because hiring slows over the holidays. A 40-day-old posting in early January may have lived only ten real working days. Read age against the calendar.
- **Velocity spike without a baseline.** A spike at a 60-person firm is noise at a 12,000-person firm. Without per-company normalization you cannot tell acceleration from reposting.
- **Tool-in-JD false positive.** A named tool may be a nice-to-have, an aspirational adoption, or copied boilerplate. It proves interest, not confirmed production use, and coverage collapses when the company is not hiring.
- **Invisible stacks.** Security products can be absent from DNS records, front-end JavaScript, and job postings alike. No scanner finds them, so absence of a tool is not absence of use.
- **Missing pay band read as a ghost signal in a no-law jurisdiction.** A missing range is only a signal where a law requires it. Confirm the role's covered state or country first.
- **Backfill mislabeled as growth.** One isolated senior posting is often retention churn, not expansion. A single isolated posting sits at the bottom of the predictive hierarchy.
- **Mismatched-requirements tell.** "Entry-level, 7+ years, PhD preferred, $45,000" is incoherent by design. When requirements do not match level or compensation, the posting may exist to justify not hiring or to check a box for an internal fill.

> **Watch out:** The displayed date is the most-trusted, least-reliable field
>
> Because boards auto-expire at 30 days and companies repost identical copy to reset the clock, the date you see tells you almost nothing on its own. A posting older than 30 days has usually been deliberately kept alive. Read repost history instead.

## Pay-band presence: a signal only across a jurisdiction line

A missing salary range is a signal in some places and a non-event in others. It flips from norm to tell precisely at a legal boundary, so you must confirm the covered jurisdiction before you read the absence.

As of 1 July 2026, 18 of 51 US jurisdictions have a statewide pay-transparency law, and 13 require the salary range in the posting itself, including California, Colorado, Hawaii, Illinois, Maryland, Massachusetts, Minnesota, New Jersey, New York, Vermont, Washington, Virginia from 1 July 2026, and DC. Colorado was first, effective 1 January 2021, applying to all employers with at least one Colorado employee. Employer-size thresholds vary widely: New York applies at 4 employees, New Jersey at 10, California, Illinois, and Washington at 15, Massachusetts at 25, Minnesota at 30, and Hawaii at 50.

The read: a missing band on a covered California or Colorado role is a compliance-risk tell that the same omission in a no-law state simply is not. In the EU, the Pay Transparency Directive was adopted on 10 May 2023 with a transposition deadline of 7 June 2026, but transposition is uneven. Only four of the 27 member states, Slovakia, Italy, Lithuania, and Malta, met the deadline, so band expectations differ sharply within Europe. Do not treat a missing EU band as a signal without checking whether that member state has transposed the directive.

## Reading geography against talent supply

A location line proves market entry, but its weight depends on how scarce the skill is in that market. Thin local supply forces higher pay and longer searches, so the same demand reads as a louder budget commitment where talent is rare.

| Role and skill | Country | Current profiles | US multiple |
| --- | --- | --- | --- |
| Software Engineer + Rust | US | 607 | 1.0x |
| Software Engineer + Rust | Germany | 87 | 7.0x |

In Refolk's index of professional profiles, US Rust-skilled software engineers outnumber Germany's roughly seven to one. So a Berlin or Munich posting demanding Rust commits the employer to a search against thin local supply, which is a stronger intent signal than the identical posting in the US. The top US employers of Rust-skilled engineers in the index include Google, Oxide Computer Company, and Meta; in Germany they are Helsing, Wolt, and Trade Republic, a different competitive set that changes who you would be recruiting against.

> **Tip:** Weight the same posting by local scarcity
>
> Before you rank a foreign expansion signal, check how deep the local talent pool is for the named skill. A scarce-skill posting in a thin market implies higher pay and a longer, more committed search than the same posting where the skill is abundant.

The same logic applies to the analyst role itself. The index returns 19 current Talent Intelligence Analyst profiles in the US against 3 in the UK, a roughly six-to-one gap, so a UK company posting for this function is entering a much thinner market than a US one making the same hire.

## Verify before you call it a signal

Run this checklist before any posting element goes into a brief. It is the difference between a signal and a coincidence.

#### Before you attribute a plan to a posting

- [ ] The role was verified on the company's own careers page, not just an aggregator
- [ ] Repost history was checked, not only the displayed date
- [ ] Age was read against the calendar for seasonal distortion
- [ ] The posting scored acceptably on the four ghost discriminators
- [ ] Named tools were normalized and treated as interest, not confirmed use
- [ ] The role was classified net-new, backfill, or expansion against a baseline
- [ ] Pay-band absence was checked against the covered jurisdiction before being read as a signal
- [ ] The hiring story was cross-checked against layoffs, funding, or earnings

## Keeping the read current

Job-posting intelligence decays, so treat this as a standing process rather than a one-time pull. Two things move underneath you. First, the ghost-job baseline shifts with the labor market; the hires-per-posting ratio has already halved since 2019, so re-derive your own careers-page ghost rate every quarter rather than trusting a fixed percentage. Cite the method whenever you report the number, because the 18% outcome figure and the 33% self-report figure measure different things.

Second, pay-transparency law expands. The count of covered jurisdictions grows, and the EU directive's uneven transposition means the map of where a missing band is a signal keeps redrawing. Re-check the covered-jurisdiction list before each new market you assess. The elements in the decoder are stable, but the confidence you attach to pay-band absence and to geographic scarcity is not, so re-baseline supply, re-check the law, and re-derive the ghost rate on a fixed cadence.

## Frequently asked questions

### How do I spot a ghost job posting?

Read four discriminators together, not any one alone: reposting history, description specificity, a named contact or reporting line, and pay-band presence where a law requires it. A stale listing reposted identically month after month, with generic buzzword copy and no accountable owner, is the classic profile. One report found 52% of postings from always-hiring companies were ghost jobs, versus 83% genuine intent among fresh postings under seven days old at mid-market firms.

### What does a named tool in a job description actually prove?

It proves current or imminent use of that tool, but only while the company is actively hiring. Job postings catch backend and internal systems that website crawlers cannot see, and hiring for a tool often precedes or accompanies adoption, so it works as a timing signal. The limit: a named tool may be a nice-to-have, aspirational, or copied boilerplate, so it proves interest rather than confirmed production use.

### How old does a posting have to be before it counts as stale?

Roughly 30 to 45 days is a defensible threshold. The median posting stays live 20 to 30 days and about a quarter run past 59 days. But many boards auto-expire listings at 30 days, so a posting older than that has usually been deliberately kept alive or reposted, which is a signal rather than neglect. Adjust upward for executive roles, which routinely take 60 to 90 days to fill.

### Is a missing salary range a reliable ghost-job signal?

Only where a law requires the range in the posting. As of 1 July 2026, 13 US jurisdictions require the salary range in the posting itself, including California, Colorado, New York, and Washington. A missing band on a covered role is a compliance-risk tell; the same omission in a no-law state proves nothing. Confirm the role's covered jurisdiction before you read the absence as a signal.

### Can I read growth from a single job posting?

No. A single isolated posting sits at the bottom of the predictive hierarchy and is often retention churn rather than expansion. Individual postings are data points; patterns across postings over time are intelligence. Classify each role as net-new, backfill, or expansion against a per-company baseline, and give particular weight to first-ever roles and in-person hiring outside the headquarters geography.

---

*From the Refolk guide library. I revise these guides rather than replacing them, so the current version is always at https://www.refolk.ai/guides/job-posting-decoder-reference*
