AI-powered CV screening CLI — ranks candidates against a Job Description using Google Gemini and pushes results to Notion
Project description
AI Recruitment Scanning Agent
A CLI tool that screens CVs against a Job Description using Google Gemini 1.5 Flash and pushes ranked candidate profiles into a Notion database — one command, zero manual effort.
PyPI: https://pypi.org/project/ai-recruitment-agent/
Install
pip install ai-recruitment-agent
Configure
Copy .env.example to .env and fill in your credentials:
GOOGLE_GEMINI_API_KEY=your_gemini_api_key
NOTION_API_KEY=your_notion_integration_secret
DEFAULT_NOTION_DB_ID=your_notion_database_id
Where to get these:
| Key | Source |
|---|---|
GOOGLE_GEMINI_API_KEY |
https://aistudio.google.com/app/apikey |
NOTION_API_KEY |
https://www.notion.so/my-integrations → New integration → copy secret |
DEFAULT_NOTION_DB_ID |
Your Notion database URL: notion.so/yourname/THIS-PART?v=... |
Setup Notion Database
Run once to add all required properties to your Notion database automatically:
ai-recruit setup-notion
# or with an explicit database ID:
ai-recruit setup-notion --notion-db-id xxxx-xxxx-xxxx-xxxx
Prerequisite: Share your Notion database with the integration first — open the database →
•••menu → Connections → add your integration.
The command adds 13 properties (Email, Skills, Match Score, Ranking Category, etc.), renames the title column to Candidate Name, and skips anything already present.
Run
ai-recruit process <CV_FOLDER> <JD_PDF> [--notion-db-id <DB_ID>]
# Basic — reads DB ID from .env
ai-recruit process ./cvs/ ./jd.pdf
# Override Notion database
ai-recruit process ./cvs/ ./jd.pdf --notion-db-id xxxx-xxxx-xxxx-xxxx
# Other commands
ai-recruit setup-notion --help
ai-recruit --version
ai-recruit --help
ai-recruit process --help
What it does
- Validates API keys and Notion database access on startup.
- Reads the JD PDF — extracts position title and job ID via Gemini.
- Iterates all
.pdfand.docxfiles in the CV folder with a live progress bar. - For each CV: extracts text → sends to Gemini → receives a score (0–100), ranking (
High Fit/Medium Fit/Low Fit), and structured candidate data. - Checks Notion for duplicates by email + job ID before inserting.
- Pushes a new page to your Notion database for each unique candidate.
- Prints a summary table of processed / skipped / failed counts.
Troubleshooting
| Error | Fix |
|---|---|
GOOGLE_GEMINI_API_KEY not found |
Check .env exists in your working directory and the key is valid |
NOTION_API_KEY not found |
Verify the integration secret in .env |
Notion initialization failed |
Confirm the database is shared with your integration |
Could not extract text from JD PDF |
PDF may be scanned, image-based, or password-protected |
| Duplicate entries appearing | Ensure Email and Job ID (JD) properties exist with exact names |
| Gemini API error | Check your quota at aistudio.google.com |
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ai_recruitment_agent-0.3.2.tar.gz.
File metadata
- Download URL: ai_recruitment_agent-0.3.2.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
275d13c9ab783d974304ae483a7de6074d1f2316f3c5122885a42c462d50cfe6
|
|
| MD5 |
3ff8aa924a2259b7d015384ada313725
|
|
| BLAKE2b-256 |
3449b16d817430622ea5e862110cd14de21404820969f8633fa3a9b5c64f260e
|
File details
Details for the file ai_recruitment_agent-0.3.2-py3-none-any.whl.
File metadata
- Download URL: ai_recruitment_agent-0.3.2-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e349f9a435492a87e531520646731ff53980806e359084f300f2a2d6820e1e8b
|
|
| MD5 |
a47d29a2988f60a34b14f9a4d1d04664
|
|
| BLAKE2b-256 |
f331db3c6f7e75ffb93d1953a13558f1f93c30e0a1bc92663d6be3fa78362787
|