Alric le Conte

Projects / profile-search-rag

Profile extraction and search

An internal tool that extracts structured profiles from CVs with OCR 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 a request through the system. Select a component to read its role and its flows.

Run a scenario

userRecruiteradds CVs · searchesappSearch appStreamlitaiOCR & extractionOCR + GPT-4ostorageProfile & vector storeBigQuery · Sentence-BERTaiMatch explainerGPT-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 the request go 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 is searchable by meaning within moments.

Problem

Finding the right profile in a large pool of CVs is slow. CVs come in many layouts and keyword search misses related wording, so shortlists take a long time to build.

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