CoolFace
Datasetpublic

rahulrajpu676/job-resume-matching

Resume–Job Matching Dataset Dataset Summary This dataset is designed for research and experimentation on resume-to-job matching, semantic retrieval, ranking, and recommendation systems. It contains candidate resume records, job posting records, and candidate-job compatibility records with multiple scoring features. The dataset can be used for tasks such as: Resume-job matching Candidate ranking Job recommendation Semantic similarity modeling Skill-based matching… See the full description on the dataset page: https://huggingface.co/datasets/rahulrajpu676/job-resume-matching.

sourceHugging Facemitupdated 8d agoView on Hugging Face
0likes34downloads
Dataset Card

Resume–Job Matching Dataset

Dataset Summary

This dataset is designed for research and experimentation on resume-to-job matching, semantic retrieval, ranking, and recommendation systems. It contains candidate resume records, job posting records, and candidate-job compatibility records with multiple scoring features.

The dataset can be used for tasks such as:

  • —Resume-job matching
  • —Candidate ranking
  • —Job recommendation
  • —Semantic similarity modeling
  • —Skill-based matching
  • —Learning-to-rank experiments
  • —Graph-based recommendation models
  • —Embedding-based retrieval

Dataset Files

The dataset contains three CSV files:

FileRowsDescription
cv.csv9,544Candidate resume records with extracted profile information and text embeddings
job.csv1,167Job posting records with job descriptions, required skills, categories, and text embeddings
matches.csv122,560Candidate-job compatibility records with ranking labels and scoring components

Data Structure

cv.csv

Each row represents one candidate profile.

ColumnTypeDescription
candidate_idstringUnique candidate identifier
source_rowintegerSource row index from the original resume data
target_positionstringTarget or inferred job position for the candidate
resume_textstringFull resume text
clean_skillsstringCleaned skills represented as text
clean_skills_jsonstringCleaned skills in JSON-like format
education_textstringExtracted education-related text
experience_textstringExtracted experience-related text
years_experiencefloatEstimated years of professional experience
inferred_categorystringInferred job category for the candidate
embeddingstringPrecomputed 768-dimensional text embedding

job.csv

Each row represents one job posting.

ColumnTypeDescription
job_idintegerUnique job identifier
job_titlestringJob title
categorystringJob category
job_descriptionstringOriginal job description
job_textstringProcessed job text used for matching or modeling
clean_skillsstringCleaned required skills represented as text
clean_skills_jsonstringCleaned required skills in JSON-like format
education_textstringEducation requirements or related text
years_requiredfloatEstimated years of experience required
embeddingstringPrecomputed 768-dimensional text embedding

matches.csv

Each row represents a candidate-job compatibility record.

ColumnTypeDescription
candidate_idstringCandidate identifier, linked to cv.csv
job_idintegerJob identifier, linked to job.csv
final_scorefloatFinal normalized compatibility score
raw_scorefloatRaw compatibility score before final normalization
label_strengthstringMatch strength label: weak_positive, medium_positive, or strong_positive
semantic_scorefloatSemantic similarity score between resume and job text
skill_scorefloatSkill overlap or skill compatibility score
position_scorefloatPosition/title compatibility score
category_scorefloatCategory compatibility score
experience_scorefloatExperience compatibility score
education_scorefloatEducation compatibility score
candidate_rankintegerRank of the job for the candidate
candidate_rank_pctfloatPercentile-style rank score for the candidate

Dataset Statistics

Overall Counts

MetricValue
Candidate profiles9,544
Job postings1,167
Candidate-job compatibility records122,560
Candidates appearing in compatibility records9,532
Jobs appearing in compatibility records1,164
Embedding dimension768

Job Category Distribution

CategoryJob Count
INFORMATION-TECHNOLOGY240
BUSINESS-DEVELOPMENT239
FINANCE236
SALES232
HR220

Candidate Category Distribution

CategoryCandidate Count
INFORMATION-TECHNOLOGY8,140
FINANCE1,010
SALES215
BUSINESS-DEVELOPMENT83
HR80
UNKNOWN16

Match Label Distribution

LabelCount
medium_positive70,636
weak_positive51,150
strong_positive774

Score Ranges

Score ColumnMinMaxMean
final_score0.43000.75610.5857
raw_score0.30600.65160.4359
semantic_score0.58050.91770.7812
skill_score0.00000.61700.0581
position_score0.02291.00000.2656
category_score0.00001.00000.8847
experience_score0.00001.00000.6765
education_score0.30001.00000.8974
candidate_rank_pct0.38321.00000.9353

Intended Use

This dataset is suitable for building and evaluating matching and recommendation systems in the recruitment domain.

Example use cases include:

  1. 1.Semantic retrieval Use resume and job embeddings to retrieve relevant jobs for each candidate.
  1. 1.Learning-to-rank Train a ranking model using compatibility scores, ranking positions, and label strengths.
  1. 1.Classification Convert label_strength into classes for supervised classification.
  1. 1.Graph recommendation Build a heterogeneous or bipartite graph using candidates, jobs, and compatibility edges.
  1. 1.Hybrid matching models Combine semantic similarity, skill compatibility, position matching, category matching, experience matching, and education matching.

Example Usage

python
import pandas as pd

cv_df = pd.read_csv("cv.csv")
job_df = pd.read_csv("job.csv")
matches_df = pd.read_csv("matches.csv")

print(cv_df.shape)
print(job_df.shape)
print(matches_df.shape)

Load Embeddings

The embedding columns are stored as string representations of numeric lists. You can convert them back into arrays as follows:

python
import ast
import numpy as np

cv_df["embedding"] = cv_df["embedding"].apply(lambda x: np.array(ast.literal_eval(x), dtype=np.float32))
job_df["embedding"] = job_df["embedding"].apply(lambda x: np.array(ast.literal_eval(x), dtype=np.float32))

print(cv_df["embedding"].iloc[0].shape)
print(job_df["embedding"].iloc[0].shape)

Join Candidate, Job, and Match Data

python
merged_df = (
    matches_df
    .merge(cv_df, on="candidate_id", how="left")
    .merge(job_df, on="job_id", how="left", suffixes=("_candidate", "_job"))
)

merged_df.head()

Convert Match Labels to Numeric Classes

python
label_map = {
    "weak_positive": 0,
    "medium_positive": 1,
    "strong_positive": 2,
}

matches_df["label_id"] = matches_df["label_strength"].map(label_map)

Recommended Train/Validation/Test Splitting

For recommendation and ranking experiments, avoid random row-level splitting only. A row-level split may place records from the same candidate in multiple subsets and can overestimate model performance.

Recommended approaches:

  • —Split by candidate_id for candidate-level generalization.
  • —Split by job_id for job-level generalization.
  • —Use a time-based split if timestamp information is added in future versions.
  • —For graph-based models, ensure validation and test edges are not included in the training graph as target edges.

Data Quality Notes

  • —All columns in the provided CSV files are complete, with no missing values detected.
  • —Candidate and job embeddings are stored as text and should be parsed before numerical modeling.
  • —The dataset contains positive compatibility records. For binary classification or pairwise ranking, negative or unobserved candidate-job pairs may need to be sampled depending on the experiment design.
  • —Some candidates or jobs may not appear in matches.csv; this is expected when using a filtered compatibility table.

Ethical Considerations

Recruitment datasets should be handled carefully because automated matching systems can influence employment opportunities. Users of this dataset should:

  • —Evaluate models for bias across relevant groups where such metadata is available and appropriate.
  • —Avoid using protected attributes for ranking or filtering.
  • —Treat model scores as decision-support signals rather than final hiring decisions.
  • —Review recommendations with human oversight.
  • —Ensure compliance with applicable privacy, employment, and data protection regulations.

Limitations

  • —The dataset focuses on selected job categories and may not generalize to all occupations.
  • —Compatibility labels and scores should be interpreted as modeling signals, not definitive hiring decisions.
  • —The dataset does not guarantee complete coverage of every possible candidate-job pair.
  • —The embedding model used to create the stored vectors is not specified in the dataset files.
  • —Additional validation may be required before using models trained on this dataset in real recruitment workflows.

Citation

If you use this dataset in a project, report, or experiment, please cite the dataset repository.

bibtex
@dataset{resume_job_matching_dataset,
  title  = {Resume-Job Matching Dataset},
  author = {Dataset Contributors},
  year   = {2026},
  url    = {https://huggingface.co/datasets/<your-username>/<your-dataset-name>}
}

License

Please update the dataset license before publishing. Use a license that matches your data source permissions and intended sharing policy.

Dataset Maintenance

For questions, updates, or corrections, please open an issue or discussion in the dataset repository.