# What Are the Dependencies for the ai-job-search Project?

> Explore the dependencies for the ai-job-search project. Discover Python package requirements like requests and pandas, and understand Node.js's zero runtime dependency approach.

- Repository: [Mads Lorentzen/ai-job-search](https://github.com/MadsLorentzen/ai-job-search)
- Tags: getting-started
- Published: 2026-09-02

---

**The ai-job-search project uses a hybrid architecture where the Python orchestration layer requires third-party packages like `requests`, `pandas`, and `PyPDF2`, while the Node.js portal CLIs maintain zero runtime dependencies and operate solely with built-in Node.js modules.**

The ai-job-search repository by MadsLorentzen combines a Python-based automation core with lightweight Node.js command-line tools for specific job portals. Understanding the dependencies for the ai-job-search project requires examining both the Python import statements found in utility scripts and the [`package.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/package.json) files distributed across the CLI directories. The project intentionally avoids shipping a centralized [`requirements.txt`](https://github.com/MadsLorentzen/ai-job-search/blob/main/requirements.txt), instead declaring Python dependencies through direct imports in specific tool files.

## Python Dependencies in the Orchestration Layer

The Python components handle HTTP requests, data parsing, PDF processing, and Gmail synchronization. You must install these packages manually based on which tools you intend to run.

### Web Scraping and HTML Parsing

Job scraping utilities rely on **requests** for HTTP calls to external APIs and job portals. **beautifulsoup4** parses HTML responses to extract structured data from web pages.

### Data Processing and Excel Handling

The file [`tools/convert_salary_excel.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/convert_salary_excel.py) imports **pandas** for data-frame operations and **openpyxl** for reading and writing Excel files. These libraries enable conversion between CSV and Excel formats for salary data analysis.

```python

# tools/convert_salary_excel.py

import pandas as pd
import openpyxl

```

### PDF Parsing and Progress Tracking

CV verification tools located in [`tools/verify_pdf.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/verify_pdf.py) use **PyPDF2** to extract text from PDF documents for validation. **tqdm** provides visual progress bars during long-running batch operations.

```python

# tools/verify_pdf.py

import PyPDF2
from tqdm import tqdm

```

### Configuration and CLI Framework

The project uses **python-dotenv** to load environment variables from `.env` files, **click** for building command-line interfaces, and **PyYAML** to parse skill specifications stored in `.claude/` directories.

### Gmail Integration

The Gmail sync functionality located in `.agents/skills/gmail-sync/cli` requires **google-api-python-client** and **google-auth-httplib2** for OAuth authentication and Gmail API access.

## Node.js Dependencies in Portal CLIs

The Node.js layer follows a strict zero-dependency policy for runtime operations, ensuring portable execution across environments without `npm install`.

### Zero Runtime Dependencies

Each [`package.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/package.json) located under `.agents/skills/*/cli/` (such as [`.agents/skills/linkedin-search/cli/package.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.agents/skills/linkedin-search/cli/package.json)) contains no `dependencies` field. These tools execute using only Node.js built-in modules like `fs`, `path`, and `child_process`.

### Development-Only Packages

The [`package.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/package.json) files list only **devDependencies** including **typescript**, **ts-node**, **jest**, **eslint**, and **@types/node**. These support type-checking, unit testing, and linting during development but are never required for end-user execution.

## Installing and Running the Project

Since the repository lacks a consolidated [`requirements.txt`](https://github.com/MadsLorentzen/ai-job-search/blob/main/requirements.txt), install Python packages individually based on the specific tools you need.

Install core Python dependencies:

```bash
pip install requests beautifulsoup4 pandas openpyxl PyPDF2 tqdm python-dotenv click PyYAML

```

Install Gmail synchronization support:

```bash
pip install google-api-python-client google-auth-httplib2

```

Execute Node.js CLIs directly without package installation:

```bash
node .agents/skills/linkedin-search/cli/index.js

```

## Summary

- The ai-job-search project employs a dual-layer dependency strategy: third-party Python libraries for heavy data processing and zero-dependency Node.js CLIs for portal automation.
- Python dependencies include `requests`, `beautifulsoup4`, `pandas`, `openpyxl`, `PyPDF2`, `tqdm`, `python-dotenv`, `click`, `PyYAML`, and Google API libraries for specific integrations.
- Node.js CLIs in `.agents/skills/*/cli/` maintain no runtime dependencies; their [`package.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/package.json) files contain only development tools like TypeScript and Jest.
- Key Python files declaring these dependencies are [`tools/verify_pdf.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/verify_pdf.py) (PyPDF2) and [`tools/convert_salary_excel.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/convert_salary_excel.py) (pandas/openpyxl).
- Users must manually install Python packages via `pip` as no centralized requirements file exists in the repository.

## Frequently Asked Questions

### Do the Node.js CLIs require npm install?

No. The Node.js command-line tools located in `.agents/skills/*/cli/` contain zero runtime dependencies. They execute using only Node.js built-in modules, eliminating the need for `npm install` during deployment or usage.

### Which Python file handles PDF parsing?

The file [`tools/verify_pdf.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/verify_pdf.py) uses the **PyPDF2** library to extract and verify text content from PDF documents, typically for CV validation and content verification tasks.

### Is there a requirements.txt file in the ai-job-search repository?

No. The project does not ship a single manifest file. Dependencies are declared through direct import statements in specific Python files and must be installed manually via `pip` based on which tools you plan to use.

### What is the purpose of python-dotenv in this project?

The **python-dotenv** package loads configuration variables from `.env` files into the environment, allowing tool scripts to access sensitive credentials like API keys and email passwords without hardcoding them into source files.