System Design: Resume Search Platform
Context
A recruiting company needs a platform where applicants can upload resumes and recruiters can search, filter, and view matching candidates. Build a scalable, secure system with robust search and asynchronous processing.
Requirements
-
Applicant uploads
-
Accept PDF/Word resumes via web/mobile.
-
Resume Server
-
Parse resumes into structured metadata.
-
Generate thumbnails and resized previews.
-
Store both metadata and files.
-
Recruiter search and view
-
Provide search UI and APIs to retrieve matching resumes.
-
Specify in your design
-
High-level architecture and components (applicant/recruiter interfaces, resume server services, data stores).
-
Data model for resume metadata and file references; include schema fields such as name, contact, skills, education, experience, locations, uploaded_at, and versioning strategy.
-
Storage choices for blobs vs metadata (e.g., object storage + document/relational DB) and trade-offs (consistency, transactions, cost).
-
Asynchronous processing pipeline for parse/resize using a queue and horizontally scalable workers; address idempotency and retries.
-
Public APIs for upload, search with multiple filters (skills, location, experience, education), and get-by-id; outline request/response shapes and pagination.
-
Search strategy and indexing with a dedicated search engine; propose mappings/fields, ranking signals, and example queries (term, text, range filters).
-
Scalability plan: sharding/partitioning, back-pressure, rate limiting, caching/CDN for previews, and data lifecycle policies.
-
Security and privacy: HTTPS, authentication, RBAC for applicants vs recruiters, signed URLs for file access, PII handling, audit logs.
-
Observability and reliability: metrics, logs, traces, SLOs, failure handling, dead-letter queues.
-
Evolution: relevance tuning, typo tolerance, synonym handling, multi-tenant isolation, and cost optimization.
-
Capacity estimates
-
Propose reasonable daily uploads, QPS, and data size, and justify design choices with trade-offs.