Resume Screening & Filtering
DeepScreen's screening pipeline transforms raw PDF resumes into structured, semantically searchable embeddings in under 60 seconds for a batch of 1000 resumes. Every candidate goes through the same automated process — no manual resume reading, no first-impression bias, no inconsistent evaluation criteria.
Screening Pipeline
| Stage | Technology | Detail |
|---|---|---|
1 PDF Ingestion | React + Rocket API | Candidates upload PDFs through branded career pages. Resumes are streamed to the Rust backend with chunked upload support for files up to 20MB. Duplicate detection via content hashing prevents re-processing. |
2 Document Parsing | EdgeParse (Rust) | Pure-Rust PDF-to-Markdown converter. 0.787 benchmark score, 0.064s per document. Extracts text while preserving section structure — headings, bullet points, tables, and code blocks are semantically tagged. No JVM or GPU dependency. |
3 LLM Structuring | Groq API | Two-stage pipeline: structure_to_markdown normalizes the raw Markdown into canonical sections (education, experience, skills, projects), then extract_resume_fields produces typed JSON. Link extraction uses regex as ground truth with LLM fallback. |
4 Embedding Generation | all-mpnet-base-v2 ONNX INT8 | Four separate 768-dimensional embeddings generated per resume: Skills, Projects, Experience, Summary. Runs in-process via Rust ONNX bindings — no network call, no container orchestration. INT8 quantization reduces model from 260MB to 110MB. |
5 Vector Storage | Qdrant gRPC + PostgreSQL | Embeddings stored across four Qdrant collections. Metadata, extracted links, and Cloudinary PDF URLs stored in PostgreSQL. Single SQL query fetches all four vector IDs. gRPC access delivers 1.11ms p50 latency vs 2.40ms REST. |
Configurable Filters
Semantic Match Score
Minimum cosine similarity threshold between resume embeddings and job description. Adjustable per field — require high Skills match for technical roles, high Experience match for senior positions.
Education Level
Filter by highest degree attained. Configurable per role — some roles require a minimum degree level, others treat education as a tiebreaker rather than a hard requirement.
Experience Range
Filter by years of experience extracted from the resume. Handles edge cases: candidates with overlapping roles, career breaks, and freelance periods are calculated accurately.
Skill Keywords
Exact-match keyword filtering against the Skills section. Supports AND/OR logic, must-have vs nice-to-have tiers, and minimum proficiency indicators extracted from context.
Location Preference
Filter by extracted location or willingness to relocate. Handles remote, hybrid, and on-site preferences. For remote roles, timezone compatibility is calculated from extracted location data.
Recency Filter
Filter by most recent experience date. Ensures candidates have recent, relevant experience rather than historical experience that may no longer be current.