A FastAPI-based application designed to reduce hiring bias by parsing, anonymizing, and semantically matching resumes and job descriptions.
- Resume Parsing: Extract structured data from PDF resumes using
pdfplumber. - Anonymization: Remove personally identifiable information (PII) to ensure unbiased screening using
spacyNER. - Semantic Matching: Match candidates to jobs based on skills and context using
sentence-transformers. - REST API: Built with
FastAPIfor high performance and easy integration. - React Frontend: Modern UI built with React and Vite.
- Python 3.9+ (Python 3.14 is currently unsupported by some dependencies)
- Node.js 18+ (for frontend)
-
Clone the repository
git clone <repository_url> cd hackthebiasproject
-
Create a Virtual Environment
python3.11 -m venv venv
-
Activate the Virtual Environment
- macOS/Linux:
source venv/bin/activate - Windows:
.\venv\Scripts\activate
- macOS/Linux:
-
Install Dependencies
pip install -r requirements.txt
-
Download spaCy Model
python -m spacy download en_core_web_sm
-
Run the Backend Server
uvicorn main:app --reload
- API:
http://127.0.0.1:8000 - Docs:
http://127.0.0.1:8000/docs
- API:
-
Navigate to frontend folder
cd frontend -
Install dependencies
npm install
-
Run the development server
npm run dev
- Frontend:
http://localhost:3000
- Frontend:
hackthebiasproject/
├── app/
│ ├── routes/ # API endpoints
│ └── services/ # Business logic
├── core/
│ └── database.py # SQLite database with SQLModel
├── models/ # Pydantic models
├── utils/
│ ├── anonymizer.py # PII removal
│ ├── parser.py # PDF extraction
│ └── semantics.py # NLP matching
├── frontend/ # React + Vite frontend
├── main.py # FastAPI entry point
└── requirements.txt # Python dependencies
| Endpoint | Method | Description |
|---|---|---|
/jobs/ |
GET | List all jobs |
/jobs/ |
POST | Create a job |
/users/upload-resume |
POST | Upload resume & create/update user |
/applications/ |
POST | Create application |