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-time
  • part-time
  • contract
  • freelance
  • internship
  • volunteer
  • apprenticeship
  • self-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:

  • elementary
  • limited-working
  • professional-working
  • full-professional
  • native

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.