JobSearch Agent

Overview

JobSearch is an AI-powered CLI tool that automates the most time-consuming parts of job hunting: researching positions, filtering opportunities, and writing cover letters. It leverages Claude AI to find relevant jobs via web search, intelligently filter them based on your background, and generate tailored cover letters as professional PDFs.

The project was born out of personal necessity. After spending hours manually searching job boards, reading through irrelevant postings, and crafting individual cover letters, I realized most of this could be automated with modern AI capabilities. The result is a tool that can search, filter, and prepare applications in minutes rather than hours.

Key Features

AI-Powered Job Search

The tool generates optimized search queries combining your desired job titles, locations, and relevant keywords, then executes them via Claude's web search capabilities. Results are automatically deduplicated and enriched with full job descriptions scraped from the posting URLs.

Example search queries
"data scientist" remote Spain hiring 2025
"ML engineer" remote worldwide work from anywhere
"machine learning" "Python" Barcelona full-time
"senior data analyst" Europe remote-first

Intelligent Filtering

Not every job posting is a good fit. The tool uses Claude to analyze each job description against your professional background and automatically filters out unsuitable positions. This means you only spend time reviewing jobs where you're actually a competitive candidate.

Profile Building

The system builds a comprehensive professional profile by parsing multiple document formats (PDF, DOCX, LaTeX, even Excel) and fetching your online presence from LinkedIn, GitHub, and personal websites. This rich profile powers both the filtering and cover letter generation.

Supported document formats
# Document parsing via python-docx, pypdf, openpyxl
- PDF (resumes, certificates)
- Word documents (CV, cover letters)
- LaTeX files (academic CVs)
- Excel/CSV (project lists, skills matrices)
- HTML/JSON (portfolio exports)

Cover Letter Generation

This is where the tool really shines. Rather than using a generic template, it follows a multi-step process to create genuinely personalized cover letters:

  1. Analyze the job description to identify key topics and requirements
  2. Map your experience to those specific topics
  3. Select the 3-5 strongest matches where your background is most relevant
  4. Generate a tailored cover letter body (3-4 paragraphs)
  5. Compile to PDF using LaTeX for professional formatting

The system is specifically prompted to avoid common AI writing patterns, producing letters that read authentically rather than obviously machine-generated.

Architecture

The project is structured as a modular Python CLI application with clear separation of concerns:

Project structure
jobsearch/
├── main.py              # Entry point, CLI argument parsing
├── cli_menus.py         # Interactive menu system
├── search_jobs.py       # Job search orchestration
├── cover_letter_writer.py  # LaTeX PDF generation
├── online_presence.py   # LinkedIn/GitHub scraping
├── utils.py             # Claude API wrapper, document parsing
├── cli_utils.py         # Terminal formatting, colors
└── data_handlers/
    ├── user_data.py     # Profile management
    ├── jobs_data.py     # Job storage & tracking
    └── query_data.py    # Search query management

Data Storage

All user data is stored locally in ~/.JobSearch/<user_id>/, with JSON files for structured data and CSV for search query tracking:

User data directory
~/.JobSearch/joshua/
├── user_info.json           # Profile, preferences, AI-generated summaries
├── jobs.json                # Job postings with metadata and status
├── search_queries.csv       # Generated search queries
├── search_query_results.csv # Query execution history
└── cover_letters/           # Generated PDF cover letters

Multi-User Support

The tool supports multiple user profiles via the -u flag, making it useful for career coaches or households where multiple people are job hunting.

Workflow

The CLI follows a structured menu system that guides users through the job search process:

CLI navigation flow
START → New User? → SETUP (profile configuration)
                         ↓
                    MAIN MENU
                    ├─ User Info (edit profile, refresh documents)
                    ├─ Search for Jobs (execute queries, filter results)
                    ├─ View/Manage Jobs
                    │   └─ Job Detail
                    │       ├─ Mark as applied
                    │       ├─ Generate cover letter
                    │       └─ Export PDF
                    ├─ Settings
                    └─ Exit

Job Search Pipeline

When searching for jobs, the system executes a multi-phase pipeline:

  1. Query Execution: Run search queries via Claude web search
  2. Result Extraction: Parse job info (company, title, link, snippet)
  3. Description Scraping: Fetch full job descriptions from posting URLs
  4. Deduplication: Remove duplicate postings by URL
  5. AI Filtering: Assess fit based on candidate background
  6. Storage: Save results with metadata for tracking

Technology Stack

CategoryTechnologies
CLI InterfaceInquirerPy (interactive prompts)
Document Parsingpython-docx, pypdf, openpyxl
Web ScrapingBeautifulSoup4, lxml
PDF GenerationLaTeX (pdflatex)
AI BackendClaude CLI (with web search)

Usage

Getting started
# Install dependencies
pip install inquirerpy python-docx pypdf openpyxl beautifulsoup4 lxml

# Ensure Claude CLI is installed and authenticated
claude --version

# Run the tool
python -m jobsearch

# Or with a specific user profile
python -m jobsearch -u username

On first run, the setup wizard guides you through configuring your profile: personal information, professional credentials, online presence links, source documents, desired job titles, and preferred locations. The system then generates a comprehensive professional summary using AI.

Summary

  • AI-powered job search via Claude web search
  • Intelligent filtering based on candidate background
  • Multi-format document parsing (PDF, DOCX, LaTeX, Excel)
  • LinkedIn/GitHub profile integration
  • Personalized cover letter generation with LaTeX PDF output
  • Local data storage with multi-user support
  • Beautiful terminal UI with interactive menus