System Architecture
DeepScreen deploys ML inference directly inside a single Rust/Rocket process, eliminating inter-process serialization on the hot path.
Technology Stack
| Component | Technology | Detail |
|---|---|---|
| Inference Server | Rust + Rocket | GIL-free, zero-cost abstractions |
| ML Runtime | ort crate (ONNX Runtime) | Zero-copy tensor access |
| Embedder | all-mpnet-base-v2 ONNX INT8 | 110 MB, 768-d vectors |
| Cross-Encoder | ms-marco-MiniLM-L12-v2 ONNX INT8 | 34 MB, batched |
| PDF Extraction | EdgeParse (Rust) | Pure Rust, no JVM/GPU |
| LLM Structuring | Groq API | Two-stage: structure then extract |
| Vector DB | Qdrant via gRPC | p50 1.11ms vs 2.40ms REST |
| Desktop Client | React + Tauri | <10 MB binary, OS-level APIs |
| Offline TTS | sherpa-onnx + Supertonic 3 | 99M params, CPU |
| Real-Time Video | LiveKit SFU | 80-150ms audio latency |
Data Flow
Resumes uploaded via React frontend to Rocket API. EdgeParse extracts Markdown, Groq produces ResumeData JSON. Four ONNX embeddings stored across Qdrant collections.
Job descriptions embedded and searched against Qdrant via gRPC. Top 2K candidates pass through cross-encoder and BM25. Results flow to recruiter dashboard via REST.
Shortlisted candidates launch Tauri client. Stage 1 (coding) with OS proctoring. Stage 2 (AI avatar) offline TTS + browser STT. Stage 3 via LiveKit WebRTC.
Key Design Decisions
Rust over Python
3-5x speedup, 60-80% less memory on inference hot path
INT8 Quantization
74.7% model reduction (570MB to 144MB) with <0.8pp loss
gRPC over REST
2.2x lower p50 latency, 75% smaller Protobuf payloads
Tauri over Electron
<10MB vs 80-120MB, OS-level syscall access
Section-wise Embedding
+11.4pp Precision@10 over whole-doc embedding
Offline TTS
Fully air-gapped, no cloud dependency