AI CV Processor project logo
Recruitment & HR
HR TechAI Document ProcessingRecruitment AutomationGoogle Gemini

They Asked Us To Build A CV Parser.
We Ended Up Automating Candidate Intake.

Upload a CV. Extract the information. Save it.

GeminiSupabasePDF.js

4

Core modules

3

Integrations

AI

Powered parsing

Recruiting Dashboard
Recruiting Dashboard
Candidate Database
Candidate Database
AI Search
AI Search
Company Database
Company Database
Profile Review
Profile Review
Platform Settings
Platform Settings

Project Snapshot

Industry
Recruitment & HR
Platform
AI-Powered CV Processing System
Focus
Candidate Intake & Recruitment Workflow Automation
Integrations
Google Gemini 2.0 Flash · Supabase Edge Functions · PDF.js
Core Modules
CV UploadAI ParserCandidate Profile BuilderSearchable Database

The brief

The original request sounded simple.

Upload a CV. Extract the information. Save it.

At first, it looked like another AI document parser.

But after understanding how recruiters actually work, we realized parsing wasn't the problem.

The real problem was turning hundreds of completely different CVs into structured candidate data that recruiters could actually search, compare, and use.

Recruiters Don't Read CVs. They Search For Candidates.

Every recruiter receives CVs in different formats.

Some are beautifully designed. Some are simple Word exports. Some are scanned PDFs.

Others have two-column layouts, icons, or inconsistent formatting.

Humans adapt instantly. Software usually doesn't.

What We Discovered

The client didn't need another OCR tool.

They needed a system that could understand candidates regardless of how their CV looked.

Instead of extracting text, the platform builds structured candidate profiles that become searchable across the business.

Engineering Note

Every uploaded CV is stored alongside both its original extracted text and its structured AI output, allowing recruiters to verify results without losing the original document.

Recruiting Dashboard
Recruiting Dashboard
Recruiting dashboard with candidate intake overview, activity tracking, and quick actions.

Parsing wasn't the problem. Turning unstructured CVs into searchable candidate data was.

Reading A PDF Was The Easy Part

AI Parsing Results
AI Parsing Results
Candidate database with AI-parsed profiles, skills tags, and structured contact information.

Extracting text from a PDF isn't particularly difficult. Understanding it is.

Experience sections appear in different places. Skills are written differently. Education follows no standard format.

Languages. Certifications. Projects. Every CV tells the same story differently.

So instead of relying on templates, we built an AI-powered parsing pipeline.

The system first extracts raw text from the PDF.

Then Gemini analyzes the content and converts it into structured candidate data.

Every CV follows the same output format, even if the input looks completely different.

Behind The Scenes

PDF.js handles text extraction while a dedicated Supabase Edge Function sends cleaned content to Google Gemini 2.0 Flash, returning structured JSON rather than plain text.

AI Needed Structure, Not Creativity

One thing became obvious during testing.

General-purpose AI responses aren't consistent enough for recruitment.

The same CV could produce slightly different outputs depending on wording.

That makes searching and reporting unreliable.

Instead of asking AI to summarize CVs, we constrained the output into one predictable schema.

Every parsed CV returns the same fields.

Personal information. Skills. Experience. Education. Languages. Certifications.

Recruiters always know where to find the information they need.

Engineering Note

As new prompt changes were introduced over time, older improvements such as chronological ordering, bullet formatting, and section consistency began to regress. We redesigned the parser around a dedicated Edge Function with tightly controlled prompts to keep results stable over time.

Structured Candidate Profile
Structured Candidate Profile
Recruiting Dashboard
Recruiting Dashboard

Structured candidate cards with skills, experience, contact details, and status badges.

Parsing Isn't Useful Until Someone Can Search It

Skills

Experience

Location

Languages

Education

Contact information

Many CV parsers stop after generating AI output. We wanted recruiters to actually use the information.

So every parsed CV becomes a searchable candidate record.

Instead of repeatedly opening PDFs, recruiters can search structured fields like:

The CV becomes data instead of just another file.

Engineering Note

Frequently searched fields such as name, email, phone, location, LinkedIn, and GitHub are denormalized into dedicated database columns while the complete AI output remains stored as JSON for future expansion.

Candidate Database
Candidate Database
Searchable candidate database with filters, AI search, and grid view of parsed profiles.

AI Still Needed Human Oversight

Recruitment decisions shouldn't happen inside a black box.

Instead of automatically saving AI results, we designed a review workflow.

Recruiters first see the parsed CV presented in a clean professional layout.

They can compare it with the original extracted text.

Only after reviewing it do they save the candidate to the database.

That keeps humans in control while AI removes the repetitive work.

Behind The Scenes

Every parsed CV includes both a professionally formatted preview and the original extracted text, making it easy to validate AI output before storing candidate records.

Parsed CV Preview
Parsed CV Preview
Account and profile settings with recruiter review controls before candidate records are saved.

Building A Parser Meant Planning For Thousands Of CVs

Parsing pipeline

Upload
Extract
AI Process
Review
Store
Processing Pipeline
Processing Pipeline
Activity Feed
Activity Feed

Dashboard activity feed and company database showing processing status across the recruitment pipeline.

Engineering Note

Every parsed CV stores processing status, timestamps, error messages, user ownership, and structured output separately, making the pipeline resilient enough to recover gracefully from failed AI or document-processing attempts.

One CV is easy. Thousands aren't.

The platform needed to handle processing status. Failed parses. User ownership. Large PDF uploads.

Future integrations with recruitment workflows.

So instead of treating parsing as a standalone feature, we designed it as a scalable pipeline.

Each upload moves through a clear lifecycle—from upload, to extraction, to AI processing, to review, to storage.

The foundation is ready for future candidate matching, job scoring, and recruitment automation.

  • Upload
  • Extract
  • AI Process
  • Review
  • Store

The Outcome

Outcome 1

Recruiters upload a CV.

Outcome 2

AI structures the information.

Outcome 3

Candidates become searchable.

Outcome 4

Original documents remain available.

Outcome 5

Recruiters review everything before saving.

What started as a simple CV parser became a candidate intake platform.

Instead of spending time reading hundreds of differently formatted CVs, the platform automates the repetitive work while keeping hiring decisions firmly in human hands.

Explore The Demo

Experience the platform from the recruiter's perspective and see how AI-powered parsing, structured candidate profiles, searchable records, and review workflows work together inside one connected recruitment platform.