How it works

The market is the source of truth. We just translate it.

Nine steps, no black box. Every market figure is counted from published sources, cross-checked against other sources before it is called verified, and linked back to where it came from.

We read real job postings

1415job postings across 17 roles

For each role we collect job postings from Naukri, Indeed, company career pages and ATS boards, LinkedIn, Wellfound, Internshala and similar — currently 1415 job postings across 17 roles, last refreshed 04-10-2026. We store the requirement bullets verbatim and the URL. We never invent a number: if a figure has no source, it is not shown.

One portal's listings are one portal's employers, so no single source may supply more than half of a role's sample; the research planner flags any role that drifts past that, and each role page lists its own source mix.

Skills → capabilities, deterministically

Every JD phrase ("LangChain", "Bedrock", "vector DB") is matched against a public alias table to a canonical skill, and each skill maps to the capabilities it implies for that role. A capability's market weight is simply the share of job postings that mention any of its skills, recomputed from the postings on every refresh. Editors decide which capabilities belong on a role's map and write the reasoning; they never type the number. Each skill maps only to the capabilities that name it — "AI agents" does not count as MCP, and "AWS" does not count as a managed AI platform. No language model decides a weight.

weight = share of postings mentioning the skill

Every market number is cross-checked

Open roles: the role's exact title is searched on Naukri, LinkedIn and Indeed, and where we can read every result a portal returns, we count the ones that carry the title. Portals list different jobs and count differently, so counts are never added up: the figure is the median of the portals whose counts agree within 3×, and it is verified when two of them do. A reading cut short, or a rounded headline (LinkedIn's "10,000+", Indeed's "25" and up), is a minimum — it can raise the figure but never sets a count; an estimate can confirm a count but never sets one. The figure is never below the dated postings for the role we read ourselves in the last 60 days, and whenever it is a minimum it says "at least", on every page.

Pay, two measures side by side, never blended. What people earn is shown at three levels — Entry (0–2 years), Mid (2–5) and Senior (5+) — as an average: each salary site's own average for those years (AmbitionBox, Glassdoor, PayScale, Levels.fyi), combined as the median of the sites that agree within 30%, with the sites named. Sites define their numbers differently, so only averages are combined; "most earn ₹A–B" appears only where a site publishes the middle half (25th–75th percentile) for that level. What employers offer is the median of pay stated in current job postings across the portals, by level. When no salary site covers an AI title yet, the nearest conventional title is used and the page says so; when a level has too little data, it says that instead of showing a number.

A figure backed by one source only is labelled "not cross-checked yet". Search snippets, portals' own pay estimates and figures we could not open are never used.

Capability ≠ evidence ≠ signal

You rate yourself on three separate scales: can you do it (0–4), can you prove it (0–4), can recruiters see it (0–2). Readiness = Σ market-weight × (0.45·can-do + 0.35·can-prove + 0.20·visible). The breakdown is shown on every screen.

How the score is computed
readiness = Σ  weight(c) × ( 0.45·can_do(c)/4
                        + 0.35·can_prove(c)/4
                        + 0.20·visible(c)/2 )
can do · 0–4can prove · 0–4visible · 0–2

Shortest path, not longest course

8steps, maximum

Gap priority = weight × (100 − your score). We sort by priority per hour, pull in prerequisites, cap at eight steps, and pack into your weekly hours. Everything you already have, and everything under ~25% demand, goes in the "don't learn yet" list.

priority = weight × (100 − score)

Resources are selected, not produced

246free, link-checked resources

246 free resources (docs, videos, repos, courses) chosen for being hands-on and recent, each tagged with the capability it teaches and link-checked before publish. We prefer the official docs and builders over viral explainers.

Partner signal — what the postings don't say

Job postings lag. A requirement shows up in them months after hiring managers start screening for it, and some things that decide an offer never make it into a posting at all. So we ask the people who fill these roles — recruiters, headhunters, hiring managers — for a short read per role: which capabilities decide offers, which are décor, what is newly appearing. Each read is aggregated across partners and shown as its own signal next to the share of postings, never blended into it silently. When a partner read and that share disagree, both are shown and the page says so. We never ask partners for candidate data. How to become a partner.

Freshness and limits

50–161job postings per role today — treat weights as directional

A research session re-reads the market and proposes new roles, capabilities and resources for human review before anything goes live. We show how many openings exist and who is hiring — we are not a job board and never list individual postings. Sample sizes are small today — between 50 and 161 job postings per role, 83 on average — so treat weights as directional, and that is exactly why partner reads are added on top rather than waiting for the scrape to grow. Pay varies widely by city and company type, and several AI titles have no salary-site data of their own yet — those pages say which conventional title the figure is based on. Every role page links the sources behind its own numbers.

The table is open

The whole demand map — every role, every capability, its share of job postings, the sample size and the date — is published as JSON and CSV under CC BY 4.0. Use it in a placement report, a curriculum review, a newsletter, a model — just cite RoleGPS and link the role page. A map that only we can read is not a public map.

What we don't do. No job listings, no course, no DSA or aptitude drills — where RoleGPS fits. No guarantee of a job. No tracking beyond anonymous usage analytics. Signing in is optional and stores your progress only — what we keep.