Careerflow/ResumeExtractBench
ResumeExtractBench ResumeExtractBench is a benchmark for schema-guided structured extraction from resume documents. Given a resume PDF and a JSON Schema, systems must return structured data covering personal details, work history, education, skills, and more. Dataset Size: 38 documents (handwritten + adversarial distractors) Schema Sections Scored: 9 (basics, experience, education, projects, summary, certifications, awards, volunteering, skills) Domains: 6 (engineering… See the full description on the dataset page: https://huggingface.co/datasets/Careerflow/ResumeExtractBench.
064
1{2 "$schema": "http://json-schema.org/draft-07/schema#",3 "$id": "resume_v1",4 "x-benchmark-version": "1.0",5 "type": "object",6 "properties": {7 "basics": {8 "type": "object",9 "description": "Basic personal and contact information",10 "properties": {11 "fname": {12 "type": ["string", "null"],13 "description": "First name of the person. Split the full name into first and last — everything before the final surname token is the first name (e.g. 'Jean Marie' from 'Jean Marie Schiraldi')."14 },15 "lname": {16 "type": ["string", "null"],17 "description": "Last name (surname) of the person. The final surname token from the full name (e.g. 'Schiraldi' from 'Jean Marie Schiraldi')."18 },19 "email": {20 "type": ["string", "null"],21 "description": "Primary email address"22 },23 "phone": {24 "type": ["string", "null"],25 "description": "Phone number exactly as written in the resume, including country code if present"26 },27 "city": {28 "type": ["string", "null"],29 "description": "City from the person's location (e.g. 'New York' from 'New York, NY, USA'). Extract only the city name, not state or country."30 },31 "state": {32 "type": ["string", "null"],33 "description": "State, province, or region from the person's location (e.g. 'NY' from 'New York, NY, USA'). Extract only the state/province, not city or country."34 },35 "country": {36 "type": ["string", "null"],37 "description": "Country from the person's location (e.g. 'USA' from 'New York, NY, USA'). Extract only the country name."38 },39 "hasPersonalPhoto": {40 "type": ["boolean", "null"],41 "description": "true if the resume contains a personal profile photo or headshot. false if there is no personal photo. Look for embedded images that appear to be portrait/headshot photographs of a person, typically near the top of the resume or in a sidebar. Do not count logos, icons, decorative graphics, or certification badges."42 }43 }44 },45 "experience": {46 "type": "array",47 "description": "Structured roles from experience sections. Only include roles from dedicated work-history sections with employer, title, dates, and responsibilities. Never include roles inferred from narrative summary, profile, or objective sections.",48 "items": {49 "type": "object",50 "properties": {51 "company": {52 "type": ["string", "null"],53 "description": "Name of employer or company"54 },55 "position": {56 "type": ["string", "null"],57 "description": "Job title or role only, copied exactly from a structured experience entry. Do not take titles from narrative summary/profile/objective sections, and do not append text from dates, locations, or other fields."58 },59 "startMonth": {60 "type": ["integer", "null"],61 "description": "Month the role started as an integer 1-12 (e.g. January = 1, December = 12). Parse from date strings like 'May 2025' -> 5. Null if no start month is stated."62 },63 "startYear": {64 "type": ["integer", "null"],65 "description": "Year the role started as a 4-digit integer (e.g. 2025). Parse from date strings. Null if no start year is stated."66 },67 "endMonth": {68 "type": ["integer", "null"],69 "description": "Month the role ended as an integer 1-12. Null if the role is ongoing or no end month is stated."70 },71 "endYear": {72 "type": ["integer", "null"],73 "description": "Year the role ended as a 4-digit integer. Null if the role is ongoing or no end year is stated."74 },75 "currentlyWorkHere": {76 "type": ["boolean", "null"],77 "description": "true if this is the person's current role (end date is 'Present', 'Current', or ongoing). false otherwise."78 },79 "city": {80 "type": ["string", "null"],81 "description": "City where the role is located (e.g. 'New York' from 'New York, NY'). Null if no city is stated."82 },83 "country": {84 "type": ["string", "null"],85 "description": "Country where the role is located. Null if no country is stated."86 },87 "description": {88 "type": "array",89 "items": {"type": "string"},90 "description": "Array of individual bullet-point achievements or responsibilities. Each array element is one bullet. A bullet may wrap onto multiple visual lines; keep continuation lines in the same element. Strip bullet symbols (-, *, etc.) but preserve the complete visible text."91 }92 }93 }94 },95 "education": {96 "type": "array",97 "description": "List of formal education entries — degrees, diplomas, and academic programs from universities, colleges, and schools. Do NOT include professional certifications, licenses, training courses, workshops, or professional memberships here — those belong in the certifications section.",98 "items": {99 "type": "object",100 "properties": {101 "institution": {102 "type": ["string", "null"],103 "description": "Name of the educational institution (university, college, or school)"104 },105 "area": {106 "type": ["string", "null"],107 "description": "Field of study or major"108 },109 "studyType": {110 "type": ["string", "null"],111 "description": "Type of degree or diploma (e.g. Bachelor's, Master's, PhD, Associate's, High School Diploma)"112 },113 "score": {114 "type": ["string", "null"],115 "description": "GPA, grade, or other academic metric"116 },117 "startMonth": {118 "type": ["integer", "null"],119 "description": "Month study began as an integer 1-12. Null if no start month is stated."120 },121 "startYear": {122 "type": ["integer", "null"],123 "description": "Year study began as a 4-digit integer. Null if no start year is stated."124 },125 "endMonth": {126 "type": ["integer", "null"],127 "description": "Month study ended as an integer 1-12. Null if still studying or no end month is stated."128 },129 "endYear": {130 "type": ["integer", "null"],131 "description": "Year study ended as a 4-digit integer. Null if still studying or no end year is stated."132 },133 "currentlyStudyHere": {134 "type": ["boolean", "null"],135 "description": "true if currently studying here (end date is 'Expected', 'Present', or 'Current'). false otherwise."136 },137 "city": {138 "type": ["string", "null"],139 "description": "City where institution is located"140 },141 "country": {142 "type": ["string", "null"],143 "description": "Country where institution is located"144 },145 "description": {146 "type": "array",147 "items": {"type": "string"},148 "description": "List of education bullet points — coursework, honors, activities, etc. Do NOT include information already captured in other fields (score, institution, area, studyType, dates)."149 }150 }151 }152 },153 "projects": {154 "type": "array",155 "description": "List of projects from dedicated project sections",156 "items": {157 "type": "object",158 "properties": {159 "name": {160 "type": ["string", "null"],161 "description": "Name or title of the project"162 },163 "description": {164 "type": "array",165 "items": {"type": "string"},166 "description": "List of project bullet points — details, technologies used, and accomplishments. Each array element is one bullet."167 },168 "startYear": {169 "type": ["integer", "null"],170 "description": "Year the project started as a 4-digit integer. Null if no start year is stated."171 },172 "endYear": {173 "type": ["integer", "null"],174 "description": "Year the project ended as a 4-digit integer. Null if the project is ongoing or no end year is stated."175 },176 "url": {177 "type": ["string", "null"],178 "description": "Project link or repository URL, if present in the resume."179 }180 }181 }182 },183 "personalSummary": {184 "type": ["string", "null"],185 "description": "The candidate's professional summary, profile, or objective. Preserve paragraph boundaries from the source using double newlines between paragraphs. If the source section is written as bullets, preserve each bullet as a list item rather than collapsing into prose. Do not merge multiple paragraphs into one block."186 },187 "certifications": {188 "type": "array",189 "description": "Extract all certifications, licenses, and professional credentials mentioned anywhere in the resume — from dedicated certification sections, education sections, or standalone mentions.",190 "items": {191 "type": "object",192 "properties": {193 "name": {194 "type": ["string", "null"],195 "description": "Name of the certification"196 },197 "issuer": {198 "type": ["string", "null"],199 "description": "Organization that issued the certification"200 },201 "date": {202 "type": ["string", "null"],203 "description": "Date of certification as written in the resume"204 }205 }206 }207 },208 "awards": {209 "type": "array",210 "description": "Extract awards, honors, and recognitions from dedicated awards/honors sections. Only include named awards or formal recognitions — not job accomplishments from experience bullets or volunteer positions.",211 "items": {212 "type": "object",213 "properties": {214 "title": {215 "type": ["string", "null"],216 "description": "Name of the award"217 },218 "awarder": {219 "type": ["string", "null"],220 "description": "Organization that granted the award"221 },222 "date": {223 "type": ["string", "null"],224 "description": "Date of award as written in the resume"225 }226 }227 }228 },229 "volunteering": {230 "type": "array",231 "description": "List of volunteer positions from dedicated volunteering, community involvement, or board membership sections. Only include genuine volunteer roles — not student clubs, extracurricular activities, sports, or workshop attendance.",232 "items": {233 "type": "object",234 "properties": {235 "organization": {236 "type": ["string", "null"],237 "description": "Name of the volunteer organization"238 },239 "position": {240 "type": ["string", "null"],241 "description": "Volunteer role or title"242 },243 "description": {244 "type": "array",245 "items": {"type": "string"},246 "description": "List of volunteering bullet points. Strip bullet symbols but preserve the complete visible text."247 },248 "startYear": {249 "type": ["integer", "null"],250 "description": "Year volunteering started as a 4-digit integer. Null if no start year is stated."251 },252 "endYear": {253 "type": ["integer", "null"],254 "description": "Year volunteering ended as a 4-digit integer. Null if still volunteering or no end year is stated."255 },256 "currentlyVolunteerHere": {257 "type": ["boolean", "null"],258 "description": "true if currently volunteering here. false otherwise."259 }260 }261 }262 },263 "skills": {264 "type": "array",265 "description": "List of skill categories extracted from the resume. If the resume already groups skills under category headings (e.g. 'Tools: Git, Docker'), preserve that structure exactly.",266 "items": {267 "type": "object",268 "properties": {269 "category": {270 "type": ["string", "null"],271 "description": "Skill category or group name. FIRST check if the resume already has categories in the format 'CategoryName: Skill1, Skill2, ...' (e.g. 'Programming Languages: Python, Java'). If existing categories are found, use those exact category names. If the resume lists skills as a flat or comma-separated list without explicit category labels, use 'Skills' as the default category name. Do NOT use the section heading as a category name. Do not use a single skill name as the category."272 },273 "skills": {274 "type": "array",275 "items": {"type": "string"},276 "description": "List of individual skills in this category. Skills should be concise keyword-style items, e.g. 'Python', 'Project Management', 'Statistical Process Control (SPC)'. Do NOT include full sentences or competency statements. Only include skills explicitly present in the resume — no guessing or inventing. Preserve original casing. Each skill must appear in exactly one category. Do not repeat a skill across categories."277 }278 }279 }280 }281 }282}283 