Output Schema
Understanding The Resume Parser JSON schema
All parsed resumes follow a standardized JSON schema for consistent, predictable output.
Schema Overview
Download: resume-schema.json
The schema defines the structure of the result field returned by the Parse API.
Key Differences from Other Schemas
Unified Experience Field
Instead of separate work and volunteer arrays, we use a single experience array with a type field:
{
"experience": [
{
"type": "full-time",
"company": "Tech Corp",
"title": "Senior Engineer"
},
{
"type": "volunteer",
"company": "Charity",
"title": "Advisor"
},
{
"type": "contract",
"company": "Startup Inc",
"title": "Consultant"
}
]
}
Supported experience types:
full-timepart-timecontractfreelanceinternshipvolunteerapprenticeshipself-employed
Skills with Normalization
Skills include rich metadata from our normalization process:
{
"skills": [
{
"skill": "JavaScript programming",
"normalized": "JavaScript",
"skill_id": 12345,
"proficiency": "expert",
"proficiency_score": 0.85,
"category": "Programming Languages",
"subcategory": "Web Development",
"skill_type": "hard",
"years_experience": 8,
"confidence": 0.95,
"match_method": "embedding"
}
]
}
ISO 8601 Dates
All dates use ISO 8601 format:
- Full date:
2024-12-15 - Year-month:
2024-12 - Year only:
2024
Structured Location
Location is an object, not a string:
{
"location": {
"city": "San Francisco",
"region": "CA",
"country": "United States",
"country_code": "US",
"postal_code": "94102"
}
}
Main Sections
personal_info (required)
Contact and identification information:
{
"personal_info": {
"name": "John Doe",
"label": "Software Engineer",
"image": "https://example.com/photo.jpg",
"email": "john@example.com",
"phone": "+1234567890",
"location": { ... },
"urls": [
{
"type": "linkedin",
"url": "https://linkedin.com/in/johndoe"
}
]
}
}
Note: The label (professional title) and image (profile photo URL) fields enable compatibility with JSON Resume format.
experience
Professional and volunteer history:
{
"experience": [
{
"type": "full-time",
"company": "Tech Corp",
"title": "Senior Engineer",
"location": {
"city": "San Francisco",
"remote": true
},
"start_date": "2020-01",
"end_date": "2024-12",
"current": false,
"description": "Led development of microservices...",
"highlights": [
"Reduced API latency by 40%",
"Mentored 5 junior engineers"
]
}
]
}
education
Academic background:
{
"education": [
{
"institution": "University of California",
"degree": "B.S.",
"field_of_study": "Computer Science",
"graduation_date": "2016-05",
"gpa": {
"value": 3.8,
"max": 4.0
},
"honors": "cum laude"
}
]
}
skills
Technical and soft skills with normalization:
{
"skills": [
{
"skill": "React JS",
"normalized": "React",
"proficiency": "expert",
"category": "Web Frameworks",
"skill_type": "hard"
}
]
}
certifications
Professional credentials:
{
"certifications": [
{
"name": "AWS Solutions Architect",
"issuer": "Amazon Web Services",
"date": "2023-06",
"expiration_date": "2026-06",
"credential_id": "AWS-123456",
"url": "https://aws.amazon.com/verification/123456"
}
]
}
languages
Language proficiencies:
{
"languages": [
{
"language": "English",
"proficiency": "native"
},
{
"language": "Spanish",
"proficiency": "professional-working"
}
]
}
Proficiency levels:
elementarylimited-workingprofessional-workingfull-professionalnative
projects (optional)
Notable projects and accomplishments:
{
"projects": [
{
"name": "Open Source Library",
"description": "Created a popular React component library",
"role": "Lead Developer",
"url": "https://github.com/username/project",
"technologies": ["React", "TypeScript", "Webpack"],
"highlights": ["2000+ GitHub stars", "Used by 50+ companies"]
}
]
}
awards (optional)
Recognition and honors:
{
"awards": [
{
"title": "Employee of the Year",
"awarder": "Tech Corp",
"date": "2023-12",
"description": "Recognized for exceptional contributions"
}
]
}
Note: Parsing metadata (model used, credits consumed, timestamps, etc.) is included at the API response level, not within the resume schema itself. See the Parse Endpoint documentation for response structure.
Validation
You can validate parse results against the schema using standard JSON Schema validators:
import Ajv from 'ajv';
const ajv = new Ajv();
const schema = await fetch('https://theresumeparser.com/resume-schema.json')
.then(r => r.json());
const validate = ajv.compile(schema);
const valid = validate(parseResult);
if (!valid) {
console.log(validate.errors);
}
TypeScript Types
Generate TypeScript types from the schema:
npx json-schema-to-typescript resume-schema.json > resume.types.ts
Converting to Other Formats
Our schema is designed to be easily transformed into other common formats:
JSON Resume:
function toJsonResume(parsed) {
return {
basics: {
name: parsed.personal_info.name,
label: parsed.personal_info.label,
image: parsed.personal_info.image,
email: parsed.personal_info.email,
phone: parsed.personal_info.phone,
url: parsed.personal_info.urls?.[0]?.url,
location: parsed.personal_info.location,
profiles: parsed.personal_info.urls
},
work: parsed.experience.filter(e => e.type !== 'volunteer'),
volunteer: parsed.experience.filter(e => e.type === 'volunteer'),
education: parsed.education,
skills: parsed.skills.map(s => ({
name: s.normalized,
level: s.proficiency,
keywords: [s.category]
})),
awards: parsed.awards,
certificates: parsed.certifications,
publications: parsed.publications,
languages: parsed.languages,
interests: parsed.interests?.map(i => ({ name: i })),
references: parsed.references,
projects: parsed.projects
};
}
Schema Versioning
The schema follows semantic versioning. Check the version field in the schema file.
Current version: 1.0.0
Breaking changes will increment the major version and be announced in the changelog.