How we collect and verify data

GovJobs Wiki is built from a structured dataset about government jobs: every figure on the site comes from a dated, traceable record.

The structure

Jobs are organized in levels: level of government (federal, state, local) → job family → job → rank or position on its ladder → the individual employer. Every job is described along the same 16 dimensions, from requirements and the hiring process to pay, pension and union contracts.

Where every record comes from

Every record carries its provenance: which sources it cites, how it was produced, its status, when its content last changed, and when it was last checked. Statuses mean:

  • Sourced (imported) — taken verbatim from an official dataset. We store the exact file we downloaded, with a cryptographic hash, so the number can be traced to the source file.
  • Sourced (verified) — a person checked the value against a specific place in an official source on a stated date.
  • Editorial — our own structure or summary, such as how jobs are grouped or a typical promotion ladder. Editorial content is always labeled and is never presented as an official fact.
  • Derived — computed from other records, such as related jobs that share an occupation code.
  • Not yet collected — part of the structure, with no published data yet. We leave these empty rather than estimate.

State pay plans

Most states publish a classification and pay plan for their own employees: a list of job classes (such as Correctional Officer I–IV) and the pay grade or range each class is assigned. We import these plans from each state's personnel agency and keep the published rates exactly as printed, in the plan's own unit. Annual figures on our pages are conversions (hourly × 2,080, monthly × 12, and so on) and are labeled as such. A class the plan prints without a fixed rate is shown without one, never as zero.

To connect a state class to a job page, each job carries a short list of title stems (for example "correctional officer"). A class matches when its title, minus level words such as I, II, Trainee or Senior, equals one of those stems. The rule is our editorial choice and is published with each job in the data API; the pay figures themselves come from the state.

Checks that run before anything is published

The site is rebuilt from the dataset, and the build stops if any check fails:

  • Every record matches its schema, and every reference to another record resolves.
  • Every source file still matches the hash recorded when it was downloaded.
  • Records imported from official data exactly match what the stored source files produce; they cannot be edited by hand.
  • A fact whose source is past its refresh window blocks the build until the source is refreshed.
  • Every page that shows licensed content displays the required attribution, and every internal link resolves.

When a job page appears in search engines

A job page is published for search engines once at least 4 of its dimensions carry sourced data. Until then it is available on the site but marked as not for indexing.

Corrections

When we fix a record, we update the record itself, its change date and its verification date. The previous value stays in the version history of the dataset.