Extraction · intermediate
Résumé → structured JSON
Convert a free-form résumé into a normalized candidate profile.
Recruiting pipelines need structured candidate data: contact info, experience with normalized dates, education, skills — extracted from wildly varied résumé formats.
The prompt
Copy this verbatim. Replace the {{ … }} placeholders with your values.
<instructions>
Extract candidate data from the résumé in <resume>. Return JSON inside <result> tags.
Rules:
- Dates are ISO YYYY-MM. If only a year is given, use YYYY-01.
- "present" or "current" in end_date → null.
- Skills: include only items the candidate lists. Do not infer from job descriptions.
- Do not include personal info beyond name, email, phone, location (city/country).
</instructions>
<format>
{
"name": "string",
"email": "string or null",
"phone": "string or null",
"location": "string or null",
"headline": "string or null",
"experience": [
{ "company": "string", "title": "string",
"start_date": "YYYY-MM", "end_date": "YYYY-MM or null",
"highlights": ["string"] }
],
"education": [
{ "institution": "string", "degree": "string or null",
"field": "string or null", "graduation_year": 2024 }
],
"skills": ["string"]
}
</format>
<resume>{{ resume_text }}</resume>
Return inside <result> tags.
Sample input
Maya Chen — Senior SRE
[email protected] · +1 415 555 0142 · San Francisco, CA
Experience
- Acme Cloud, Staff SRE, Jan 2022 – present
* Cut p99 latency from 800ms to 120ms across the API tier
* Led incident response for 3 SEV-1s
- Globex, SRE, 2019 – 2021
Education
B.S. Computer Science, UC Berkeley, 2019
Skills: Go, Kubernetes, Terraform, Prometheus
Expected output
<result>
{
"name": "Maya Chen",
"email": "[email protected]",
"phone": "+1 415 555 0142",
"location": "San Francisco, CA",
"headline": "Senior SRE",
"experience": [
{"company": "Acme Cloud", "title": "Staff SRE",
"start_date": "2022-01", "end_date": null,
"highlights": ["Cut p99 latency from 800ms to 120ms across the API tier",
"Led incident response for 3 SEV-1s"]},
{"company": "Globex", "title": "SRE",
"start_date": "2019-01", "end_date": "2021-01", "highlights": []}
],
"education": [
{"institution": "UC Berkeley", "degree": "B.S.",
"field": "Computer Science", "graduation_year": 2019}
],
"skills": ["Go", "Kubernetes", "Terraform", "Prometheus"]
}
</result>
Notes & tuning tips
- PII restriction prevents the model from inventing demographic inferences.
- If résumés routinely include photos or addresses, strip those upstream before extraction.
- Always validate emails / phones with format checks server-side; the model isn't a validator.
What this example uses
Tags: <instructions> <format>
Patterns: structured output
More like this
extraction
Structured JSON extractor from email
Pull sender, subject, intent, urgency, and action items from a raw email body.
extractionInvoice / receipt line-item extractor
Convert an OCR'd invoice into structured JSON: vendor, totals, line items.
extractionEmail → calendar event
Detect meeting requests in email and emit a structured event with start/end in ISO format.
Cite this page
Résumé → structured JSON. claudexml.com. https://claudexml.com/examples/resume-to-json/