NewBIR TRAIN Law brackets are now live in WORKSPHR. Learn more
Coming Soon · Q3 2026AI Solution · Flagship

Score every candidate against every role — deterministically.

What is WORKSPHR Match AI?

A rule-based candidate-to-role scoring engine built into WORKSPHR Recruitment. It rates every applicant on a transparent 100-point scale across six dimensions: Role Relevance (30), Skills (25), Experience (20), Education (10), Location/Arrangement (8), Salary Alignment (7). Same candidate plus same job equals same score, every time. No ML black box. No hidden bias. No model drift. Every point is traceable to a rule and a piece of profile data.

Built for recruiters who need to defend every shortlist, every rejection, and every interview slot — to a hiring manager, to HR leadership, or to a labour lawyer.

Why deterministic scoring beats black-box ML.

Deterministic = explainable = auditable. Three properties Filipino HR leaders need to defend hiring decisions, especially under DOLE scrutiny or NLRC review.

Deterministic

Same candidate plus same job equals the same score, every time. Score it today, score it next year, score it after a system migration — identical result. No model drift, no retraining surprises, no “why is the score different now?”.

Reproducibility is non-negotiable when a candidate asks “why was I not shortlisted?”.

Explainable

Every point on a candidate's 87/100 scoretraces back to a rule and a piece of profile data. “Skills 22/25: found Python, FastAPI, PostgreSQL; missing Docker.” A hiring manager can read the breakdown in 10 seconds and agree or disagree.

If you can’t explain a rejection, the candidate has every right to question it.

Auditable

Every score is timestamped, with the rule version that produced it, written to score_history. Tune your weights tomorrow — historical scores are frozen for the audit. RA 10173 (DPA) and DOLE inspections handled.

“What were our weights when we rejected this person in March?” Answerable in one query.

“AI matching” without explainability is a lawsuit waiting to happen.

Most ATS platforms claim “AI matching” but can't tell you why a candidate scored what they scored. Under RA 10173 (Data Privacy Act)a data subject can demand the logic of any automated decision affecting them. “Our model said so” is not a defence.

Black-box ML ≠ defensible
“The model decided” fails RA 10173 Section 16(c) automated-decision rights.
Score drift = compliance risk
If the model retrained, last quarter’s scores no longer reproduce.
Hidden bias from training data
ML absorbs whatever bias was in past hires. Rules don’t.
Recruiter cannot defend the shortlist
“Why this candidate, not that one?” should not be unanswerable.

Six dimensions, one transparent score.

Each dimension has a maximum, a clear rule, and a profile field it reads from. Tune the weights, change the score — never change the logic behind it.

A simple, traceable formula. Each candidate scores against the job posting on six dimensions, weighted exactly as shown. The total is a 0–100 integer stored on the job_applications row, returned by every Match API endpoint, and shown on every candidate card.

  • Role Relevance — 30 pts: title and industry alignment
  • Skills — 25 pts: required skills found vs missing
  • Experience — 20 pts: years versus job requirement
  • Education — 10 pts: degree level versus minimum
  • Location/Arrangement — 8 pts: location + work setup match
  • Salary Alignment — 7 pts: expectation within offered range
See it score live

How a candidate gets scored.

1

Application submitted

Match scoring runs automatically the moment a candidate applies. The 100-pt score, breakdown, and insight strings are written to the job_applicationsrow in < 200 ms.

2

Pipeline + Dashboard

The score is shown on every Kanban tile, candidate card, and pipeline view. Sort by score, filter by score band, bulk-action by score. Score never auto-rejects — recruiters always make the call.

3

Audit trail forever

Every score is timestamped with the rule version. Tune your weights tomorrow — historical scores are frozen. RA 10173 (DPA) and DOLE inspections handled with one query.

  • Why deterministic instead of ML?
    Three reasons. (1) Explainability: every point on a candidate's 87/100 score is traceable to a rule and a piece of profile data. (2) Auditability: same candidate plus same job equals same score, every time, forever. No model drift. (3) Bias control: rules are written and reviewed by humans, not absorbed from training data. Filipino HR has zero tolerance for unexplainable rejections, especially under RA 10173 Section 16(c) (right to know the logic of automated decisions).
  • Can scores change?
    Only when the inputs change. If the candidate adds a missing skill, their score recomputes. If you tune your weights or post a new job, scores recompute. Otherwise the score is stable on the job_applications row. Every recompute writes a new row to score_historywith timestamp + reason — the old score is never lost.
  • How do I tune the weights?
    In Recruitment Settings → Match Weights. Six sliders, each capped to a maximum, summing to 100. You can boost Skills to 35 and lower Education to 5 if your hiring is skills-first. Changes apply to NEW scores only; historical scores stay frozen for audit. Permission required: recruitment.match.config:write.
  • How does it integrate with the ATS pipeline?
    Every job application gets scored on submission. The score is stored on the job_applications row and shown in every pipeline view, candidate card, and Kanban tile. You can sort, filter, and bulk-action by score. The score never auto-rejects; it only ranks. Auto-reject was a deliberate non-feature — we don't want recruiters or candidates blaming the system.
  • Can I batch-score existing candidates against a new role?
    Yes. The moment you publish a job, Match runs against your entire active candidate pool and surfaces the top matches in the Match Dashboard, even for candidates who have not yet applied. You can send those candidates an interest probe— a magic-link email asking “interested?” — with rate-limit one probe per candidate-job pair. Internal-only postings and hidden profiles are excluded.
  • How are salary insights calibrated?
    Anonymised aggregates of active WORKSPHR job postings where show_salary is true. Segmented by role, location, and experience. Minimum 30 data points before a P25-Median-P75 band is shown. We do not pull from third-party salary databases or scrape job sites. Permission required: recruitment.match.salary_insights.

Defensible matching. Every shortlist, every score.

Book a 30-minute demo. We'll score a real-world candidate against your hardest open role, walk the breakdown, and tune the weights live with you.