Skip to content

SourceTracker

Website sources.letsemploy.org
API GraphQL (read-only)
Export /exports/download-latest
Status Public beta, best effort

SourceTracker keeps a register of domains that publish oJobPub, validates each feed periodically, and publishes the feeds of healthy domains as a daily export. It is not a job board. It doesn't search, rank or normalize jobs.

Sources

A source is a registrable domain such as example.com. SourceTracker rejects subdomains (www.example.com, jobs.example.com). Anyone can register a domain. Registration is protected by a captcha.

Probes

A probe fetches https://<domain>/.well-known/ojobpub.json with:

  • a connect and read timeout of 5 s,
  • at most 5 redirects,
  • the user agent oJobPub-SourceTracker/1.0.

It then runs these checks in order:

# Check Passes when
1 dns-address-record-check The domain resolves to an address, with www. tried as a fallback
2 json-downloadable-check The response status is 2xx
3 json-valid-check The body parses as JSON
4 schema-version-valid-check version is supported (1.0) and the document validates against the schema
5 job-description-policy-check No description contains HTML, script or spam/adult-content terms

A probe succeeds only if every check passes. A check that is skipped because an earlier one failed counts as a failure. The source page lists each check's result and details.

Lifecycle

Status Meaning Next probe
UNKNOWN Newly registered, not probed yet Immediately after registration
HEALTHY The last probe succeeded After 24 h
UNHEALTHY The last probe failed After 1 h
  • Anyone can request an earlier revisit from the source page. The probe is then moved up to within 10 minutes.
  • SourceTracker stores a new document only when its SHA-256 hash changes.
  • Sources that stay unhealthy for 30 days are removed. You can register them again at any time.

Export

Every day, the feeds of all healthy sources are packed into letsemploy-ojobpub-<YYYY-MM-DD>.tar.xz, with one <domain>.json per source. Exports are kept for 30 days. See Consuming for usage.