Downloads · 30 days
8
19% of all-time downloads
srijavuppala22/distilbert-jd-classifier
distilbert-jd-classifier is a text classification model from srijavuppala22. Use it when you need a label for a piece of text. The card lists the license as mit.
Fine-tuned distilbert-base-uncased that classifies a job description into one of four engineering tracks:
Downloads · 30 days
8
19% of all-time downloads
All-time downloads
43
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
Fine-tuned distilbert-base-uncased that classifies a job description into one of four engineering tracks:
ai_mldevops_srehardware_embeddedfullstack_sweBuilt to solve a real problem: given a job posting, automatically pick which resume variant to send.
| class | precision | recall | f1 |
|---|---|---|---|
| ai_ml | 0.91 | 1.00 | 0.95 |
| devops_sre | 0.80 | 0.80 | 0.80 |
| hardware_embedded | 1.00 | 1.00 | 1.00 |
| fullstack_swe | 0.89 | 0.80 | 0.84 |
| macro avg | 0.90 | 0.90 | 0.90 |

The training set (400 rows, pulled from a Kaggle job-postings dataset plus an
HF full-text search over a 33k-row job dataset for FPGA/VLSI/embedded roles)
initially trained to 0.75 macro-F1. An audit of the worst misclassifications
surfaced 3 mislabeled rows — staffing-agency "Account Manager" / "Recruiter"
postings that got swept into hardware_embedded because they mentioned
FPGA/embedded as one of many industries the agency covers, even though the
job itself has nothing to do with engineering.
Removing those 3 rows (0.75% of the data) took macro-F1 from 0.75 → 0.90.
Code for the audit step: scripts/audit_labels.py in the
GitHub repo.
from transformers import pipeline
clf = pipeline("text-classification", model="srijavuppala22/distilbert-jd-classifier", top_k=None)
clf(full_job_description_text, truncation=True, max_length=512)
# [{'label': 'ai_ml', 'score': 0.83}, {'label': 'devops_sre', 'score': 0.09}, ...]
Pass the full job description text, not a one-line summary — see Limitations below.
distilbert-base-uncasedai_ml and devops_sre).max_length=512 truncation used during training account for the small swing) — treat 0.90 as the training-run number, not a guaranteed number for every inference path.Full pipeline (data prep, weak labeling, audit, training script, Gradio demo): github.com/srijavuppala/jd-classifier-distilbert