Map the talent market
Map employers, compensation, skills trends, and supply and demand for a role and location.
Claude Code with web search and file access. No external API key required.
/rp-market-map — Competitive Landscape Mapper
Map the talent landscape for a specific role and market. Produces a structured brief covering: who competes for this talent, where these people currently work, what they earn, which skills are trending, and whether this is a buyer's or seller's market right now.
Uses WebSearch to pull real salary data, job posting volume, and market signals. Zero API cost beyond Claude usage.
Input
Parse the user's argument to extract:
role_title— the job title to map (e.g., "Senior DevOps Engineer", "Head of Product", "ML Engineer")location— city, metro, state, or "Remote US" (e.g., "Austin, TX", "New York", "Remote US")
Generate a slug from the combination: {role-slug}-{location-slug} (e.g., senior-devops-engineer-austin-tx).
If the location is missing, ask before proceeding. Location context is required for accurate comp data.
Step 1: Load Config
Check if ~/.recruiter-skills/config.yaml exists. If it does, read it. The recruiter.specialties, recruiter.target_industries, and icp fields provide context for which companies and candidates to prioritize in this map.
Step 2: Research Phase (WebSearch)
Run the following searches in sequence. For each, extract the most relevant data points. Do not include raw search result text in the output — synthesize and attribute.
2a. Compensation Data
Search queries (run 2-3 of these, pick the most data-rich results):
"{role_title}" salary "{location}" 2025 site:levels.fyi OR site:glassdoor.com OR site:linkedin.com/salary OR site:salary.com"{role_title}" compensation range "{location}" 2025"{role_title}" pay "{location}" percentile
Extract: base salary range (25th/50th/75th percentile if available), total comp if relevant (for tech roles), equity/bonus norms.
2b. Job Posting Volume and Demand
Search queries:
"{role_title}" jobs "{location}" site:linkedin.com/jobs OR site:indeed.com OR site:greenhouse.io"{role_title}" "{location}" hiring 2025
Extract: approximate number of active postings, which companies are actively hiring, how long postings have been up (proxy for difficulty to fill).
2c. Competitor Companies (Who Hires This Role)
Search queries:
companies hiring "{role_title}" "{location}""{role_title}" "{location}" team site:linkedin.com- top employers
{role_title}{location}OR remote
Extract: 8-15 specific companies that hire this exact role in this market. Categorize by type: (a) direct competitors for talent, (b) feeder companies (where candidates come from), (c) destination companies (where candidates want to go).
2d. Talent Pool Locations (Where These People Currently Work)
Search queries:
"{role_title}" "{location}" linkedin.com/in"{role_title}" professionals "{location}"where do "{role_title}" work "{location}"
Extract: The top 5-8 companies where this role concentration is highest right now. These are the hunting grounds.
2e. Skills Trends
Search queries:
"{role_title}" required skills 2025"{role_title}" job description requirements 2025what skills does a "{role_title}" need 2025
Extract: must-have skills (appearing in >70% of postings), nice-to-have skills, and skills that are declining in relevance (being replaced by newer tools/tech).
2f. Supply/Demand Signals
Search queries:
"{role_title}" talent shortage 2025 OR "{role_title}" oversupply 2025"{role_title}" hiring market 2025
Extract: Is this role in shortage (hard to fill, candidates have leverage) or surplus (many qualified applicants, clients have leverage)? Any recent layoffs or hiring freezes in this category?
Step 3: Synthesize and Write the Market Map
Format the output as a structured brief. Use these exact section headers with the separator style shown:
Step 4: Save Output
Target path: ~/.recruiter-skills/data/research/market-map-{slug}.md
Ensure the directory exists:
Write the full formatted brief to that file. Confirm the path at the end of your output.
Step 5: Suggest Next Step
After delivering the map, suggest ONE action based on what the data showed:
- If active job postings were found at specific companies: "Run
/rp-signals {company}to check for fresh hiring signals at [top company from the active hiring list]." - If the role looks hard to fill (candidate market, HARD difficulty): "Run
/rp-source {role} in {location}(requires RapidAPI key) to begin candidate sourcing with the talent pools identified above." - If the recruiter doesn't have candidates yet for this role: "Run
/rp-resume-screenwith any resumes you have to quickly identify who fits the comp and skills profile above."
Output Format Rules
- Use plain text with the separator and header style shown above. No markdown
##headers. - Attribute data sources inline when relevant ("per Glassdoor data", "based on LinkedIn job postings").
- If data wasn't findable for a section, say so explicitly: "[Could not find reliable comp data for this location/title — suggest using Levels.fyi manually for this one]"
- Do not fabricate salary figures. If search results are thin, give a range with explicit low confidence note.
- Keep the brief scannable — a recruiter should absorb it in under 5 minutes.