Projects / profile-search-rag
CV extraction and search by meaning
An internal tool that extracts structured profiles from CVs with OCR (text recognition) and an LLM, then finds matches by meaning with an explanation for each.
- Period
- 3 months
- Role
- Developer
- Context
- Internal tool, consulting firm
- Cloud
- GCP
[ Architecture ]
How it works
Run a scenario to follow it through the system, step by step. Select a component to read its role and see what it connects to.
a recruiter
A synthetic CV
A CV file added to the pool.
cv.pdf
- Press Add a CV to watch each step run through the system.
- 01RecruiterUploads a CV
- 02Search appFile accepted
- 03OCR & extractionText extracted · structured profile built
- 04Profile & vector storeProfile stored · vector added to the index
- ✓The profile is stored as structured data and can then be found by meaning.
- 01RecruiterTypes the query
- 02Search appQuery received
- 03Profile & vector storeQuery encoded · nearest profiles found
- 04Match explanationThe LLM re-reads each profile against the query
- 05Search appShortlist displayed with a reason for each match
- ✓The recruiter gets a shortlist ranked by meaning, with a short reason for each match.
Problem
Finding the right profile in a large pool of CVs is slow. CVs come in many layouts and keyword search misses related wording.
Data
CV files, extracted text, structured profiles and their embeddings. CVs are personal data, so demos use synthetic CVs only.
Approach
- OCR and LLM extraction. OCR reads the CV and an LLM turns the text into a structured profile.
- Semantic search. Profiles are embedded and indexed in a vector search engine, so a query matches on meaning.
- Explained matches. An LLM re-reads the nearest profiles against the query and says why each matches. Results appear in a simple Streamlit app.
Evaluation
The tool was judged by the time it takes to build a shortlist, compared with the manual process.
Result
About 5,000 profiles were indexed, and building a shortlist took about 40% less time.
My role
I built the extraction, the indexing, the search and the interface.