π JobLink Semantic Match Scorer
Fine-tuned DeBERTa-v3-base for the JobLink AI-powered job matching platform. Predicts a continuous match score
[0.0 β 1.0]between a job description and a candidate CV/resume. Designed for the Ethiopian graduate job market.
π― Model Description
This model was fine-tuned as part of a thesis research project building JobLink, an AI-powered job matching and career development platform for Ethiopian graduates.
Architecture
- Base:
microsoft/deberta-v3-base(86M parameters) - Task: Sequence regression (output: scalar score in [0.0, 1.0])
- Input format:
JOB: <job description> [SEP] CANDIDATE: <candidate CV> - Output: Match score (0 = no match, 1 = perfect match)
Training Details
| Parameter | Value |
|---|---|
| Training date | 2026-04-28 |
| Base model | microsoft/deberta-v3-base |
| Epochs | 8 |
| Effective batch size | 32 (batch=4 Γ accum=8) |
| Learning rate | 8e-06 |
| LR scheduler | Cosine with 3 hard restart(s) |
| Warmup steps | 500 |
| Weight decay | 0.05 |
| Max token length | 512 |
| Dataset size | 16,291 balanced examples |
| Precision | float32 (TF32 disabled for stability) |
| GPU | NVIDIA T4 (Google Colab) |
π Test-Set Results
| Metric | Value | Target | Status |
|---|---|---|---|
| RMSE | 0.1350 | lower is better | β |
| MAE | 0.0741 | lower is better | β |
| RΒ² | 0.8305 | β₯ 0.80 | β |
| F1 Score | 0.9293 | β₯ 0.85 | β |
| Precision | 0.9248 | β₯ 0.80 | β |
| Recall | 0.9339 | β₯ 0.90 | β |
RAD Compliance: π’ PASSED
π Usage
Quick start (Python)
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
MODEL_ID = "abnetsisaynew/joblink-match-scorer"
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForSequenceClassification.from_pretrained(
MODEL_ID, num_labels=1, problem_type="regression"
)
model.eval().float()
def match_score(job_text: str, candidate_text: str) -> float:
sep = tokenizer.sep_token or "[SEP]"
text = f"JOB: {job_text} {sep} CANDIDATE: {candidate_text}"
tokens = tokenizer(
text, truncation=True, padding="max_length",
max_length=256, return_tensors="pt"
)
with torch.no_grad():
score = model(**tokens).logits.squeeze().item()
return round(max(0.0, min(1.0, score)), 4)
# Example
score = match_score(
job_text="Software Engineer: Python, Django, REST APIs, 3+ years",
candidate_text="BSc Computer Science, 4 years Django/FastAPI, Docker, AWS",
)
print(f"Match score: {score:.2%}") # e.g. "Match score: 87.34%"
Using the pipeline API
from transformers import pipeline
pipe = pipeline(
"text-classification",
model="abnetsisaynew/joblink-match-scorer",
function_to_apply="none",
)
result = pipe("JOB: Python Engineer [SEP] CANDIDATE: 3 years Python")
print(result[0]["score"]) # 0.0 β 1.0
π§ Gradio API (Live)
A free Gradio Space is deployed alongside this model:
Space UI β https://huggingface.co/spaces/abnetsisaynew/joblink-match-api
API URL β https://abnetsisaynew-joblink-match-api.hf.space/api/predict
curl example:
curl -X POST \
"https://abnetsisaynew-joblink-match-api.hf.space/api/predict" \
-H "Content-Type: application/json" \
-d '{"data": ["JOB: Software Engineer [SEP] CANDIDATE: 3 years Python"]}'
# Returns: {"data": [{"score": 0.8712}]}
Node.js / backend example:
const response = await fetch(process.env.HUGGINGFACE_SPACE_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ data: [`JOB: ${jobText} [SEP] CANDIDATE: ${candidateText}`] }),
});
const { data: [{ score }] } = await response.json();
console.log("Match score:", score); // 0.0 β 1.0
β οΈ Limitations
- Optimised for the Ethiopian graduate job market β may not generalise perfectly to other regions without additional fine-tuning.
- Input is truncated at 256 tokens; very long CVs may lose tail context.
- Binary threshold (β₯ 0.5 = "good match") is a design choice β adjust for your use case.
- The model scores semantic similarity, not literal resume parsing.
π Citation
If you use this model in academic work, please cite:
@misc{joblink2025,
author = {Abnet Sisay},
title = {JobLink: AI-Powered Job Matching for Ethiopian Graduates},
year = {2025},
url = {https://huggingface.co/abnetsisaynew/joblink-match-scorer}
}
π License
MIT Β© 2026 Abnet Sisay
- Downloads last month
- 16
Model tree for abnetsisaynew/joblink-match-scorer
Base model
microsoft/deberta-v3-base