ChatGPT for job search: what it can do, and how to give it live job postings
ChatGPT cannot see which jobs are open right now unless you connect it to a live source. What it does well for a job search, where it fails, and the setup that gives ChatGPT, Claude or Cursor live postings through an MCP connector or the CLI. Then the developer version: a job search agent on the API.
Dvir Atias
Founder, JobsPipe
People ask ChatGPT for jobs and get a confident list: a role at a company that exists, a title that sounds right, a link that goes to a 404. That is not a bug in the model. A language model knows what job postings looked like when it was trained, not which ones are open this morning. This post is honest about what ChatGPT does well in a job search, then shows the setup that gives ChatGPT, Claude or Cursor live postings, and finishes with the developer version for anyone building a job search agent.
Can ChatGPT find job postings?
Not on its own. Without a connected source, ChatGPT answers from training data and will describe roles that closed months ago or never existed. With web browsing it can find job board pages, but reads them one at a time. With a live job data connector it can search current postings by title, location, salary and freshness and return real apply links.
What ChatGPT can and cannot do for a job search today
Where it earns its keep, with no connector at all:
- Decoding a job description. Paste a posting and ask what the role really is, which requirements are hard and which are wish-list, and what to ask in the first interview.
- Tailoring material you already have. Rewriting a resume bullet for a specific posting, or drafting a first cover letter to edit, is a text task and it does text well.
- Interview preparation. Mock questions for a named role and company type, and feedback on your answers.
- Comparing offers. Given the numbers, it lays out the trade-offs clearly.
Where it fails, and no prompt fixes it:
- Knowing which roles are open now. The training cutoff makes every listing it recalls suspect.
- Verifying a posting is still live. A page that loads is not a job that is still hiring. Boards keep postings up long after the role closes.
- Searching across boards. Browsing reads one page at a time and cannot filter by salary, seniority or posting age across LinkedIn, Indeed and the applicant tracking systems companies post to directly.
- Applying for you. Agentic browsing can fill forms, but every application form is different and a wrong field is your problem, not the model’s.
Why ChatGPT job results go stale
Even a live board is a mix of open roles and leftovers, so a model that reads board pages inherits the noise. JobsPipe re-checks every collected posting and scores how likely it is to be a ghost job, which gives a cross-sectional view of what a job seeker is actually looking at:
The point for a job seeker: a connector that only fetches board pages would hand the model every one of those long-open and reposted listings as if they were fresh. A source that tracks status and age lets the model, or you, filter them out.
How to give ChatGPT, Claude or Cursor live job postings
The mechanism is a Model Context Protocol connector. JobsPipe runs one at https://mcp.jobspipe.dev/mcp; once connected, the assistant gets a search_jobs tool it calls on its own when you ask about roles. Results come from the same live index as the API: LinkedIn, Indeed, Y Combinator and the applicant tracking systems companies post to directly, deduplicated, with salary where the posting states one, the posting date, the last time the role was confirmed open, and a ghost score. The free tier covers 1,000 jobs a month, which is plenty for one person’s search.
- Create a free account at jobspipe.dev/signup. You can sign in from the assistant instead of copying a key; if your client wants a key, create one under Settings in the dashboard. It starts with
jp_live_. - Add the connector. Claude Desktop and claude.ai: Settings, Connectors, add custom connector, paste the URL. ChatGPT: Settings, Connectors, on plans with developer mode for connectors, paste the URL. Claude Code:
claude mcp add --transport http jobspipe https://mcp.jobspipe.dev/mcp. Cursor: the JSON below in.cursor/mcp.json. - Sign in when prompted, then ask a real question. The model chooses the filters; you can name them if you want a specific cut.
{
"mcpServers": {
"jobspipe": { "url": "https://mcp.jobspipe.dev/mcp" }
}
}Prompts that use the tool well:
- “Remote senior data engineer roles in Germany or the Netherlands posted in the last 14 days, only ones that state a salary, skip likely ghost jobs.” That becomes one call with
job_title_or,job_country_code_or,remote,posted_at_max_age_days,min_salary_usdandmax_ghost_score. - “Which companies posted product designer roles this week that were not on LinkedIn?” The model uses
source_notto keep only postings collected straight from the employer’s applicant tracking system. - “Is this job still open?” with the link. The tool returns
status,last_seen_atandclosed_atfor the posting.
From the terminal: the JobsPipe CLI
Coding agents with a shell, Claude Code, Codex and Cursor among them, can set themselves up. The Copy onboarding prompt on the JobsPipe homepage deep-links each of them with a single instruction: read /agents.md and perform the setup. Done by hand it is three lines:
npm i -g jobspipe-cli
export JOBSPIPE_API_KEY=jp_live_...
jobspipe jobs --title "product designer" --country US --remote --limit 5The CLI prints JSON, and a raw filter object as the positional argument unlocks the full query surface. It is the same data the connector returns, without a chat client in the middle.
How to build an AI job search agent on the API
If you are building the product rather than using one, the connector approach is still the fastest prototype, but a shipped agent calls the API directly. The whole thing is one endpoint. The filters that matter for a job seeker: title, country, remote, posting age, salary floor and the ghost score ceiling.
curl https://api.jobspipe.dev/v1/jobs/search \
-H "Authorization: Bearer $JOBSPIPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"job_title_or": ["data engineer"],
"job_country_code_or": ["DE", "NL"],
"remote": true,
"posted_at_max_age_days": 14,
"min_salary_usd": 90000,
"max_ghost_score": 49,
"limit": 25
}'Each row carries job_title, company, date_posted, last_seen_at, verified_at, status, min_annual_salary_usd, max_annual_salary_usd, ghost_score and the apply url, and metadata.next_cursor pages through the rest. Give the model that as a tool with a description that says when to call it, tell it in the system prompt to quote only what the tool returned, and add the one piece of logic that separates a useful agent from a demo: when a search returns nothing, widen it (drop the seniority word, raise the posting age, remove the country) before telling the user there are no jobs. Working code for Claude, the OpenAI Agents SDK and LangChain is in build an AI job search agent, and the protocol side is in what is an MCP server. No key yet? POST https://api.jobspipe.dev/v1/sandbox/jobs/search answers with sample data in the live schema, no key and no quota.
Give your assistant live job postings - free tier, sign in from the client, nothing to install.
Get a free API keyFrequently Asked Questions
Can ChatGPT find job postings?
Not on its own. Without a connected source ChatGPT answers from training data and will describe roles that closed months ago or never existed. With browsing it can read job board pages one at a time. With a live job data connector over MCP it can search current postings by title, location, salary, posting age and ghost score and return real apply links.
How do I use ChatGPT for a job search?
Use it for text tasks first: decoding a job description, tailoring a resume bullet or first cover letter draft to a posting, mock interview questions and comparing offers. For finding open roles, connect a live source as a custom connector so its answers come from current postings, and ask specific questions such as remote senior roles in a country posted in the last two weeks that state a salary.
How do I connect ChatGPT, Claude or Cursor to live job postings?
Add the JobsPipe MCP connector at https://mcp.jobspipe.dev/mcp. Claude Desktop and claude.ai: Settings, Connectors, add a custom connector with the URL. ChatGPT: Settings, Connectors, on plans with developer mode for connectors. Claude Code: claude mcp add --transport http jobspipe https://mcp.jobspipe.dev/mcp. Cursor: the URL under mcpServers in .cursor/mcp.json. Sign in with a free JobsPipe account when prompted; the free tier covers 1,000 jobs a month.
Why does ChatGPT recommend jobs that do not exist?
A model asked for open roles without a tool generates a plausible list from memory, and even with browsing it cannot tell a live posting from one that has been sitting on a board for months. Fix it by connecting a source that tracks each posting's status, last-seen date and ghost score, and by telling the model to quote only what the tool returned.
Can an AI agent apply for jobs for me?
Agentic browsing can fill application forms, but every form is different and any wrong field is your problem. The reliable use today is finding and filtering live roles, checking whether a posting is still open, and preparing material. Treat automatic submission as an experiment, not a pipeline.
How do developers build an AI job search agent?
Three parts: a live postings source, a tool the model can call with real filters, and a loop that widens the query when results come back thin. POST /v1/jobs/search with job_title_or, job_country_code_or, remote, posted_at_max_age_days, min_salary_usd and max_ghost_score covers the filters; each row returns status, last_seen_at, ghost_score and the apply url. The sandbox endpoint answers without a key for prototyping.

