Fine-tuned xlm-roberta-base for classifying German job listings by seniority level into 5 grades: Trainee, Junior, Mid, Senior, Lead+.
Part of the JobBlast taxonomy model family — a system for automated classification of German-language job postings. This model is orthogonal to the industry classifier: it determines the experience level required for a position, independent of the field. Combine it with xlm-roberta-taxonomy-main-de to get both what kind of role and what level a vacancy targets.
Test Metrics
Metric
Value
Accuracy
94.50%
F1 macro
93.90%
F1 weighted
94.60%
Evaluated on a held-out test set of 20,55 German job listings.
Per-class results
Grade
Precision
Recall
F1
Support
Trainee
0.977
1.000
0.988
126
Junior
0.893
0.893
0.893
75
Mid
0.980
0.933
0.956
1235
Senior
0.881
0.960
0.919
448
Lead+
0.898
0.982
0.939
171
The close gap between F1 macro (0.939) and F1 weighted (0.946) indicates balanced performance across grades despite the underlying class imbalance — rare grades (Junior, Lead+) are not sacrificed for accuracy on the dominant Mid class.
Label Schema
Label
Typical signals in German job ads
Trainee
Auszubildende:r, Ausbildung, Praktikum, Werkstudent:in, Trainee-Programm, Berufseinstieg ohne Erfahrung
Junior
Junior, Berufseinsteiger:in, 1-2 Jahre Erfahrung, erste Berufserfahrung
Mid
No explicit grade marker, 2-5 Jahre Erfahrung, selbstständige Arbeitsweise, default for most listings
Senior
Senior, erfahren, 5+ Jahre Erfahrung, tiefgreifende Kenntnisse, Expert:in
Lead+
Lead, Principal, Staff, Head of, Team Lead, Architect, Führungsverantwortung, leadership / staff-level positions
Note on Lead+
The original LLM-labeled dataset distinguished Lead and Principal as separate grades. Because Principal had only ~200 examples — too few to train a reliable transformer classifier — the two classes were merged into Lead+ for training. If you need to recover Principal specifically, apply a post-processing regex on the job title after this model's prediction (e.g. r"\b(Principal|Staff|Chief|VP)\b").
Vote distribution used as soft targets (e.g. [Senior, Senior, Lead+] → {Senior: 0.67, Lead+: 0.33})
Class merging
Principal (206 samples) merged into Lead+ due to insufficient data
Max length
512 tokens
Learning rate
2e-5
Epochs
5 (early stopping, best epoch: 4)
Class weighting
Balanced
Class distribution in training data
Grade
Count
Share
Mid
12,351
60.1%
Senior
4,476
21.8%
Lead+
1,709
8.3%
Trainee
1,262
6.1%
Junior
747
3.6%
The 16.5× imbalance ratio between Mid and Junior is handled through balanced class weights at training time.
Limitations
Optimized for German job listings only — performance on other languages is not validated
Junior is the weakest class (F1 0.893) due to limited training data (747 samples) and a genuinely ambiguous Junior↔Mid boundary in German job ads, where "1-3 Jahre Erfahrung" often overlaps with the Mid grade definition
Slight upward bias on grade boundaries: when uncertain between Mid and Senior (or Senior and Lead+), the model tends to predict the higher grade — visible as higher recall than precision for Senior and Lead+
Lead+ includes what was originally labeled as Principal. For applications that need to distinguish Principal/Staff/Chief-level roles specifically, apply title-based post-processing on top of the model output
The model classifies the seniority required by the job ad, not the actual seniority of any candidate
Inputs longer than 512 tokens are truncated — title and the first paragraph of the description carry most of the seniority signal anyway
The model is trained on German job listings and has learned to prioritize legally-defined seniority markers (Werkstudent, Immatrikulationsbescheinigung, Praktikum, Ausbildung) above explicit title keywords. For listings where the title and description conflict, the model will follow the strongest unambiguous signal, which usually means description-level legal markers override title-level grade keywords. This matches German HR practice but may differ from how other markets handle title-based classification.
Experience-level classification, orthogonal to industry
A typical JobBlast pipeline: the main model assigns the top-level category, IT-tagged listings are passed to the it model for fine-grained IT-role classification, and the seniority model runs in parallel on every listing to attach an experience grade — giving a (category, sub_category, seniority) triple per vacancy.