Methodology
Every rule that turns 67.5 million raw cells into one ranked dataset.
The build rules
01
Current series wins
Table 14100443 is the current Job Vacancy and Wage Survey series. Its archived predecessor 14100328, covering 2015Q1 to 2023Q3, is fully superseded. Archived rows contribute zero observations, so no quarter is counted twice.
02
Suppressed cells quarantined
322,588 cells were excluded before any aggregation: cells StatCan suppressed (x) or flagged too unreliable (F), non-numeric values, negative vacancy counts, and wages at or below zero or above $500 an hour. The quarantine counts ship in every data file.
03
Name-based NOC mapping
Occupation names strip the trailing classification code before matching, so an occupation keeps one series across the NOC 2016 to NOC 2021 change. Matching by raw name would have split occupations into two series at the code change.
04
Wages are offered, in CAD
The survey asks employers what hourly wage they offer for the vacant post. It is not what workers end up being paid. Every chart and table that shows a wage states this.
05
The quadrant rule
Each broad group lands in a quadrant by comparing its 2026Q2 values to the medians: 22.2% of vacancies open 90+ days and $30.95 an hour offered (the upper-middle value of the 10 groups). Above the duration median and at or above the wage median: supply problem. Above the duration median and below the wage median: wage problem. Below the duration median: filling.
06
The 2020 suspension
StatCan suspended JVWS collection in 2020Q2 during the first COVID wave, and 2020Q3 was not collected either. Every quarterly series in this project has a two-quarter gap, drawn as a break, not a zero.
07
Unadjusted for seasonality
JVWS quarterly figures are not seasonally adjusted. Compare year over year, not quarter over quarter.
StatCan table 14100443 (JVWS, quarterly, unadjusted) · CURRENT, 2015Q1-2026Q2 · Canada · 67,508,672 cells scanned
Archived predecessor 14100328 (2015Q1-2023Q3, ARCHIVED) fully superseded by 14100443; archived rows contribute zero observations.
Honest limits
- Nine of the ten broad groups start in 2015Q1. Senior management starts in 2015Q2 because StatCan published no 2015Q1 breakdown for it.
- The 322,588 quarantined cells thin out small occupations. Minor and unit-group figures are published for 2026Q2 only, where coverage is thickest.
- Offered wages are not accepted wages. The gap between what employers post and what workers are paid is unmeasured here.
- The quadrant is a descriptive cut at two medians, not a causal diagnosis. Wage problem means pay trails the median while duration beats it. It does not prove raising pay would fill the posts.
- Duration bands and constantly-recruiting shares are in the data files but not charted on this site.
- Senior management had 835 vacancies in 2026Q2. Small cells are noisier than large ones.
What was wrong with the raw data
Three problems, each fixed before analysis. The archived and current StatCan series overlap for 35 quarters. The fix is a current-series-wins dedup rule. Suppressed and unreliable cells would poison averages. The fix is a quarantine log that excludes 322,588 cells. The NOC 2016 to 2021 code change would split occupations into two series. The fix is name-based mapping that strips classification codes. The data-fixes entry records the before and after.
Download the dataset →