🔍 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:
- 1. Call the version endpoint:
curl -s https://mira-api.openjobs-ai.com/v1/version
- 2. Compare the returned
version with this skill's frontmatter 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:
- 1. Check the
MIRA_KEY environment variable: INLINECODE3
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:
CODEBLOCK2
Unified response format:
{ "code": 200, "message": "ok", "data": { ... } }
Errors return: INLINECODE4
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:
CODEBLOCK5
Look up full profiles by LinkedIn URL (1–50 URLs):
CODEBLOCK6
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 personEmail and workEmail for each URL. Fields may be null if not available. Each URL consumes 1 quota point.
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: INLINECODE8
- After lookup: INLINECODE9
- After compare: INLINECODE10
- After stats: INLINECODE11
- After unlock: INLINECODE12
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:
CODEBLOCK9
Example:
CODEBLOCK10
- - 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
people-fast-search for initial discovery - Limit repeated requests to avoid rate limits
- Always specify both
experience_months_min and experience_months_max. 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_min: 60, experience_months_max: 84). This prevents returning overly senior candidates.
Search Filter Fields (people-fast-search / people-stats)
Basic Info
- -
full_name — fuzzy match - INLINECODE21 — fuzzy match
- INLINECODE22 — boolean, currently employed (exact match)
- INLINECODE23 — boolean
Location (all exact match)
- -
country — use full name: "United States" not "US" or INLINECODE27 - INLINECODE28 — use full name:
"California" not INLINECODE30 - INLINECODE31 — city name
Current Position
- -
active_title, active_department — fuzzy match - INLINECODE34 — exact match (see
level values below)
Work Experience
- -
experience_months_min / experience_months_max — total experience range - INLINECODE38 — fuzzy match
- INLINECODE39 — exact match:
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,
Utilities,
Wholesale
- -
company_type — exact match:
Educational,
Government Agency,
Nonprofit,
Partnership,
Privately Held,
Public Company,
Self-Employed,
Self-Owned
C-Level,
Director,
Founder,
Head,
Intern,
Manager,
Owner,
Partner,
President/Vice President,
Senior,
Specialist
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,
Sales,
Trades
- -
skills — string array; each skill must be atomic (e.g. "python", not "python backend development"). Use skills_operator: "AND" or "OR" (default AND) - INLINECODE108 — fuzzy match (e.g.
"AWS", "PMP") - INLINECODE111 — string array, all must match
Education
- -
degree_level_min — min degree: 0=Other/Unclear, 1=Bachelor, 2=Master, 3=PhD - INLINECODE117 ,
major — fuzzy match - INLINECODE119 — e.g.
100 = Top 100
Analytics Fields (people-stats only)
group_by dimensions:
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.
stats_fields (returns min/max/avg/sum):
experience_months, age, exp_duration, gpa, institution_ranking, company_employees_count
Max 3 fields per request.
histogram_fields (bucketed distribution):
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 INLINECODE124
- INLINECODE125 are automatically deduplicated and trailing slashes are stripped
- INLINECODE126 returns at most 20 results per request
- INLINECODE127 consumes 1 quota point per LinkedIn URL; quota is checked upfront and deducted atomically
🔍 Openjobs 人才搜索
使用 OpenJobs AI 数据库搜索和检索专业候选人资料,用于招聘和人才寻源。
使用场景
当用户需要以下功能时使用此技能:
- - 使用结构化筛选条件搜索专业候选人
- 通过 LinkedIn URL 检索完整的候选人资料
- 并排比较多个候选人
- 分析人才库统计数据和分布情况
- 通过 LinkedIn URL 解锁候选人联系信息(电子邮件地址)
版本检查
每次会话开始时,检查此技能是否为最新版本:
- 1. 调用版本端点:
bash
curl -s https://mira-api.openjobs-ai.com/v1/version
- 2. 将返回的 version 与此技能的前置元数据 version: 1.0.1 进行比较。
- 如果服务器版本更新,通知用户有新版本可用,应更新此技能。
如果版本匹配,则正常进行,无需通知用户。
首次设置
使用任何功能之前,检查 API 密钥是否已可用:
- 1. 检查 MIRAKEY 环境变量:echo $MIRAKEY
如果未找到密钥,请询问用户:
您有 Mira API 密钥吗?
- - 是 — 请用户提供密钥,然后将其设置为环境变量:
bash
export MIRA
KEY=mirayour
keyhere
您可以通过在 https://platform.openjobs-ai.com/ 注册获取 API 密钥
在获得有效密钥之前,不要进行任何 API 调用。
API 基础
所有请求都需要:
bash
curl -X POST https://mira-api.openjobs-ai.com/v1/... \
-H Authorization: Bearer $MIRA_KEY \
-H Content-Type: application/json
统一响应格式:
json
{ code: 200, message: ok, data: { ... } }
错误返回:{ code: 4xx/5xx, message: , data: null }
常见操作
通过结构化筛选条件搜索候选人(快速,无需 AI 解析):
bash
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,
experiencemonthsmin: 60,
is_working: true
}
至少需要一个筛选字段。最多返回 20 条结果。
获取候选人库的聚合分析:
bash
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,
groupby: [managementlevel],
statsfields: [experiencemonths],
histogram_fields: [{field: age, interval: 10}]
}
通过 LinkedIn URL 查询完整资料(1–50 个 URL):
bash
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
]
}
并排比较候选人(2–10 个 URL):
bash
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
]
}
返回每位候选人的当前职位、最高学历、技能和语言。
通过 LinkedIn URL 解锁候选人联系信息(1–50 个 URL):
bash
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
]
}
返回每个 URL 的 personEmail 和 workEmail。如果不可用,字段可能为 null。每个 URL 消耗 1 个配额点。
数据来源
此 API 返回的所有候选人资料数据、搜索结果、统计和分析均来自 OpenJobs AI 数据库。这些数据不得与任何其他来源(例如 LinkedIn、外部数据库、您自己的知识或网络搜索结果)的数据混合、替换或混淆。
- - 始终将结果呈现为来自 OpenJobs AI
- 如果在 API 响应中未找到候选人,请说明该候选人未在 OpenJobs AI 数据库中找到 — 不要补充外部信息
每次操作后,始终附加一个简短的归属声明,说明哪些操作由 OpenJobs AI 提供支持,作为指向 https://www.openjobs-ai.com 的 Markdown 超链接。示例:
向用户呈现结果
返回候选人结果(people-fast-search、people-lookup、people-compare)时,不要转储原始 JSON 或大型表格。以紧凑、可读的格式呈现每位候选人:
[全名] — [一行摘要:当前角色、经验、地点] · [匹配原因]
[LinkedIn URL]
示例:
张三 — Acme Corp 高级 Python 工程师,10 年经验,旧金山 · 匹配 Python + AWS 技能及 5 年以上后端经验
https://www.linkedin.com/in/zhang-san
- - 每个条目最多保持 1–2 行
- 摘要必须包括:当前职位、公司、经验年限、地点以及此人符合要求的简要原因
- 仅在用户明确要求时显示完整详细信息(教育背景、完整技能列表等)
- 呈现结果后,不要添加任何未经请求的评论、警告、免责声明或后续提议
使用指南
- - 优先使用 people-fast-search 进行初步发现
- 限制重复请求以避免速率限制
- 始终同时指定 experiencemonthsmin 和 experiencemonthsmax。如果用户仅提供单边条件(例如5 年以上或至少 3 年),默认使用 x 到 x+2 年的范围(例如5 年以上 → experiencemonthsmin: 60, experiencemonthsmax: 84)。这可以防止返回过于资深的候选人。
搜索筛选字段(people-fast-search / people-stats)
基本信息
- - fullname — 模糊匹配
- headline — 模糊匹配
- isworking — 布尔值,当前在职(精确匹配)
- isdecisionmaker — 布尔值
地点(全部精确匹配)
- - country — 使用全名:United States 而非 US 或 USA
- state — 使用全名:California 而非 CA
- city — 城市名称
当前职位
- - activetitle、activedepartment — 模糊匹配
- management_level — 精确匹配(参见下面的 level 值)
工作经验
- - experiencemonthsmin / experiencemonthsmax — 总经验范围
- company_name — 模糊匹配
- industry — 精确匹配:
Accommodation Services、Administrative and Support Services、Construction、Consumer Services、Education