Local-first two-stage scoring pipeline for job-candidate fit prediction. Trained on Indian job market data across 15 role families.
LightGBM scores all jobs (<1ms each)
→ Composite = skills×0.5 + location×0.25 + seniority×0.15 + domain×0.10
→ Shortlist: composite > 60
→ MiniLM reranker reranks shortlist (~14ms/pair)
→ Final ranked feed
1import onnxruntime as ort
2
3# LightGBM
4session = ort.InferenceSession("skills_lgbm.onnx")
5score = session.run(None, {"features": feature_vector})[0]
6
7# Reranker
8session = ort.InferenceSession("reranker.onnx")
9logits = session.run(None, {"input_ids": ids, "attention_mask": mask})[0]
skills_lgbm.onnx — LightGBM skills scorer
skills_calibration.json — isotonic regression (raw → 50-100 scale)
embedding_encoder.onnx — MiniLM encoder for cosine sim feature
embedding_encoder.onnx.data — encoder weights
embedding_tokenizer/ — tokenizer for encoder
reranker.onnx — MiniLM cross-encoder
reranker.onnx.data — reranker weights
reranker_tokenizer/ — tokenizer for reranker
config.json — feature names, composite weights, thresholds