addedInput schema / properties / intent / description
Added value: +"What the candidate is actually looking for, stated explicitly rather than guessed from the resume. Every field is optional; the ones given narrow the result, and the excluded* fields remove roles the candidate does not want to see."
addedInput schema / properties / intent / properties / countries / description
Added value: +"Two-letter codes the candidate may work in, such as IN or US. This is eligibility to work, not where the office is"
addedInput schema / properties / intent / properties / excludedCountries / description
Added value: +"Two-letter codes to drop even when a role is otherwise eligible"
addedInput schema / properties / intent / properties / excludedLocations / description
Added value: +"Cities or regions to drop, matched like locations"
addedInput schema / properties / intent / properties / excludedRoles / description
Added value: +"Role titles to drop, matched like roles"
addedInput schema / properties / intent / properties / excludedTerms / description
Added value: +"Words that disqualify a role, matched as whole words in the title, such as \"intern\" or \"sales\""
addedInput schema / properties / intent / properties / locations / description
Added value: +"Cities or regions to keep, matched as case-insensitive substrings of the job's location, such as \"Bengaluru\" or \"Delhi NCR\""
addedInput schema / properties / intent / properties / remote / description
Added value: +"True to keep only remote roles, false to drop them; omit to keep both"
addedInput schema / properties / intent / properties / requiredSkills / description
Added value: +"Skills a role must state to be kept, such as \"kubernetes\". Each is matched as a whole word"
addedInput schema / properties / intent / properties / roles / description
Added value: +"Role titles the candidate is looking for, in their own words, such as \"backend engineer\" or \"data analyst\". Matched against the job title"
addedInput schema / properties / intent / properties / seniority / description
Added value: +"Levels to keep, in the posting's own vocabulary, such as \"senior\" or \"lead\". Not a years-of-experience filter: use experienceYears in search_jobs for that"
addedInput schema / properties / limit / description
Added value: +"How many ranked matches to return"
addedInput schema / properties / ranking / description
Added value: +"How matches are scored and how weak a match may be before it is dropped"
addedInput schema / properties / ranking / properties / mode / description
Added value: +"evidence scores a match only on requirements the resume text supports; keyword scores on term overlap alone"
addedInput schema / properties / refresh / description
Added value: +"Whether this call may crawl employer boards before ranking. Crawling costs seconds; the default only does it when the result would otherwise be thin"
addedInput schema / properties / refresh / properties / minimumMatches / description
Added value: +"With auto, the match count below which a refresh is worth the wait"
addedInput schema / properties / refresh / properties / policy / description
Added value: +"auto crawls once only when matches are thin and the snapshot is stale; never keeps the snapshot as it is; always crawls first"
addedInput schema / properties / refresh / properties / staleDays / description
Added value: +"With auto, how old the snapshot must be before a refresh is considered"
addedInput schema / properties / resume / description
Added value: +"The resume itself, passed inline. It is parsed in memory for this call and never written to disk, logged, or sent anywhere else."
addedInput schema / properties / resume / properties / format / description
Added value: +"How content is encoded: plain text, markdown, or base64 of a PDF or DOCX file"
changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "additionalProperties": true,
+ "properties": {
+ "assumptions": {
+ "description": "Anything inferred rather than stated; worth repeating to the candidate",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "coverage": {
+ "additionalProperties": true,
+ "properties": {
+ "countries": {
+ "description": "Per-country live and recent role counts",
+ "items": {
+ "additionalProperties": true,
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "snapshotUpdatedAt": {
+ "description": "When the index this answer came from was last refreshed",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "explanation": {
+ "description": "Why the result looks the way it does, in words meant for the candidate",
+ "type": "string"
+ },
+ "exploration": {
+ "additionalProperties": true,
+ "description": "Direct, hidden title-family and stretch groupings",
+ "type": "object"
+ },
+ "filteredOut": {
+ "additionalProperties": true,
+ "description": "Counts by reason, with a small sample, for roles the intent excluded",
+ "type": "object"
+ },
+ "matches": {
+ "description": "Ranked matches, each carrying the job, its scores, and the resume text that supports them",
+ "items": {
+ "additionalProperties": true,
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "nextActions": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "nextMoves": {
+ "description": "What to try next when the result is thin; relay these instead of inventing advice",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "outcome": {
+ "description": "widened means the date window had to open up to find anything; no_matches means say so rather than searching again silently",
+ "enum": [
+ "matches",
+ "widened",
+ "no_matches"
+ ],
+ "type": "string"
+ },
+ "profile": {
+ "additionalProperties": true,
+ "description": "What was read from the resume. It is returned so claims can be checked, and is not stored",
+ "type": "object"
+ },
+ "ranking": {
+ "additionalProperties": true,
+ "type": "object"
+ },
+ "refresh": {
+ "additionalProperties": true,
+ "description": "Whether this call crawled, and what it found",
+ "type": "object"
+ },
+ "shortfall": {
+ "additionalProperties": true,
+ "description": "Present when fewer matches came back than asked for",
+ "type": "object"
+ },
+ "snapshot": {
+ "additionalProperties": true,
+ "description": "Age and size of the index these matches came from",
+ "type": "object"
+ },
+ "window": {
+ "additionalProperties": true,
+ "description": "Which age windows were walked and which one the results came from",
+ "type": "object"
+ }
+ },
+ "required": [
+ "outcome",
+ "matches",
+ "explanation"
+ ],
+ "type": "object"
+}