CV Search

AI-Powered Resume Intelligence — from upload to shortlist in seconds

The Problem

Recruiters manually scan hundreds of CVs to fill one role. Keyword filters miss good candidates. Spreadsheets don't explain why someone matches. The result: hours of manual screening, missed talent, and no audit trail for hiring decisions.

CV Search is a prototype that uses AI to read, understand, and index resumes — then lets recruiters search in plain English and paste a job description to get a ranked, explained shortlist. It works with any file format, handles bulk uploads, and degrades gracefully when AI services are unavailable.

How It Works

1Upload & Extract

Drop a single CV or bulk-upload hundreds. The AI reads any format — PDF, image, Word doc, or plain text — and extracts a structured candidate profile with name, skills, experience, and evidence from the document itself.

Upload and Extract flow diagram — recruiter uploads CV or bulk uploads resumes, AI reads the document and extracts a structured profile
Two entry points (manual + bulk) merge into one AI pipeline. No separate paths for different formats — multimodal AI handles everything.

2Search in Plain English

Type what you need, not what's in a dropdown: "backend engineer with Go and Kafka." The system finds matching candidates by keywords, then AI re-ranks the results with a score and a human-readable explanation for each match.

Search flow diagram — recruiter types natural language query, system finds candidates by keywords, AI reranks with explanations
Every result comes with a score (0-100) and an evidence-based reason: "5 years Go, Kafka experience in payments."

3Paste a JD, Get a Shortlist

Paste any job description as plain text. The system finds candidates by keywords, then AI ranks them against the JD — prioritizing must-have skills, seniority, and domain fit. If the JD is too abstract for keyword matching, all candidates go to AI for ranking. You get a top-5 shortlist with fit rationale for each.

JD Match flow diagram — recruiter pastes job description, system finds candidates by keywords, AI ranks against JD, top 5 shortlist with rationale
The empty-pool guard ensures abstract job descriptions still produce candidates — AI handles the full ranking when keywords aren't enough.

4Target Architecture

The prototype runs as a single Go binary in Docker. The target architecture scales it on Tencent Cloud: CLB for load balancing, CVM instances with N replicas, TDMQ/CKafka for durable messaging, TencentDB for PostgreSQL, COS for object storage — all fully managed.

Tencent Cloud deployment architecture diagram showing CLB load balancer, CVM instances with Go API and AI Workers, TDMQ/CKafka message queue, TencentDB for PostgreSQL, COS object storage, and external AI APIs with all ports and connections labeled
Tencent Cloud fully managed. Workers scale independently with queue depth. COS replaces local volumes for horizontal scaling. View interactive version ↗

Infrastructure Specifications

ComponentTencent Cloud ServicePortPurpose
Load BalancerCLB (Cloud Load Balancer):443 (TLS)HTTPS termination, routing, health checks
API ServerCVM (Go binary, N replicas):8095REST API — uploads, search, JD match
WorkersCVM (Go goroutines, N replicas)Pull jobs from queue, call external AI APIs
Message QueueTDMQ / CKafkaManagedDurable job queue — survives restarts
DatabaseTencentDB for PostgreSQL 16:5432Candidates, jobs, full-text search
Object StorageCOS (Cloud Object Storage)ManagedOriginal CV files, extracted text
AI VisionGemini APIExternal HTTPSMultimodal OCR for PDFs/images
AI TextDeepSeek / OpenAI-compatExternal HTTPSProfile extraction, reranking, JD matching
The Status

Built as a prototype. Designed to scale. The current PoC is live at cv-search.zahranm.cloud — single container, JSON file store, in-memory queue. The target architecture shows the path to production on Tencent Cloud: CLB, CVM with N replicas, TDMQ/CKafka durable queue, TencentDB, and COS — all fully managed.