Pipeline
Resume Processing Pipeline
Transforms candidate PDFs into structured, semantically searchable vector embeddings through a fully automated Rust-native pipeline.
Pipeline Stages
| Stage | Technology | Detail |
|---|---|---|
| 1. PDF Upload | React Frontend | Candidate submits PDF |
| 2. EdgeParse | Rust (pure) | PDF to Markdown in 0.064s/doc |
| 3. LLM Structuring | Groq API | Two-stage: structure_to_markdown → extract_resume_fields |
| 4. Link Extraction | Regex + Groq | Deduplicated, regex preferred as ground truth |
| 5. Embedding | all-mpnet-base-v2 ONNX INT8 | 768-d vectors, in-process Rust |
| 6. Vector Storage | Qdrant gRPC | 4 collections: Skills, Projects, Experience, Summary |
| 7. Persistence | PostgreSQL | Resumes table with 4 vector IDs + metadata |
EdgeParse Performance
0.787
Benchmark Score
0.064s
Latency per Doc
0.007s
M4 Max Throughput
0.901
Table Detection F1
Section Weights
| Section | Weight | Rationale |
|---|---|---|
| Work Experience | 0.35 | Strongest predictor of job performance |
| Skills | 0.30 | Technical competency baseline |
| Projects | 0.20 | Practical application evidence |
| Summary | 0.15 | Career narrative context |
PostgreSQL Schema
Each resume row stores four Qdrant vector IDs, a JSONB metadata column with four text fields (summary, skills, projects, experience), raw full text, extracted links, and a Cloudinary URL for the original PDF. All four vector IDs are fetched in a single SQL query during shortlisting, reducing database round trips from 4 to 1.