Alric le Conte

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
5,000profiles indexed
~40%less time to build a shortlist

[ 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.

Run a scenario

userRecruiteradds CVs · searchesappSearch appStreamlitaiOCR & extractionOCR + GPT-4ostorageProfile & vector storeBigQuery · Sentence-BERTaiMatch explanationGPT-4o
file

a recruiter

A synthetic CV

A CV file added to the pool.

cv.pdf

ConsoleSimulated run · illustrative data
  1. Press Add a CV to watch each step run through the system.
  1. 01RecruiterUploads a CV
  2. 02Search appFile accepted
  3. 03OCR & extractionText extracted · structured profile built
  4. 04Profile & vector storeProfile stored · vector added to the index
  5. ✓The profile is stored as structured data and can then be found by meaning.

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.