Geospatial Careers
A working instrument for the spatial-data field: where its roles are, what they pay, what they demand, and who its map leaves out, built to show its own confidence rather than assert it.
- Period
- 2024–present
- Role
- Founder and lead developer
- Scale
- Labour market and community
- Context
- Product, Research, Leadership

- I1Public job evidence
- I2Taxonomies + place
- I3Explicit source records
- O1Career intelligence
- O2Visible evidence boundaries
Founder and lead developer
- Live public product at geospatial.careers, backed by a three-layer PostGIS and dbt platform: 21 dbt models, 188 ordered migrations, and a daily 10:00 UTC build.
- 1,933 government and survey salary benchmarks across five countries (BLS OEWS, ONS ASHE, Statistics Canada, US DOL H-1B, and EU sources), alongside roughly 15,000 research-grade postings across 19 countries.
- Metric perturbation checks gate every certified public metric (country demand, skill demand, salary median) against explicit drift tolerances, and the cleaned marts export weekly to a public GeoParquet dataset on Hugging Face.
- A published methodology page and claims registry that name real limitations openly, including about 45% geocoding coverage and the structural rarity of EU salary disclosure.
It surfaces where the field's demand is visible and where its coverage is thin; it is not a complete or unbiased census of the profession. The demand map shows only the geocoded, licensable subset of postings, and honest salary data remains concentrated in a handful of countries.
Anyone deciding whether to enter, move within, or hire for the geospatial profession is working blind. Job information is scattered across dozens of boards, salary figures are opaque or self-reported, and the field's own map, where its work concentrates and where it thins out, has never been drawn honestly. The task was to build one trustworthy instrument for the field, under a hard data constraint: the honest data is narrow and the plentiful data is not licensable.
My contribution
I designed and built the entire product and its data platform as founder and lead developer. On the data side I built a three-layer architecture: raw intelligence substrate tables in Supabase and PostGIS, 21 dbt models across staging, intermediate and mart layers, and public APIs and pages that read only the certified marts. I wrote the collectors that ingest from aggregator APIs (Adzuna across 19 countries, Reed, USAJobs) and around 30 curated employer ATS boards, plus a government-survey loader for salary. I built the occupation crosswalk that maps free-text job titles to roughly 20 internal role families and onward to SOC, ISCO, ESCO and NOC codes, an insert-time quality score (0 to 100, public threshold 40), and a claims registry that assigns every public assertion a trust class and confidence score and fails the CI build if a public-facing claim is not backed by a primary source.
Decisions and constraints
Decisions I made
- Split public demand at country level and kept the fine-grained H3 demand surface explicitly exploratory, because the spatial metric stayed too source-sensitive to publish as settled fact.
- Deliberately excluded the large Kaggle and LinkedIn-derived job dumps that would have multiplied the row count roughly tenfold, on both provenance and share-alike licence grounds, accepting a smaller but defensible corpus.
- Anchored public salary claims on 1,933 government and survey benchmark rows rather than posting-derived pay, because posted salaries are structurally selection-biased and disclosure rates are low outside the UK and US.
- Published the methodology, the confidence language, and the named limitations inside the interface, so the product's honesty is inspectable rather than asserted.
Operating constraint
Government salary surveys are reliable but sparse; aggregated job postings are abundant but selection-biased, geographically skewed, and frequently unusable under their terms of service. Public trust had to be built from the narrow, honest end of the data rather than the large, cheap end.
Claim boundary: It surfaces where the field's demand is visible and where its coverage is thin; it is not a complete or unbiased census of the profession. The demand map shows only the geocoded, licensable subset of postings, and honest salary data remains concentrated in a handful of countries.
Evidence
- Live public product at geospatial.careers, backed by a three-layer PostGIS and dbt platform: 21 dbt models, 188 ordered migrations, and a daily 10:00 UTC build.
- 1,933 government and survey salary benchmarks across five countries (BLS OEWS, ONS ASHE, Statistics Canada, US DOL H-1B, and EU sources), alongside roughly 15,000 research-grade postings across 19 countries.
- Metric perturbation checks gate every certified public metric (country demand, skill demand, salary median) against explicit drift tolerances, and the cleaned marts export weekly to a public GeoParquet dataset on Hugging Face.
- A published methodology page and claims registry that name real limitations openly, including about 45% geocoding coverage and the structural rarity of EU salary disclosure.