SuperAPI AI Directory

resume-skill-extraction

Data & analytics

View repository

Updated 10-15 22:12

About this skill

Resume Skill Extraction

Overview

This skill extracts structured skill, qualification, and experience data from resume information stored in ServiceNow's talent management modules. It helps you:

  • Parse and extract skills, certifications, and qualifications from candidate records
  • Map extracted skills to organizational competency frameworks
  • Compare candidate qualifications against job requisition requirements
  • Identify skill gaps and strengths relative to target positions
  • Populate talent profile records with structured skill data
  • Support bulk extraction for talent pipeline analysis

When to use: When recruiters or HR talent teams need to systematically extract and categorize skills from candidate applications, match candidates to open requisitions, or build competency profiles for workforce planning.

Prerequisites

  • Roles: sn_hr_tm.recruiter, sn_hr_tm.hiring_manager, or sn_hr_core.manager
  • Plugins: com.sn_hr_service_delivery (HR Service Delivery), com.sn_hr_talent_management (Talent Management)
  • Access: Read/write access to sn_hr_tm_candidate, sn_hr_tm_skill, sn_hr_tm_competency, and sn_hr_tm_job_requisition
  • Knowledge: Understanding of your organization's competency framework and job family structure

Procedure

Step 1: Retrieve Candidate Record

Fetch the candidate profile that contains resume data and application details.

Using MCP:

Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_tm_candidate
  query: number=[candidate_number]
  fields: sys_id,number,first_name,last_name,email,phone,source,stage,resume_text,resume_content,current_title,current_employer,years_experience,education_level,location,skills_summary
  limit: 1

Using REST API:

GET /api/now/table/sn_hr_tm_candidate?sysparm_query=number=[candidate_number]&sysparm_fields=sys_id,number,first_name,last_name,email,phone,source,stage,resume_text,resume_content,current_title,current_employer,years_experience,education_level,location,skills_summary&sysparm_display_value=true&sysparm_limit=1

Step 2: Retrieve Resume Attachment

If the resume is stored as an attachment rather than in a text field, fetch the attachment metadata.

Using MCP:

Tool: SN-Query-Table
Parameters:
  table_name: sys_attachment
  query: table_name=sn_hr_tm_candidate^table_sys_id=[candidate_sys_id]^content_typeLIKEpdf^ORcontent_typeLIKEdoc^ORcontent_typeLIKEtext
  fields: sys_id,file_name,content_type,size_bytes,sys_created_on
  limit: 5

Using REST API:

GET /api/now/table/sys_attachment?sysparm_query=table_name=sn_hr_tm_candidate^table_sys_id=[candidate_sys_id]&sysparm_fields=sys_id,file_name,content_type,size_bytes,sys_created_on&sysparm_limit=5

# Download attachment content:
GET /api/now/attachment/{attachment_sys_id}/file

Step 3: Retrieve Target Job Requisition

Fetch the job requisition to understand required skills and qualifications for comparison.

Using MCP:

Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_tm_job_requisition
  query: number=[requisition_number]
  fields: sys_id,number,title,description,department,location,job_family,required_skills,preferred_skills,minimum_education,minimum_experience,competencies,status,hiring_manager
  limit: 1

Using REST API:

GET /api/now/table/sn_hr_tm_job_requisition?sysparm_query=number=[requisition_number]&sysparm_fields=sys_id,number,title,description,department,location,job_family,required_skills,preferred_skills,minimum_education,minimum_experience,competencies,status,hiring_manager&sysparm_display_value=true&sysparm_limit=1

Step 4: Fetch Organizational Competency Framework

Retrieve the competency definitions that skills should be mapped to.

Using MCP:

Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_tm_competency
  query: active=true^job_familyLIKE[target_job_family]
  fields: sys_id,name,description,category,proficiency_levels,job_family,required_level,active
  limit: 50

Using REST API:

GET /api/now/table/sn_hr_tm_competency?sysparm_query=active=true^job_familyLIKEEngineering&sysparm_fields=sys_id,name,description,category,proficiency_levels,job_family,required_level&sysparm_display_value=true&sysparm_limit=50

Step 5: Retrieve Existing Skill Taxonomy

Pull the organization's skill taxonomy to map extracted skills to standardized entries.

Using MCP:

Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_tm_skill
  query: active=true
  fields: sys_id,name,category,skill_type,description,active
  limit: 200

Using REST API:

GET /api/now/table/sn_hr_tm_skill?sysparm_query=active=true&sysparm_fields=sys_id,name,category,skill_type,description&sysparm_display_value=true&sysparm_limit=200

Step 6: Extract and Categorize Skills from Resume

Parse the resume text and categorize extracted information:

=== SKILL EXTRACTION RESULTS ===

Candidate: John Martinez (CND0004521)
Current: Senior DevOps Engineer at TechCorp
Experience: 8 years

--- Technical Skills ---
| Skill               | Proficiency | Years | Matched Taxonomy Entry |
|---------------------|-------------|-------|------------------------|
| Kubernetes           | Expert      | 5     | SKL0001234 - Kubernetes |
| AWS (EC2, S3, Lambda)| Expert      | 6     | SKL0001201 - AWS Cloud  |
| Terraform            | Advanced    | 4     | SKL0001256 - Terraform  |
| Python               | Advanced    | 7     | SKL0001102 - Python     |
| Jenkins/CI-CD        | Expert      | 6     | SKL0001189 - CI/CD      |
| Docker               | Expert      | 5     | SKL0001233 - Docker     |
| Ansible              | Intermediate| 2     | SKL0001267 - Ansible    |

--- Certifications ---
| Certification                        | Date    | Mapped Qualification |
|--------------------------------------|---------|----------------------|
| AWS Solutions Architect Professional | 2024-06 | QAL0000456           |
| Certified Kubernetes Administrator   | 2023-11 | QAL0000489           |
| HashiCorp Terraform Associate        | 2025-01 | QAL0000512           |

--- Education ---
| Degree                    | Institution          | Year |
|---------------------------|----------------------|------|
| B.S. Computer Science     | State University     | 2018 |
| M.S. Information Systems  | Tech University      | 2021 |

--- Soft Skills ---
- Team Leadership (managed team of 6)
- Cross-functional collaboration
- Incident management and on-call coordination
- Technical documentation and knowledge sharing

--- Unmapped Skills (New to Taxonomy) ---
- Pulumi (Infrastructure as Code - no taxonomy match)
- Backstage (Developer Portal - no taxonomy match)

Step 7: Compare Against Job Requirements

Match extracted skills against the target requisition:

=== SKILL GAP ANALYSIS ===

Requisition: REQ0002345 - Staff Site Reliability Engineer
Department: Platform Engineering

--- Required Skills Match ---
| Required Skill      | Status  | Candidate Level | Required Level |
|---------------------|---------|-----------------|----------------|
| Kubernetes           | MATCH   | Expert          | Advanced       |
| Cloud Platform (AWS) | MATCH   | Expert          | Advanced       |
| CI/CD Pipelines      | MATCH   | Expert          | Intermediate   |
| Python or Go         | PARTIAL | Python-Advanced | Advanced       |
| Monitoring (Datadog) | GAP     | Not found       | Intermediate   |

--- Preferred Skills Match ---
| Preferred Skill      | Status  | Candidate Level |
|----------------------|---------|-----------------|
| Terraform/IaC        | MATCH   | Advanced        |
| Incident Response    | MATCH   | Experienced     |
| Service Mesh (Istio) | GAP     | Not found       |

--- Competency Alignment ---
| Competency              | Required Level | Assessed Level | Status |
|-------------------------|----------------|----------------|--------|
| Infrastructure Design   | Level 4        | Level 4        | MET    |
| Automation Engineering  | Level 4        | Level 5        | EXCEEDS|
| Observability           | Level 3        | Level 2        | GAP    |
| Leadership              | Level 3        | Level 3        | MET    |

Overall Match Score: 82% (Strong Candidate)
Key Gaps: Monitoring/Observability tooling, Service Mesh
Key Strengths: Infrastructure automation, Cloud architecture, CI/CD

Step 8: Update Candidate Record with Extracted Skills

Write the structured skill data back to the candidate profile.

Using MCP:

Tool: SN-Update-Record
Parameters:
  table_name: sn_hr_tm_candidate
  sys_id: [candidate_sys_id]
  data:
    skills_summary: "Kubernetes(Expert), AWS(Expert), Terraform(Advanced), Python(Advanced), Docker(Expert), CI/CD(Expert), Ansible(Intermediate)"
    education_level: "Masters"
    years_experience: 8

Using REST API:

PATCH /api/now/table/sn_hr_tm_candidate/[candidate_sys_id]
Content-Type: application/json
{
  "skills_summary": "Kubernetes(Expert), AWS(Expert), Terraform(Advanced), Python(Advanced), Docker(Expert), CI/CD(Expert), Ansible(Intermediate)",
  "education_level": "Masters",
  "years_experience": 8
}

Tool Usage

MCP Tools Reference

Tool When to Use
SN-Query-Table Query candidates, requisitions, skills taxonomy, competencies
SN-Natural-Language-Search Natural language search for matching candidates or roles
SN-Get-Record Retrieve full candidate record with resume content
SN-Update-Record Write extracted skill data back to candidate profiles

REST API Reference

Endpoint Method Purpose
/api/now/table/sn_hr_tm_candidate GET/PATCH Candidate records and resume data
/api/now/table/sn_hr_tm_job_requisition GET Job requisition requirements
/api/now/table/sn_hr_tm_skill GET Organizational skill taxonomy
/api/now/table/sn_hr_tm_competency GET Competency framework definitions
/api/now/table/sn_hr_tm_qualification GET Certification and qualification records
/api/now/table/sys_attachment GET Resume file attachments

Best Practices

  • Normalize skill names: Map variations (e.g., "k8s", "Kube", "Kubernetes") to the single canonical taxonomy entry
  • Preserve original text: Keep the raw extracted text alongside normalized mappings for audit purposes
  • Handle multi-format resumes: Support PDF, DOCX, and plain text; extraction quality varies by format
  • Validate certifications: Cross-reference certification claims with known certification bodies and expiry dates
  • Use proficiency indicators: Infer proficiency from context (years of use, project complexity, leadership role) rather than self-reported levels alone
  • Respect data privacy: Resume data is PII; limit extraction results to authorized recruiting personnel
  • Update taxonomy regularly: Flag unmapped skills for taxonomy administrators to review and potentially add

Troubleshooting

"Resume text field is empty"

Cause: Resume may be stored only as an attachment, not parsed into the text field Solution: Query sys_attachment for the candidate record and download the file content via the attachment API

"No matching skills in taxonomy"

Cause: Organization's skill taxonomy may not cover all technical domains Solution: Record unmapped skills separately and flag them for taxonomy expansion; do not discard unmatched skills

"Candidate application not linked to requisition"

Cause: The application record may use a different reference field Solution: Query sn_hr_tm_candidate_application with candidate=[candidate_sys_id] to find the linking record and requisition reference

"Competency framework returns empty"

Cause: Competencies may not be tagged by job family or may use a different categorization Solution: Query without the job_family filter and manually match competencies based on description and category

Examples

Example 1: Single Candidate Screening

Input: "Extract skills from candidate CND0004521 for requisition REQ0002345"

Steps:

  1. Query sn_hr_tm_candidate for resume data
  2. Query sn_hr_tm_job_requisition for requirements
  3. Fetch skill taxonomy from sn_hr_tm_skill
  4. Extract and categorize skills from resume text
  5. Run gap analysis against requisition
  6. Update candidate record with structured data

Example 2: Bulk Pipeline Analysis

Input: "Extract skills from all candidates applying to Engineering requisitions"

Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_tm_candidate_application
  query: job_requisition.departmentLIKEEngineering^status=active
  fields: sys_id,candidate,job_requisition,status,applied_date,stage
  limit: 50

Then iterate through each candidate to extract and compare skills.

Example 3: Internal Mobility Skill Assessment

Input: "Assess current employee's skills for an internal transfer"

Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_core_profile
  query: user=[employee_sys_id]
  fields: sys_id,user,department,job_title,skills,certifications,education,years_in_role
  limit: 1

Compare the employee's existing profile skills against the target role requirements using the same gap analysis framework.

Related Skills

  • hrsd/persona-assistant - Personalized HR guidance for internal mobility
  • hrsd/case-summarization - Summarize HR cases related to talent processes
  • hrsd/sentiment-analysis - Assess candidate experience sentiment
  • knowledge/duplicate-detection - Detect duplicate candidate profiles
  • reporting/trend-analysis - Analyze skill demand trends across requisitions