Analyze a job posting
analyze_vacancyAnalyze the text of a job posting that is not in ResumeQuick yet against a resume. Creates a NEW vacancy in the tracker; a vacancy already in the tracker is analyzed in place by analyze_tracked_vacancy, a radar match by analyze_radar_match. The same posting text analyzed before returns that analysis with status 'completed' and spends nothing, unless the resume or what the user told about themselves changed since; force=true re-runs it. Runs asynchronously — this returns an analysis_id immediately; get_vacancy_detail(analysis_id) shows the match, verdict and gaps once done, usually within 10 seconds. company, location and url are stored on the vacancy, shown on the tracker card, and make the analysis findable by search_vacancies(location=...). Counts as one vacancy analysis against the user's plan. Returns 'not_found' if resume_id is given but does not belong to the current user, and 'limit_exceeded' if the plan quota is reached.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| reused | No | True: the same text was analyzed before against the same resume and nothing was spent; company, location and url passed with the call are written onto that analysis. | |
| status | No | 'processing' — the analysis runs asynchronously; 'completed' — this posting text was analyzed before and that analysis is returned as is. | processing |
| task_id | Yes | Background task id (informational; get_vacancy_detail shows progress). | |
| analysis_id | Yes | Id of the created analysis; pass to get_vacancy_detail once ready. | |
| vacancy_title | No | Title stored on the vacancy. A new analysis keeps a passed title; without one it is the posting's first line until the analysis names the role. A returned earlier analysis keeps its own title. |