Configurable candidate data transformation pipeline built for the Eightfold AI Assignment using Python.
The Candidate Data Transformer consolidates structured and unstructured candidate information into a unified canonical JSON profile.
Currently supported data sources:
- 📄 Resume PDF (Unstructured)
- 📊 Recruiter CSV (Structured)
The pipeline extracts candidate information, normalizes values, resolves conflicts, tracks provenance, assigns confidence scores, validates the output, and generates a configurable JSON profile.
- Resume PDF Parsing
- Recruiter CSV Parsing
- Email Normalization
- Phone Number Normalization
- Merge Engine
- Provenance Tracking
- Confidence Scoring
- Runtime Configurable Projection
- Output Validation
- Canonical JSON Output
Candidate-Data-Transformer/
│
├── config/
│ ├── default_config.json
│ └── custom_config.json
│
├── docs/
│ ├── Candidate_Data_Transformer_Technical_Design.pdf
│ └── pipeline.png
│
├── input/
│ ├── recruiter.csv
│ └── resume.pdf
│
├── output/
│ └── final_output.json
│
├── src/
│ ├── confidence/
│ ├── merger/
│ ├── normalizer/
│ ├── parser/
│ ├── projection/
│ ├── config_loader.py
│ ├── validator.py
│ └── main.py
│
├── requirements.txt
├── README.md
└── .gitignore
- Parse Recruiter CSV
- Parse Resume PDF
- Normalize extracted values
- Merge candidate information
- Track provenance
- Assign confidence scores
- Project configurable output
- Validate required fields
- Export final JSON profile
- Python 3.12
- Pandas
- pdfplumber
- phonenumbers
- dateparser
- Pydantic
Clone the repository
git clone https://github.com/AashishPoddar/Candidate-Data-Transformer.git
cd Candidate-Data-TransformerCreate a virtual environment (recommended)
python -m venv venv
# Windows
venv\Scripts\activateInstall dependencies
pip install -r requirements.txtpython src/main.pyRecruiter CSV
Fields
- Name
- Phone
- Current Company
- Title
Resume PDF
Extracted Fields
- Name
- Phone
{
"full_name": "AASHISH PODDAR",
"email": "ap.poddaraashish@gmail.com",
"phone": "+919798680838",
"current_company": "Google",
"title": "Software Engineer",
"provenance": {
"full_name": {
"source": "Resume PDF",
"method": "Regex"
}
},
"confidence": {
"full_name": 0.95
}
}The complete output is available in:
output/final_output.json
The project supports runtime configurable output using:
config/default_config.jsonconfig/custom_config.json
This allows users to choose which fields appear in the final JSON output without modifying the source code.
The final candidate profile is validated before export.
Validation includes:
- Required fields
- Email format
- Phone normalization
- Canonical JSON structure
- OCR Support for Scanned Resumes
- AI-based Skill Extraction
- Dynamic Confidence Scoring
- Duplicate Candidate Detection
- LinkedIn Profile Integration
- GitHub Profile Integration
Technical design document:
docs/Candidate_Data_Transformer_Technical_Design.pdf
Aashish Poddar
Developed as part of the Eightfold AI Candidate Data Transformer Assignment.
