ChatGPT is genuinely good at reading a CV. It extracts structured data reliably, it spots inconsistencies a tired human misses at 6pm, and it will happily draft interview questions targeted at a specific candidate’s weak spots.
It is also the wrong tool for screening 200 applications, and the reasons why are not the ones people usually give.
This guide covers both halves: five prompts that do real work, and the four specific points where the approach stops holding up. Copy the prompts, they are the useful part.
Before you start: two setup decisions
Use a reasoning-capable model. The cheaper, faster models are fine for extraction but noticeably worse at judgment calls — assessing whether five years at three companies is progression or churn, for instance. If you are scoring candidates, use the best model available on your plan.
Upload files rather than pasting text. Pasting a CV strips the layout, and layout carries information — what is a heading, what is a bullet under which job, what the date ranges attach to. Upload the PDF directly. If you must paste, paste one CV per message and never two at once, because the model will blend them more often than you would expect.
Prompt 1: Structured extraction
This is the one ChatGPT does best. Turn an unstructured CV into a row you can put in a spreadsheet.
Extract the following from the attached CV and return it as JSON only, no commentary:
{ “name”: “”, “email”: “”, “phone”: “”, “location”: “”, “years_total_experience”: 0, “current_title”: “”, “current_employer”: “”, “roles”: [{“title”: “”, “employer”: “”, “start”: “YYYY-MM”, “end”: “YYYY-MM or present”, “months”: 0}], “skills”: [], “languages”: [], “education”: [{“degree”: “”, “institution”: “”, “year”: “”}], “employment_gaps”: [{“from”: “”, “to”: “”, “months”: 0}] }
Rules: use only information stated in the CV. If a field is not present, use null — do not infer or estimate. For years_total_experience, sum actual role durations and exclude overlaps. Flag any gap longer than four months.
The “do not infer” instruction matters more than it looks. Without it, models fill in plausible-sounding values — a graduation year calculated backwards from a start date, a location guessed from an employer’s headquarters. Those inventions look exactly like real data once they are in your spreadsheet.
Prompt 2: Scoring against your requirements
Do not ask “is this a good candidate.” Ask a question with a defined answer.
You are screening for this role: [paste your 3-5 hard requirements, one per line]
For the attached CV, score each requirement separately:
2 = clearly demonstrated, with evidence from the CV
1 = partially demonstrated or adjacent experience
0 = no evidenceFor each score, quote the specific line from the CV that justifies it. If you score 1, explain what is missing. Then give a total and a one-sentence recommendation: advance, borderline, or reject.
Do not consider anything outside the listed requirements. Do not reward general impressiveness.
That last line is doing heavy lifting. Left alone, language models reward prestige signals — a recognisable employer, a well-known university, a title with “senior” in it — because those correlate with strong CVs in training data. That is precisely the bias you are trying to remove. Forcing a per-requirement quote makes the reasoning auditable, and if it cannot find a quote, it usually stops claiming the requirement is met.
Prompt 3: The consistency check
This is the prompt that earns its keep, because it catches things humans skim past.
Review the attached CV for internal inconsistencies only. Check:
— Date conflicts, overlapping roles, or unexplained gaps
— Seniority claims that do not match described responsibilities
— Skills listed in the summary but absent from any role description
— Team sizes, budgets, or metrics that seem implausible for the stated title
— Vague ownership language (“involved in”, “part of the team that”) around headline achievementsList only what you actually find. Do not speculate about causes, and do not treat a career break as a negative — just note it. If the CV is internally consistent, say so.
“Do not speculate about causes” prevents the model from narrating a story about why someone left a job. You want the observation, not the theory. The theory is what interviews are for.
Prompt 4: Targeted interview questions
Once you have a shortlist, this converts screening work into interview prep.
Based on the attached CV and this role [paste requirements], write 6 interview questions:
— 2 that probe the weakest evidence for a hard requirement
— 2 that verify a headline achievement, asking for specifics only the person who did the work would know
— 2 about the transition between their last two rolesMake them open questions. No questions answerable with yes or no, and nothing that could be answered by re-reading the CV aloud.
Prompt 5: Shortlist comparison
Only once you are down to a handful. Upload the CVs together.
Compare the attached candidates for this role [paste requirements]. Produce a table with one row per candidate and one column per requirement, marked strong / partial / absent.
Below the table, answer three questions: which candidate is strongest on the single most important requirement, which has the highest ceiling if the role grows, and which carries the most risk and why.
Treat these as three different questions with potentially three different answers. Do not converge on one favourite.
The instruction not to converge is necessary. Ask an unconstrained model to compare candidates and it will pick a winner and then rationalise every dimension in that candidate’s favour. Forcing three separate answers surfaces trade-offs you would otherwise miss.
Where this approach breaks
All of the above works well for one CV at a time and a shortlist of five. Here is where it stops.
1. Volume
Twenty CVs is roughly forty minutes of uploading, prompting, waiting, and copying results into a spreadsheet. Two hundred CVs is not ten times that — it is worse, because you will start batching uploads to save time, and quality degrades sharply when a model is handling many documents in one context. It begins mixing details between candidates, and the mixing is invisible unless you check against the original.
2. No memory between sessions
Each conversation starts blank. There is no candidate database, no way to search what you processed last month, and no deduplication — the same person applying to three of your roles across a year produces three unconnected conversations. The talent pool you are theoretically building does not exist anywhere.
3. Inconsistent scoring across sessions
Run the same CV through the same scoring prompt in two separate conversations and you can get different totals. For ranking within one batch that is tolerable. For comparing this week’s applicants against last month’s, it is not — you have no stable scale.
4. Semantic matching only goes as far as your prompt
A model will connect “revenue operations” to “sales ops” if it is reading both in the same window. It cannot surface a candidate from a pool of 500 whose CV never uses your keywords, because it never sees that pool. Retrieval is a different problem from comprehension, and prompting solves the second one.
The privacy problem nobody mentions
This deserves its own section because it is the risk most likely to actually cost you something.
A CV is personal data belonging to someone who did not consent to it being uploaded to a third-party AI service. Under GDPR, and under the UAE’s PDPL and equivalent regimes elsewhere, you need a lawful basis for that processing, and your candidate privacy notice needs to disclose it.
Practically, three things to check:
- Consumer accounts may train on your inputs. Business and enterprise tiers generally do not, but the default on a personal plan often does. Check the setting rather than assuming.
- You need a data processing agreement with any provider handling candidate data on your behalf. Consumer subscriptions do not come with one.
- Deletion requests are hard to honour when candidate data is scattered across chat conversations. If someone asks you to erase their data, you need to be able to find all of it.
None of this makes using ChatGPT unlawful. It makes doing it casually, on a personal account, with other people’s CVs, a compliance gap you have not documented.
When to move to something purpose-built
Rough threshold: if you are handling more than about 30 CVs per role, or you want the candidates you screen to still be findable next quarter, prompting stops being the efficient path.
What a dedicated tool adds is not intelligence — the underlying models are similar. It is the infrastructure around them: bulk processing without quality degradation, a consistent scoring scale across batches, vector search over your whole candidate history, deduplication, and a defined data processing relationship.
CVScanner is built for exactly that gap. You upload a batch and a job description, and it returns a ranked shortlist with a written rationale per candidate, using semantic matching that catches equivalent experience described in different words. Everything processed stays in a searchable, deduplicated database. There is a free tier, and the honest test is to run a batch you have already screened by hand and see whether its top ten matches yours.
If your volume is genuinely low, though, stay with the prompts above. They work, and a tool you do not need is worse than a spreadsheet you do.
Frequently asked questions
Can ChatGPT reject candidates automatically?
It can, and it should not. Use it for extraction and ranking, then make rejection decisions yourself — particularly for candidates scoring just below your cutoff, which is where the model’s errors concentrate. Several jurisdictions also restrict fully automated decisions with legal or significant effects, and hiring qualifies.
Does ChatGPT hallucinate when reading CVs?
Less than in open-ended generation, because the source document is right there, but yes. The usual failures are inferred dates, invented job titles that sound like a summarised version of the real one, and blended details when several CVs share a conversation. Instructing it to use null for missing fields, and to quote its evidence, reduces this substantially.
Is it biased?
It has learned that certain employers, universities, and phrasings correlate with strong candidates, which means it can reproduce exactly the patterns you are trying to escape. Constraining it to score only against explicit written requirements, with a quote for each, is the practical mitigation. Manual screening is not a clean baseline here either.
Which model should I use?
For extraction, almost any current model is fine. For scoring and comparison, use the strongest one you have access to — the gap between tiers shows up specifically in judgment tasks rather than in reading comprehension.
Screening more than you can prompt your way through? Try CVScanner free on a live vacancy and compare its shortlist to yours.