Downloads · 30 days
23
16% of all-time downloads
smr123/resume-job-classifier
resume-job-classifier is a text classification model from smr123. Use it when you need a label for a piece of text. It is set up for transformers. The card lists the license as apache-2.0.
CPU-friendly 3-class text classifier that routes documents into resume, jobpost, or other.
Downloads · 30 days
23
16% of all-time downloads
All-time downloads
147
Public
Parameters
33.4M
301 MB on disk
Likes
0
Public
Click a slice to open those files.
.onnx168 MB · 56%
From the Hugging Face model README
CPU-friendly 3-class text classifier that routes documents into resume, job_post, or other.
Use it to pre-filter text before resume parsers, job extractors, or downstream LLM pipelines.
This model routes browser captures in AI Career OS, an open-source, local-first career assistant.
Its Chrome extension reads the visible text of whatever page you have open, this classifier decides whether that text is a single job posting, and only then does an LLM extract structured fields. Deciding "is this even a job post?" is a classification problem rather than a prompting one, so it runs here — locally, in single-digit milliseconds per chunk on a laptop CPU — instead of spending an LLM call and a round trip to find out the user was on a search results page.
Everything downstream runs on a model you control, including a local 9B through Ollama or LM Studio.
| Label | Description |
|---|---|
resume | CVs, experience blocks, skills lists |
job_post | Job descriptions, role requirements, hiring posts |
other | Everything else (bios, emails, blog posts, product copy, etc.) |
| Base model | microsoft/MiniLM-L12-H384-uncased |
| Training | Full fine-tune on ~1,389 labeled examples |
| Max length | 512 tokens |
| Version | v1.0.0 |
| Metric | Value |
|---|---|
| Accuracy | 95.0% |
| Macro-F1 | 0.95 |
| Class | Precision | Recall | F1 |
|---|---|---|---|
| resume | 1.00 | 0.93 | 0.96 |
| job_post | 0.88 | 0.95 | 0.92 |
| other | 0.94 | 1.00 | 0.97 |
Known failure modes: very short text, and resume-style phrasing like "seeking a position" can be confused with job posts.
from transformers import pipeline
clf = pipeline(
"text-classification",
model="smr123/resume-job-classifier",
top_k=None,
)
result = clf("We are hiring a Senior Software Engineer with Python experience.")
print(result)
# [{'label': 'job_post', 'score': 0.59}, ...]
Primary deployment artifact: onnx/model_int8.onnx (~34 MB).
import numpy as np
from transformers import AutoTokenizer
from optimum.onnxruntime import ORTModelForSequenceClassification
model = ORTModelForSequenceClassification.from_pretrained(
"smr123/resume-job-classifier",
subfolder="onnx",
file_name="model_int8.onnx",
)
tokenizer = AutoTokenizer.from_pretrained("smr123/resume-job-classifier")
text = "Senior Engineer at Acme Corp. Built APIs with Python and Go."
inputs = tokenizer(
text,
return_tensors="pt",
truncation=True,
padding="max_length",
max_length=512,
)
logits = model(**inputs).logits[0].numpy()
probs = np.exp(logits - logits.max())
probs /= probs.sum()
label = model.config.id2label[str(int(probs.argmax()))]
print(label, float(probs.max()))
config.json
model.safetensors # PyTorch weights (fine-tune / reproduce)
tokenizer.json
onnx/model.onnx # float32 export
onnx/model_int8.onnx # INT8 — recommended for CPU inference
Apache-2.0