Downloads · 30 days
3
8% of all-time downloads
Anshika0509/distilbert-resume-job-matcher
distilbert-resume-job-matcher is a text classification model from Anshika0509. Use it when you need a label for a piece of text. It is set up for transformers. The card lists the license as mit.
This repository contains a DistilBERT (distilbert-base-uncased) transformer model fine-tuned for sequence pair classification on candidate resumes and job descriptions.
Downloads · 30 days
3
8% of all-time downloads
All-time downloads
38
Public
Parameters
67M
268 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors268 MB · 100%
From the Hugging Face model README
This repository contains a DistilBERT (distilbert-base-uncased) transformer model fine-tuned for sequence pair classification on candidate resumes and job descriptions.
Unlike traditional keyword-based Applicant Tracking Systems (ATS) that rely strictly on lexical overlap (BM25 / TF-IDF), this model captures deep semantic relationships, synonymy, domain equivalencies, and cross-functional skill alignments.
Resume [SEP] Job Description
↓
DistilBERT Encoder (6 Layers, 768 Hidden Dim, 12 Heads)
↓
[CLS] Representation
↓
Pre-Classifier Dense Layer (ReLU + Dropout 0.2)
↓
Classification Head (3 Output Logits)
↓
Softmax Probabilities: [No Fit, Potential Fit, Good Fit]
No Fit): Cross-domain mismatch (e.g. Sales Representative vs Software Engineer) with negligible skill or domain relevance.Potential Fit): Adjacent role family or partial skill overlap (e.g. Data Analyst vs BI Analyst, or same role family with a seniority shift).Good Fit): Target role family, high core skill coverage (≥70%), and aligned experience/seniority level.distilbert-base-uncasedmichaelozon/candidate-matching-synthetic (10,000 candidate profiles, 24 roles, 73 skills)2e-5, Weight Decay: 0.01)| Model | Accuracy | Precision | Recall | Macro F1 | Weighted F1 |
|---|---|---|---|---|---|
| TF-IDF Cosine Similarity Baseline | 0.9647 | 0.9647 | 0.9647 | 0.9647 | 0.9647 |
| TF-IDF + Logistic Regression Baseline | 0.9949 | 0.9949 | 0.9949 | 0.9949 | 0.9949 |
| DistilBERT (Fine-Tuned Transformer) | 0.99+ | 0.99+ | 0.99+ | 0.99+ | 0.99+ |
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model_id = "anshika-saklani/resume-job-distilbert"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(model_id)
resume = "Senior Python Engineer with 6 years experience in Django, REST APIs, Docker, and PostgreSQL."
job_desc = "Seeking Senior Backend Engineer with Python, Docker, Kubernetes, and REST API architecture experience."
inputs = tokenizer(
resume,
job_desc,
truncation=True,
max_length=512,
return_tensors="pt"
)
with torch.no_grad():
logits = model(**inputs).logits
probs = torch.softmax(logits, dim=-1).squeeze().tolist()
id2label = {0: "No Fit", 1: "Potential Fit", 2: "Good Fit"}
for idx, prob in enumerate(probs):
print(f"{id2label[idx]}: {prob * 100:.2f}%")