DeepScreenDeepScreen
Funnel

AI-Ranked Candidate Shortlist

DeepScreen's shortlisting engine follows the retrieve-then-rerank paradigm: cheap vector search builds a broad candidate pool, expensive cross-encoding narrows to the most relevant candidates, and BM25 lexical scoring catches exact matches that dense embeddings miss. The cheapest operation always runs first.

Shortlisting Stages

StageModelPoolWeight
1
Vector Retrieval
all-mpnet-base-v2 ONNX INT8
All → 2K
0.20
2
Cross-Encoder Re-ranking
ms-marco-MiniLM-L12-v2 ONNX INT8
2K → K
0.65
3
BM25 Lexical Scoring
BM25 (raw_full_text)
K → K
0.15

Stage Details

Stage 1: Vector Retrieval

All → 2K

Four parallel Qdrant gRPC searches across Skills, Projects, Experience, and Summary collections. COSINE distance metric with HNSW parameters: m=16, ef_construct=200, ef=128. The has_id() filter ensures only candidates who passed screening enter the pool. Recall@10 = 0.93 at this stage means we retain 93% of truly relevant candidates while discarding 98% of the total pool.

Stage 2: Cross-Encoder Re-ranking

2K → K

The cross-encoder processes all four field pairs (resume section × job description) in a single batched session.run(). Input tensor is shaped [4 × max_len] enabling parallel attention across all fields. This is ~3x faster than sequential processing. INT8 quantization reduces the model from 134MB to 34MB with negligible accuracy loss.

Stage 3: BM25 Lexical Scoring

K → K

Classical BM25 with k₁=1.2, b=0.75 runs against the raw full-text of resumes. This recovers exact matches for version numbers, certification codes, tool names, and specific methodologies that dense embeddings tend to smooth over. A candidate mentioning 'CKAD' exactly matches a job requiring 'CKAD' — no semantic approximation.

Score Blend

score(u) = 0.65 · c_n(u) + 0.20 · v_n(u) + 0.15 · b_n(u)

All scores min-max normalised within top-K pool. Neutral 0.5 when all candidates are tied.

Section-Wise vs Whole-Document

MetricWhole-DocSection-WiseGain
Precision@5
0.720.81
+12.5%
Precision@10
0.680.76
+11.4%
Recall@10
0.740.83
+12.2%
NDCG@10
0.710.79
+11.3%
MRR
0.760.84
+10.5%

Internal benchmark on 500 candidates, 50 job descriptions.