job-search
ChatGPTSearch for current open job postings in the United States that match the user's request at Centene. ALWAYS invoke this tool for any message that includes/implies job search or job application at Centene. Use this tool whenever the user wants to find, browse, filter, refine, or compare job opportunities at Centene in the US. Typical intents include: - finding / browsing / refining jobs at Centene by title, salary, location, or named benefit - showing more results from an existing search Examples of requests that should use this tool: - "Find software engineer jobs in Seattle" - "Any product manager roles?" - "Find jobs paying at least $120,000" - "Show more results" / "Only in Chicago" This tool should be used for both initial searches and follow-up refinements in a multi-turn conversation. US-only scope: - This tool supports US job searches only. - Location inference and normalization apply only to locations in the United States. - Do not infer or return non-US locations. - This tool searches only jobs at Centene. - DO NOT use the companyName filter, even if asked by the user. - If the user asks for jobs at another company, still use this tool only for Centene's jobs. Parameters: RULE #1 — keywordsAnd CALIBRATION (the most common failure, both directions): first COUNT the REQUIRED concepts. The occupation counts; each HARD requirement counts; a SOFT/optional preference does NOT count ("a plus", "ideally", "nice to have", a vague vibe/culture wish, "good pay" with no number) — those stay in vquery, never a group. - 2+ REQUIRED concepts → keywordsAnd, each its OWN group. NEVER flatten two requirements into one OR list ("senior backend, Go" MUST be [["backend engineer","backend developer"],["Go","Golang"]], never keywords ["backend engineer","Go"] — flat floods). - exactly 1 required concept → a flat keywords list (+ role). Do NOT split a single axis, and do NOT promote a soft wish to its own group (that STARVES the search). - Cap at 2 groups; a 3rd ONLY if all three are hard AND commonly printed. HOW TO REASON — the mechanics below are necessary but not sufficient; applying them well means first inferring what the user actually WANTS, then routing. Reason from intent, not surface words. For everything the user names, work through: - LITERAL vs INTENDED — what does the phrase mean at face value, and is that what a real job-seeker means by it? When they differ, choose the intended reading (a playful or figurative ask usually names a real occupation, not a literal feature). - CORE vs ATTRIBUTE — is this the occupation they want, or a property that refines it? The occupation anchors the search; attributes constrain it. - HARD vs SOFT — was it stated as a requirement or a preference ("a plus", "ideally", "nice to have" = soft)? Harden requirements (a structured field, or a required keywordsAnd group); keep preferences in vquery. Never harden a wish into a filter, never soften a stated requirement. - MATCHABILITY — would a relevant posting actually print this, and how (a structured field, literal text in the body, or not at all)? Route each thing to the leg that can match it; do not force lexically what postings never print — that goes to vquery. - DIRECTION — with any contrast (from→to, want X not Y, moving away from something), pursue the destination and exclude the source; never search the thing the user is leaving or rejecting. SEARCH MECHANICS — non-obvious engine facts you cannot guess; reason from these: 1. The BM25 corpus is the FULL job description (title, body, requirements, skills, benefits, location/salary/contract/remote text, visa/EEO). Almost anything the user names appears in some posting and IS matchable — but generic words match broadly, so keyword groups must stay tight. 2. Location, salary, company, full-time/part-time, and remote are MANDATORY-STRUCTURED: each goes ONLY in its dedicated field (city/state, salaryMin, companyName, contractType, remote), NEVER in vquery/keywords/keywordsAnd/keywordsNot/role — even though this vocabulary also appears in the JD text. The structured field is authoritative. 3. No s…





