A credibility score for every job posting.
Paste a job description and JobCred returns a calibrated 0–100 credibility score, built from the posting's wording, its structured details, and whether the two actually agree with each other.
From a pasted posting to an explainable verdict
Every score comes with the reasoning behind it — never a bare number.
Every posting follows this exact six-stage path, in this order -- nothing is skipped or special-cased.
Submit the posting
Paste the description text, plus any structured details you know -- title, location, salary, employment type. Anything left blank stays genuinely unknown, not guessed.
Preprocessing
The text and any structured fields are cleaned and standardised before anything is extracted from them -- the same step every posting goes through.
Evidence extraction (E1-E4)
The posting is scanned for four categories of evidence -- wording cues, identity cues, how complete the details are, and whether the text and fields agree -- producing 46 measured signals.
Model scoring
A fine-tuned language model reads the posting's text in context, and its reading is combined with the 46 evidence signals to produce one raw prediction.
Calibration
That raw prediction is passed through a calibration step so the final number genuinely behaves like a probability, then mapped to your 0-100 credibility score.
Explanation
A technique called SHAP ranks which pieces of evidence mattered most, turning the prediction into specific reasons, matched phrases, and a checklist to verify yourself.
Four categories of evidence, fused together
Not just what the posting says — how complete it is, and whether it agrees with itself.
Text & content cues
Scans the wording for scam-style language — artificial urgency, guaranteed pay, requests to pay money upfront.
Identity & contact cues
Looks at how the employer identifies itself — a company profile, a specific location, and how applicants are asked to get in touch.
Metadata completeness
Checks which of the standard posting details are actually filled in, since postings missing basic information carry more risk.
Text–metadata consistency
Flags contradictions between the free text and the structured fields — a posting calling itself remote while also listing an office location, for example.
Why the score isn't a black box
Two things keep this from being "trust us" -- a measured calibration, and explanations computed fresh for every posting.
A calibrated score, not a made-up number
The model's raw prediction is passed through a calibration step before becoming your 0-100 score, so a posting scored around 70 really does behave, on average, like a posting that turns out legitimate roughly 70% of the time -- checked directly against real postings the model never trained on, not just assumed.
Checked against real postings the model never trained on — and it held up.Technical detail: calibration error (ECE) of 0.0076, measured once on a held-out test set.
Reasons computed fresh for every posting
The reasons under "All observations" aren't a fixed checklist -- they're calculated individually for each posting using a technique called SHAP, which measures exactly how much each piece of evidence pushed that specific score up or down. That's why two similar-looking postings can get different reasons: the explanation reflects what actually mattered this time, not a generic rule applied to everyone.
Every time the system flagged a contradiction, the explanation named it — not just sometimes, every single case checked.Technical detail: 14 out of 14 fired consistency-rule cases appeared in their own top reasons.
See it in action
Two real results from testing the system against real postings -- not illustrations, the system's actual output.
A real scam report (consumer-reported employment scam)
- An employer profile was missing, which lowered the score.
- The posting's location (city) was NOT specified at this level, which lowered the score.
- Recommended check: "No direct contact channel was detected in the text -- confirm how you're expected to apply or follow up."
Source: Stage 8b demonstration, reports/stage8b_demonstration.json -- the system's unedited output.
A real company careers-page posting (Stripe)
- The posting's location (region) was specified at this level, which raised the score.
- An employer profile was missing, which lowered the score.
- The 'industry' field was missing, which raised the score.
Source: Stage 8b demonstration, reports/stage8b_demonstration.json -- the system's unedited output. One line above may look backwards at first — "missing field... raised the score" — but that's not an error. The system weighs a posting as a whole, not as a checklist, so a single missing field is never automatically held against (or for) a posting on its own. Here, the detailed, genuine Stripe text is what actually earned the high score; the missing fields barely mattered once the real content was read.
About this project
JobCred is the applied artefact of a Final Year Research Project, An Explainable Credibility Scoring Framework for Online Recruitment Posts Using Multi-Signal Evidence and Consistency Verification. It combines a fine-tuned transformer model with structured evidence and consistency-verification rules, so every score comes with a stated, checkable reason rather than a bare number.