Skip to content

timliang4/application-automater

Repository files navigation

Application Automater

An automated tool for generating personalized cover letters and organizing job applications using AI. This script uses Anthropic's Claude API to intelligently select relevant experiences and craft tailored cover letters based on job descriptions.

Features

  • AI-Powered Cover Letter Generation: Uses Claude to select the most relevant experiences from your portfolio and generate personalized opening paragraphs
  • Automated Organization: Creates structured directories for each job application
  • Template-Based System: Uses LaTeX templates for professional formatting
  • Batch Processing: Process multiple job postings from a single input file

Prerequisites

  • Python 3.7+
  • An Anthropic API key
  • LaTeX distribution (for compiling cover letters)
  • Required Python packages (see Installation)

Installation

  1. Clone this repository:

    git clone <repository-url>
    cd application-automater
  2. Install required dependencies:

    pip install anthropic python-dotenv pyyaml pathvalidate
  3. Create a .env file in the project root with your Anthropic API key:

    ANTHROPIC_API_KEY=your_api_key_here
    
  4. Configure the paths in scriptConfig.yaml:

    • Update jobApplicationsPath to your desired output directory (default: ./job_applications)
    • Update jobPostingsPath to point to your job postings file (default: ./job_applications/postings.txt)
    • Update resumePath entries for each job type to point to your resume files
    • Update jobTypes names to match your job categories
  5. Customize coverLetterTemplate.tex:

    • Replace Your Name, Your Phone Number, and your.email@example.com with your actual contact information
  6. Customize coverLetterParagraphsRepo.yaml:

    • Replace the template paragraphs with your own experiences and skills
    • Fill in all [placeholder] brackets with your actual information
    • Each entry should have a summary (used for matching) and a paragraph (used in the cover letter)
    • The <company> placeholder in paragraphs will be automatically replaced with the target company name

Usage

Job Postings Format

Create a text file (e.g., postings.txt) with job postings separated by the delimiter specified in scriptConfig.yaml (default: $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$).

Each job posting should contain 6 fields in order:

  1. Title
  2. Description (full job description)
  3. Position
  4. Company
  5. Location
  6. Job Type (must match a name in jobTypes from scriptConfig.yaml)

Example:

Software Engineering Intern
We are looking for a software engineering intern...
Intern
Tech Company Inc.
San Francisco, CA
job_type_1
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Note: The job type (last field) must match one of the name values in jobTypes from scriptConfig.yaml.

Running the Script

Simply run:

python script.py

The script will:

  1. Parse all job postings from the configured file
  2. For each posting:
    • Create a directory structure: {jobApplicationsPath}/{company}/{title}__{location}/
    • Copy the appropriate resume based on job type
    • Copy and populate the cover letter template
    • Use AI to select the 2 most relevant experiences
    • Generate a personalized opening paragraph
    • Fill in all placeholders in the cover letter

Output Structure

After running, you'll have a directory structure like:

job_applications/
  └── Company Name/
      └── Job Title__Location/
          ├── Cover_Letter.tex
          └── Resume.tex

Configuration

scriptConfig.yaml

  • jobApplicationsPath: Base directory where application folders will be created
  • jobPostingsPath: Path to the file containing job postings
  • coverLetterTemplatePath: Path to the LaTeX cover letter template
  • jobTypes: List of job types, each with a name and corresponding resumePath
  • delimiter: String used to separate job postings in the input file
  • coverLetterOpeningParagraphPrompt: Prompt template for generating opening paragraphs
  • coverLetterChooseParagraphsPrompt: Prompt template for selecting relevant experiences

coverLetterParagraphsRepo.yaml

Contains your portfolio of experiences as templates. Each entry has:

  • summary: A brief description used by AI to match against job descriptions
  • paragraph: The full paragraph text that will appear in the cover letter

Important: The template paragraphs contain placeholders in brackets like [Company Name], [Your Role], etc. You must replace these with your actual information before using the tool. The <company> placeholder (with angle brackets) will be automatically replaced with the target company name during processing.

How It Works

  1. Job Parsing: The script reads job postings from a text file, splitting on the configured delimiter
  2. Directory Creation: Creates organized folders for each application
  3. Experience Selection: Uses Claude AI to analyze the job description and select the 2 most relevant experiences from your portfolio
  4. Opening Paragraph Generation: AI crafts a personalized opening paragraph incorporating the selected skills
  5. Template Population: Fills in all placeholders in the LaTeX template with job-specific information

Customization

Adding New Job Types

Add entries to the jobTypes list in scriptConfig.yaml:

jobTypes:
  - name: your_job_type
    resumePath: path/to/your/resume.tex

Modifying Prompts

Edit the prompt templates in scriptConfig.yaml to change how the AI generates content. The prompts use placeholders like {{JOB_DESCRIPTION}} and {{COMPANY_NAME}} that are automatically replaced.

Cover Letter Template

Modify coverLetterTemplate.tex to change the structure and formatting of your cover letters. Placeholders include:

  • <openingParagraph>: AI-generated opening
  • <firstParagraph>: First selected experience paragraph
  • <secondParagraph>: Second selected experience paragraph
  • <title>, <company>, <location>, <position>: Job details

Notes

  • The script uses cross-platform path handling and supports both Windows and Unix/Mac systems. Use forward slashes (/) in scriptConfig.yaml for Unix/Mac, or backslashes (\\) for Windows. Relative paths (starting with ./) work on all platforms.
  • Ensure your LaTeX distribution is properly installed to compile the generated .tex files
  • The AI uses temperature=1 for more creative outputs; adjust in script.py if you want more deterministic results
  • All template files contain placeholders that must be customized before use

About

Tool for generating personalized cover letters and organizing job applications

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors