mart_salary_decade
Decade-anchored salary observations with currency rate dates and source provenance.
Methodology
Most career platforms keep their methodology private. That is a reasonable commercial decision and a poor signal for trust. This page lists every source, refresh date, and row count for the data on geospatial.careers, plus what we do not claim.
The intelligence database draws from two distinct families of sources. Job postings answer "what is the market advertising right now". Salary benchmarks answer "what do governments report that geospatial workers earn over time".
The two are kept separate by design.
| Source | Type | Scope | Rows | Last observed |
|---|---|---|---|---|
AdzunaLive | Aggregator API | 20+ countries | 24,184 | today |
JSearch (RapidAPI)Live | Aggregator API | Global, US-skewed | 5,905 | 86d ago |
ReedLive | UK aggregator API | UK | 135 | 1d ago |
USAJobsLive | US federal API | US | 234 | 1d ago |
Greenhouse ATSLive | Direct employer feed | ~30 curated companies | 7,947 | today |
Lever ATSLive | Direct employer feed | ~30 curated companies | 1,803 | today |
Ashby ATSLive | Direct employer feed | Curated | 2,037 | 1d ago |
Workable ATSLive | Direct employer feed | Curated | 27 | 3d ago |
SmartRecruitersLive | Direct employer feed | Curated | 131 | 1d ago |
RemotiveLive | Remote-only aggregator | Global, remote roles | — | no data |
RemoteOKLive | Remote-only aggregator | Global, remote roles | — | no data |
Postings stop being accepted from a source if its API breaks, throttles us indefinitely, or changes its terms of service in a way that prohibits derived analytics. Disabled collectors stay disabled until verified working.
Note on Reed (UK): the Reed integration currently returns limited coverage. UK depth comes primarily from Adzuna and ONS ASHE; the Reed feed is supplementary and may pause without notice.
Note on manual ingest: a small number of rows enter the postings substrate via human-curated research channels. They are excluded from every public mart and never appear in the demand surface, career-path graph, or salary intelligence. The substrate keeps them for provenance auditing.
Job-posting salaries are selection-biased and the disclosure rate is structurally low outside the UK and US. Government surveys are the only reliable longitudinal substrate, so we keep the salary panel intentionally narrow.
| Source | Country | Years | Granularity | Authority | Rows | Last observed |
|---|---|---|---|---|---|---|
Statistics Canada WagesAuth | CA | 2024 | 21 occupations, full deciles | 0.95 | 1,062 | 146d ago |
BLS OEWSAuth | US | 2014–2024 | 5 core SOC occupations | 0.95 | 520 | 145d ago |
Eurostat SESAuth | EU | 2018–2022 | 28 EU + EFTA states | 0.90 | 90 | 124d ago |
US DOL H-1B LCA (deep panel)Auth | US | 2025 | Geospatial-tech occupations, deciles | 0.85 | 79 | 145d ago |
ONS ASHEAuth | UK | 2020–2025 | 11 occupational categories | 0.95 | 52 | 145d ago |
US DOL H-1B LCA (top-level)Auth | US | 2025 | 21 occupations, deciles | 0.85 | 36 | 124d ago |
ONS ASHE (extended series)Auth | UK | 2020–2025 | Extended occupational detail | 0.90 | 23 | 145d ago |
Adzuna historical (trend-shape only)Live | multi | 2020–2025 | Posting-derived trend shape | 0.50 | 18 | frozen |
URISA Geospatial Pay SurveyAuth | US | 2024 | Industry survey | 0.80 | 15 | 146d ago |
Authority is used to rank conflicting estimates when the same occupation appears in two sources for the same country and year. It is not a confidence interval.
The substrate tables (intel_jobs, intel_salary_benchmarks) hold a small number of research-only rows for provenance auditing. None of the rows below appear in the published marts that power the visible surfaces, and a dbt contract test on mart_salary_decade blocks them from leaking in.
Decade-anchored salary observations with currency rate dates and source provenance.
Job-posting volumes aggregated to a coarse spatial grid, so seasonality and geography are visible without exposing individual postings. This layer is currently treated as internal-trusted rather than public-trusted because live source-removal drift is still too high.
Country-level demand panel filtered by source-support thresholds. This is the public-safe demand layer used when the finer H3 surface is too source-sensitive to certify.
Skill terms corroborated against at least three sources, with the unvalidated long tail kept separately.
Marts are tested with dbt contracts and rebuilt on a daily schedule. When a build fails, the previous mart stays live and the failure is logged.
Public-facing datasets and metrics now read from a machine-readable contract registry. Each contract declares its grain, confidence basis, publication class, owner, and lifecycle semantics.
Public-safe country demand API backed by the certified country-level demand mart.
Lineage endpoint that explicitly labels manifest-backed versus synthetic fallback graphs.
Public-safe country-level demand panel derived from publishable postings with source-support thresholds.
Employer intelligence substrate for hiring visibility and profile surfaces.
Historical market trend panel used for monthly views and time-series analysis.
Public salary explorer benchmark panel, filtered to publishable data classes only.
Skill demand trend substrate for product and research surfaces.
Public-safe country-level demand score used by market opportunity and country ranking surfaces.
Certified median annual salary in local currency for salary explorer surfaces.
Percentage of jobs in a country-month mentioning the canonical skill.
| Metric | Entity | Confidence basis | Grain |
|---|---|---|---|
| demand_intensity | regional_labour_market_cell | observed_plus_inferred_high | one value per country code min sample 25 · perturbation tolerance 15% denominator: All publishable postings in the same country within the active freshness window, after quality and data-class filtering. exclusions: Excludes research_substrate rows, unknown data_class rows, and postings without valid country mapping. |
| median_salary | salary_benchmark_observation | government_benchmark_blend | one value per role family, country, source, reference year, and currency min sample 30 · perturbation tolerance 10% denominator: All benchmark observations or live-signal aggregates contributing to that role-family and country-year cell after publication-class filtering. exclusions: Excludes research_substrate sources, invalid country or currency rows, and benchmark rows outside publishable data classes. |
| mention_pct | skill_market_signal | mixed_inference | one value per canonical skill, country, and posted month min sample 25 · perturbation tolerance 12% denominator: All publishable postings in the same country and posted_month, after staging quality and tier filters. exclusions: Excludes research_substrate rows, rejected jobs, and unvalidated skill-extraction records not present in the enriched bridge. |
The current platform has known gaps. International salary coverage outside the UK, US, Canada, and EU is thin. Senior, lead, and principal seniority signals are noisier than junior and mid. The skills validation pipeline is conservative, which means useful new skills can lag behind their adoption in the wild.
These are the next quarter of work. Updates land in public, with the source and refresh date stamped on every page that uses the data.
The fastest route is the assistant on the platform. It will pull the source for whatever it cited and you can flag the row directly. Or open an issue at github.com/geraezemc/geospatial-careers.