πŸ”— 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.

License: MIT Model: DeBERTa-v3


🎯 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
Safetensors
Model size
0.2B params
Tensor type
F32
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for abnetsisaynew/joblink-match-scorer

Finetuned
(661)
this model

Space using abnetsisaynew/joblink-match-scorer 1