Sources
We read jobs only from each company's own public job-board API, run by the applicant tracking system (ATS) the company chose: Greenhouse, Ashby, Lever or Workable. We currently track 32 AI companies. We don't scrape LinkedIn, X, Facebook, Instagram, aggregators or other job sites, and we don't use rumours or crowd-sourced reports.
- Greenhouse Job Board API:
boards-api.greenhouse.io/v1/boards/{company}/jobs - Ashby Posting API:
api.ashbyhq.com/posting-api/job-board/{company} - Lever Postings API:
api.lever.co/v0/postings/{company} - Workable public job widget:
apply.workable.com/api/v1/widget/accounts/{company}
Our crawler identifies itself as RoleRadarBot with a contact address. It makes one request per company per refresh (retrying at most twice on server errors), sends no more than two requests at a time to any one job-board provider, and honours Retry-After: if a source asks us to wait longer than 30 seconds, we stop and try again on the next scheduled refresh.
Refresh and verification
- Every company's board is read several times a day. Each job shows when it was last verified: the last time we saw it live on the employer's board.
- When a job disappears from the board, we mark it closed on that refresh and keep the closing date.
- If a read fails, or a board suddenly returns zero jobs or less than half of its previous open roles, we don't close anything. We hold the data, flag it on the status page and retry. Runs never overlap for the same company.
- We keep an archive of every job's first-seen and last-seen dates. That history powers trends and, later, time-to-fill figures.
- “New today” means first seen in the last 24 hours. Jobs that already existed when we started tracking a company are not counted as new.
- “Open for X days” is counted from the date the employer's job board gives. For Lever that is the date the posting was created; for the others it is the publish date. It is a plain fact, not a judgement about the role.
- The “Verified” check mark shows only when we confirmed the job in the last 24 hours. Older confirmations show as “Last verified”.
What we show (and don't)
- Remote, hybrid or on-site only when the posting text or the employer's workplace field on the job board states it. We quote the employer's own wording when there is some; otherwise we say it came from the job-board field. If neither says, we show “Not stated”.
- Countries are inferred by us from the listed location names (for example “Paris” → France) and labelled as inferred.
- Visa sponsorship only when the posting explicitly says it is or isn't offered.
- Experience is the smallest number of years the posting asks for. PhD required and PhD preferred are counted separately; “or equivalent experience” counts as preferred.
- No copying. We don't store or show job descriptions. We show key facts and a summary generated from those facts, and link to the original posting.
- Apply always goes to the employer's own application page.
- We don't add Google JobPosting markup without the employer's permission.
Roles and levels
Each job is placed in one role group using words in its title, then its department if the title isn't clear. The groups are: Research, ML & AI engineering, Software engineering, Infrastructure & platform, Data science & analytics, Security, Hardware & robotics, Product & program, Design, Sales & partnerships, Solutions & customer, Marketing & comms, Operations & strategy, Policy & legal, People & recruiting, Finance, Other.
Level (Senior, Staff, Principal and so on) and entry-level type (internship, new grad, residency, fellowship, apprenticeship, junior) come only from the title and employment type the employer published. Recruiting roles such as “Campus Recruiter” and titles like “Resident Solutions Architect” are not counted as entry level. The role group is RoleRadar's own classification and is labelled as such.
Skills
We match a published list of 67 skills against each posting's full text, using case-aware patterns that avoid common false matches (for example, “Go” the language versus the verb). Skill shares are the percentage of open postings that mention a skill. We check samples by hand after every change to the list. Current list: Python, C++, Rust, Go, TypeScript, JavaScript, Java, Scala, Kotlin, Swift, SQL, PyTorch, JAX, TensorFlow, CUDA, Triton, Hugging Face, vLLM / TensorRT, Ray, Machine learning, Deep learning, LLMs, NLP, RLHF & post-training, Reinforcement learning, Distributed training, Inference optimization, Model evaluation, RAG & retrieval, AI agents, Interpretability, AI safety & alignment, Computer vision, Diffusion & generative media, Speech & audio, Recommender systems, MLOps, Statistics, A/B testing, Kubernetes, Docker, Terraform, AWS, Google Cloud, Azure, Linux, Distributed systems, GPU clusters & HPC, Observability, CI/CD, Security engineering, Spark, Kafka, Airflow, dbt, Snowflake, BigQuery, PostgreSQL, Data pipelines, React, Node.js, API design, Figma, Salesforce, Verilog / RTL, Embedded & firmware, Robotics.
Salaries
- A salary appears only if the employer published it, either in a structured ATS compensation field or as an explicit range in the posting text near pay wording.
- The currency must be explicit: a code such as USD or GBP, or an unambiguous symbol such as £ or €. A bare “$” counts as US dollars only when every listed location is in the United States; otherwise we leave the salary out.
- The pay period must be stated (per year, per hour and so on). The only exception is a range labelled “salary” or “base salary”, which is annual by convention. On-target earnings (OTE) and commission figures are excluded, because the explorer covers base pay.
- We never convert currencies, annualise hourly pay, or estimate missing ranges. If a posting lists several ranges (for example by location), we show the first.
- Aggregates use range midpoints and require at least 3 ranges per group.
Known limits
- Coverage is limited to companies that use a supported ATS with a public API.
- Published salaries skew toward places with pay-transparency laws (several US states, parts of Canada and the EU).
- Automated classification can be wrong. Report errors on the corrections page. Fixes are recorded in the corrections log.
- Layoff data (US state WARN notices and SEC 8-K Item 2.05 filings) is on our roadmap. When added, it will be shown beside open roles, never subtracted into a “net” figure, and never given a cause the official source doesn't state.
Neutrality
No company pays to be listed, ranked or left out. Default sorting is by posting date. If we ever carry sponsored content, it will be clearly labelled and kept separate from job results. Employers can claim their page, correct facts or opt out at any time.