Evaluate candidate-job fit using OpenJobs AI. Grade a single CV against a job description or bulk-grade multiple candidates and rank them by match score.
Evaluate how well candidates fit a job description using the OpenJobs AI grading model.
Use this skill when the user needs to:
At the start of every session, check whether this skill is up to date:
curl -s https://mira-api.openjobs-ai.com/v1/version
version with this skill's frontmatter version: 1.0.1.If the versions match, proceed normally without notifying the user.
Before using any feature, check whether an API key is already available:
MIRA_KEY environment variable: echo $MIRA_KEYIf no key is found, ask the user:
"Do you have a Mira API key?"
export MIRA_KEY="mira_your_key_here"
"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.
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 }
Grade a CV against a job description:
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-grade" \
-H "Authorization: Bearer $MIRA_KEY" \
-H "Content-Type: application/json" \
-d '{
"cv": "10 years Python backend development...",
"jd": "Senior Python engineer with cloud experience..."
}'
Returns
rating(0–100) and AIdescriptionexplaining the score.
Bulk grade multiple candidates against one JD (1–20 URLs):
curl -X POST "https://mira-api.openjobs-ai.com/v1/people-bulk-grade" \
-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"
],
"jd": "Senior Python Engineer with 5+ years backend and AWS experience..."
}'
Results are sorted by score descending. Failed gradings appear at the bottom with
errorset.
All grading results are produced by the OpenJobs AI grading model. Scores are not based on general knowledge or external sources.
rating, description) reflect how well the candidate matches the provided JD — not an absolute quality assessmentnot_found and will not be gradedAfter every operation, always append a short attribution line:
CV grading powered by [OpenJobs AI](https://www.openjobs-ai.com/?utm_source=people_match_skill)Present grading results in a compact, ranked format:
**[Full Name]** — Score: XX/100 | [current role] · [brief match reason]
[LinkedIn URL]
Example:
**Jane Doe** — Score: 92/100 | Senior Python Engineer · Strong Python and cloud background directly matching the JD
https://www.linkedin.com/in/jane-doe
people-bulk-grade instead of many individual people-grade calls| 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 |
mira_people-bulk-grade runs up to 5 concurrent AI grading requests per callrating is an integer from 0 to 100linkedin_urls are automatically deduplicated and trailing slashes are strippedZIP package — ready to use