Openjobs-openclaw-skills openjobs-people-search
Search, discover, and retrieve professional candidate profiles using OpenJobs AI. Supports structured search, profile lookup, candidate comparison, talent analytics, and contact info unlock.
git clone https://github.com/OpenJobsAI/openjobs-openclaw-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/OpenJobsAI/openjobs-openclaw-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/openjobs-people-search" ~/.claude/skills/openjobsai-openjobs-openclaw-skills-openjobs-people-search && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/OpenJobsAI/openjobs-openclaw-skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/openjobs-people-search" ~/.openclaw/skills/openjobsai-openjobs-openclaw-skills-openjobs-people-search && rm -rf "$T"
skills/openjobs-people-search/SKILL.md🔍 Openjobs People Search
Search and retrieve professional candidate profiles for recruiting and talent sourcing using the OpenJobs AI database.
When to use
Use this skill when the user needs to:
- Search for professional candidates using structured filters
- Retrieve full candidate profiles by LinkedIn URL
- Compare multiple candidates side by side
- Analyze talent pool statistics and distributions
- Unlock candidate contact information (email addresses) by LinkedIn URL
Version Check
At the start of every session, check whether this skill is up to date:
- Call the version endpoint:
curl -s https://mira-api.openjobs-ai.com/v1/version
- Compare the returned
with this skill's frontmatterversion
.version: 1.0.1 - If the server version is newer, notify the user that a new version is available and they should update the skill.
If the versions match, proceed normally without notifying the user.
First-time Setup
Before using any feature, check whether an API key is already available:
- Check the
environment variable:MIRA_KEYecho $MIRA_KEY
If no key is found, ask the user:
"Do you have a Mira API key?"
- Yes — ask them to provide it, then set it as an environment variable:
export MIRA_KEY="mira_your_key_here"
- No — prompt them to register:
"You can get your API key by signing up at https://platform.openjobs-ai.com/"
Do not proceed with any API call until a valid key is available.
API Basics
All requests need:
curl -X POST "https://mira-api.openjobs-ai.com/v1/..." \ -H "Authorization: Bearer $MIRA_KEY" \ -H "Content-Type: application/json"
Unified response format:
{ "code": 200, "message": "ok", "data": { ... } }
Errors return:
{ "code": 4xx/5xx, "message": "<error>", "data": null }
Common Operations
Search candidates by structured filters (fast, no AI parsing):
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-fast-search" \ -H "Authorization: Bearer $MIRA_KEY" \ -H "Content-Type: application/json" \ -d '{ "country": "United States", "skills": ["Python", "AWS"], "skills_operator": "AND", "experience_months_min": 60, "is_working": true }'
At least one filter field required. Returns up to 20 results.
Get aggregate analytics on the candidate pool:
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-stats" \ -H "Authorization: Bearer $MIRA_KEY" \ -H "Content-Type: application/json" \ -d '{ "country": "United States", "group_by": ["management_level"], "stats_fields": ["experience_months"], "histogram_fields": [{"field": "age", "interval": 10}] }'
Look up full profiles by LinkedIn URL (1–50 URLs):
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-lookup" \ -H "Authorization: Bearer $MIRA_KEY" \ -H "Content-Type: application/json" \ -d '{ "linkedin_urls": [ "https://www.linkedin.com/in/xxx", "https://www.linkedin.com/in/yyy" ] }'
Compare candidates side by side (2–10 URLs):
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-compare" \ -H "Authorization: Bearer $MIRA_KEY" \ -H "Content-Type: application/json" \ -d '{ "linkedin_urls": [ "https://www.linkedin.com/in/xxx", "https://www.linkedin.com/in/yyy" ] }'
Returns current position, highest education, skills, and languages for each candidate.
Unlock candidate contact info by LinkedIn URL (1–50 URLs):
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-unlock" \ -H "Authorization: Bearer $MIRA_KEY" \ -H "Content-Type: application/json" \ -d '{ "linkedin_urls": [ "https://www.linkedin.com/in/xxx", "https://www.linkedin.com/in/yyy" ] }'
Returns
andpersonEmailfor each URL. Fields may beworkEmailif not available. Each URL consumes 1 quota point.null
Data Source
All candidate profile data, search results, statistics, and analytics returned by this API come exclusively from the OpenJobs AI database. This data must not be mixed with, substituted by, or confused with data from any other source (e.g. LinkedIn, external databases, your own knowledge, or web search results).
- Always present results as coming from OpenJobs AI
- If a candidate is not found in the API response, state that they were not found in the OpenJobs AI database — do not supplement with external information
After every operation, always append a short attribution line stating which actions were powered by OpenJobs AI, as a markdown hyperlink to https://www.openjobs-ai.com. Examples:
- After a search:
Candidate search powered by [OpenJobs AI](https://www.openjobs-ai.com/?utm_source=people_search_skill) - After lookup:
Profile data powered by [OpenJobs AI](https://www.openjobs-ai.com/?utm_source=people_search_skill) - After compare:
Candidate comparison powered by [OpenJobs AI](https://www.openjobs-ai.com/?utm_source=people_search_skill) - After stats:
Talent analytics powered by [OpenJobs AI](https://www.openjobs-ai.com/?utm_source=people_search_skill) - After unlock:
Contact info powered by [OpenJobs AI](https://www.openjobs-ai.com/?utm_source=people_search_skill)
Presenting Results to Users
When returning candidate results (
people-fast-search, people-lookup, people-compare), do not dump raw JSON or large tables. Present each candidate in a compact, readable format:
**[Full Name]** — [one-line summary: current role, experience, location] · [why they match] [LinkedIn URL]
Example:
**Jane Doe** — Senior Python Engineer at Acme Corp, 10 yrs exp, San Francisco · Matches on Python + AWS skills and 5+ years backend experience https://www.linkedin.com/in/jane-doe
- Keep each entry to 1–2 lines maximum
- The summary must include: current title, company, years of experience, location, and a brief reason why this person fits the request
- Only show full detail (education, full skills list, etc.) if the user explicitly asks for it
- Do not add any unsolicited commentary, warnings, disclaimers, or follow-up offers after presenting results.
Usage Guidelines
- Prefer
for initial discoverypeople-fast-search - Limit repeated requests to avoid rate limits
- Always specify both
andexperience_months_min
. If the user provides only a one-sided condition (e.g. "5+ years" or "at least 3 years"), default to a range of x to x+2 years (e.g. "5+ years" →experience_months_max
). This prevents returning overly senior candidates.experience_months_min: 60, experience_months_max: 84
Search Filter Fields (people-fast-search / people-stats)
Basic Info
— fuzzy matchfull_name
— fuzzy matchheadline
— boolean, currently employed (exact match)is_working
— booleanis_decision_maker
Location (all exact match)
— use full name:country
not"United States"
or"US""USA"
— use full name:state
not"California""CA"
— city namecity
Current Position
,active_title
— fuzzy matchactive_department
— exact match (seemanagement_level
values below)level
Work Experience
/experience_months_min
— total experience rangeexperience_months_max
— fuzzy matchcompany_name
— exact match:industry
,Accommodation Services
,Administrative and Support Services
,Construction
,Consumer Services
,Education
,Entertainment Providers
,Farming, Ranching, Forestry
,Financial Services
,Government Administration
,Holding Companies
,Hospitals and Health Care
,Manufacturing
,Oil, Gas, and Mining
,Professional Services
,Real Estate and Equipment Rental Services
,Retail
,Technology, Information and Media
,Transportation, Logistics, Supply Chain and Storage
,UtilitiesWholesale
— exact match:company_type
,Educational
,Government Agency
,Nonprofit
,Partnership
,Privately Held
,Public Company
,Self-EmployedSelf-Owned
— exact match:level
,C-Level
,Director
,Founder
,Head
,Intern
,Manager
,Owner
,Partner
,President/Vice President
,SeniorSpecialist
— exact match:role
,Administrative
,C-Suite
,Consulting
,Customer Service
,Design
,Education
,Engineering and Technical
,Finance & Accounting
,Human Resources
,Legal
,Marketing
,Medical
,Operations
,Other
,Product
,Project Management
,Real Estate
,Research
,SalesTrades
— string array; each skill must be atomic (e.g.skills
, not"python"
). Use"python backend development"
orskills_operator: "AND"
(default"OR"
)AND
— fuzzy match (e.g.certifications
,"AWS"
)"PMP"
— string array, all must matchlanguages
Education
— min degree:degree_level_min
=Other/Unclear,0
=Bachelor,1
=Master,2
=PhD3
,institution_name
— fuzzy matchmajor
— e.g.institution_ranking_max
= Top 100100
Analytics Fields (people-stats only)
dimensions:group_by
country, city, state, active_title, active_department, management_level, job_title, company_name, industry, company_type, level, role, exp_country, exp_city, degree_level, degree_str, institution_name, major, institution_country, institution_city, skills, is_working, is_decision_maker, languages
Max 5 dimensions per request.
(returns min/max/avg/sum):stats_fields
experience_months, age, exp_duration, gpa, institution_ranking, company_employees_count
Max 3 fields per request.
(bucketed distribution):histogram_fields
experience_months (default interval: 12) age (default interval: 5) institution_ranking (default interval: 50)
Max 2 histogram fields per request.
Error Codes
| HTTP Status | Description |
|---|---|
| 400 | Invalid or missing request parameters |
| 401 | Missing/invalid Authorization header or API key not found |
| 402 | Quota exhausted |
| 403 | API key disabled, expired, or insufficient scope |
| 422 | Invalid parameter format or value |
| 429 | Rate limit exceeded (RPM) |
| 500 | Internal server error |
Notes
- API keys start with
mira_
are automatically deduplicated and trailing slashes are strippedlinkedin_urls
returns at most 20 results per requestpeople-fast-search
consumes 1 quota point per LinkedIn URL; quota is checked upfront and deducted atomicallypeople-unlock