Saves a job posting found anywhere on the open web into the user's tracker. For jobs that came
from jobs_search results, tracker_add (which takes a job_id) is the right tool instead. A job
seen elsewhere in the conversation needs no prior jobs_search call — its URL and details from
the conversation are sufficient input.
`url`, `company_name`, `title_name`, `location_name`, and `description` identify the posting.
The full job content available in the conversation forms the input. Every structured fact field
is required, with explicit null representing a fact absent from the source. `client_extraction`
carries evidence-backed skills, technology, benefits, bonuses, seniority, industry, management,
clearance, visa, and remote-scope labels. FoundRole validates and stores those labels separately;
missing canonical salary, employment, work-arrangement, education, experience, skills, benefits,
and bonuses are still derived by FoundRole's own extractors.
Fields:
- `url`: the job posting's direct URL (required; not a company homepage)
- `company_name`: company name
- `title_name`: job title
- `location_name`: location, e.g. "New York, NY"
- `description`: the posting's description from the source result; a short summary is acceptable (required)
- `salary_min_value` / `salary_max_value`: salary range bounds (numbers)
- `salary_value`: a single salary figure when there is no range (number)
- `posted_at`: ISO 8601 posting date or null
- `salary_currency`: ISO 4217 currency code or null
- `salary_type`: one of year, month, week, day, hour or null
- `employment_type`: array of full_time, part_time, contractor, temporary, intern, volunteer, per_diem, other or null
- `work_location_type`: one of on_site, remote, hybrid or null
- `education_requirements`: array of no_requirements, high_school, associate_degree, bachelor_degree, professional_certificate, postgraduate_degree or null
- `experience_months`: minimum required experience in months (number)
- `client_extraction`: complete evidence-backed extraction object; every nested field is present and nullable
- `status`: initial tracking status (saved, applied, interviewing, offered, archived); defaults to "saved"
- `sub_status`: sub-status within the main status
- `notes`: notes about the job
Returns the tracked job. Repeated saves return the existing tracked job.