--- title: SkillSync emoji: 💼 colorFrom: green colorTo: green sdk: docker app_file: app_new.py pinned: false --- # Job Application AI Agent An intelligent AI-powered tool that automates the job application process by: 1. Scraping job listings from platforms like LinkedIn 2. Analyzing job descriptions to extract key requirements 3. Automatically tailoring your CV to match job requirements 4. Generating customized cover letters ## Features - **Job Scraping**: Automatically search and collect job listings from LinkedIn - **Intelligent Analysis**: Extract key skills and requirements from job descriptions - **CV Customization**: Tailor your CV to highlight relevant skills for each job - **Batch Processing**: Generate multiple tailored CVs for different jobs at once - **User-Friendly Interface**: Simple web interface to control the entire process ## Setup ### Prerequisites - Python 3.8+ - Node.js 18+ and npm (for the React frontend) - Chrome browser (for web scraping) ### Installation 1. Clone this repository: ```bash git clone https://github.com/yourusername/Job-apply-AI-agent.git cd Job-apply-AI-agent ``` 2. Run the installation script: ```bash # On Unix-based systems (macOS, Linux) ./install.sh # On Windows install.bat ``` 3. Install frontend dependencies: ```bash cd frontend npm install cd .. ``` ### Windows: Keep Everything Inside This Project Folder If your C drive is full, run installation and app commands with local state folders inside this project. ```powershell # Run from project root $env:JOB_APPLY_AI_DATA_DIR = "$PWD\\.runtime" $env:TMP = "$PWD\\.local_state\\temp" $env:TEMP = "$PWD\\.local_state\\temp" $env:PIP_CACHE_DIR = "$PWD\\.local_state\\pip-cache" $env:PYTHONPYCACHEPREFIX = "$PWD\\.local_state\\pycache" # First-time setup ./install.bat # If your Chrome major version is different from auto-detected chromedriver # (example shown for Chrome 146) $env:UC_CHROME_VERSION_MAIN = "146" ``` The project is now configured to keep generated files under local folders such as `.runtime` and `.local_state`. ## Environment Configuration ### Using .env File (Recommended) A `.env` file is included with all configuration options. To use Grok API: 1. Open `.env` in the project root 2. Replace `your_groq_api_key_here` with your actual Groq API key 3. Save the file The app will automatically load these settings when you run it. ### Use API Tailoring in the Main UI (Optional) The web UI can run in two modes: - `CV_TAILORING_MODE=local` (default): uses local rule/NLP tailoring in `job_apply_ai/` - `CV_TAILORING_MODE=api`: uses the API subproject engine in `Automatic CV and Cover Letter with API/` When using API mode, set one provider: ```powershell # Choose one: ollama | groq | openai $env:LLM_PROVIDER = "groq" $env:GROQ_API_KEY = "your_groq_key_here" $env:GROQ_MODEL = "llama-3.3-70b-versatile" # Enable API engine from the same web UI $env:CV_TAILORING_MODE = "api" ``` Optional cover letter template path for API mode: ```powershell $env:API_COVER_LETTER_TEMPLATE_PATH = "D:\projects\job_search_agent\Job-apply-AI-agent-main\Automatic CV and Cover Letter with API\data\Cover Letter_Imon .docx" ``` ### Manual Environment Variables Or set them in PowerShell before running commands: ```powershell $env:LLM_PROVIDER = "grok" $env:GROK_API_KEY = "your_actual_key_here" $env:UC_CHROME_VERSION_MAIN = "146" ``` This will: - Create a virtual environment - Install all dependencies - Download the required spaCy language model - Install the package in development mode - Keep temporary and cache files in this project folder (Windows install script) ## API Cost Notes - The main app under `job_apply_ai/` does not require a paid LLM API to run. - The optional subproject under `Automatic CV and Cover Letter with API/` can run with: - Free local Ollama (default, slowest) - Groq API (fast and cost-effective) - Grok API (fast, affordable, free account available) - OpenAI API (premium quality, paid) ## Usage ### Web Interface (React Frontend - SaaS Edition) The application now includes a modern React frontend with professional SaaS design, Framer Motion animations, and advanced state management. #### Quick Start 1. **Install Frontend Dependencies** (from project root): ```bash cd frontend npm install ``` 2. **Start Backend** (in one terminal): ```bash # Activate the virtual environment first source venv/bin/activate # On Unix-based systems venv\Scripts\activate.bat # On Windows # Start the Flask backend python -m job_apply_ai.ui.app_new # Or use the installed command: job-apply-ai web ``` 3. **Start Frontend** (in another terminal): ```bash cd frontend npm run dev ``` 4. **Open your browser**: http://localhost:3000 #### Features - 🎨 **Modern SaaS Design** - Black & emerald green professional theme - ✨ **Smooth Animations** - Powered by Framer Motion - 📊 **Smart State Management** - Zustand for reactive updates - 📱 **Fully Responsive** - Works on all devices - 🔄 **Real-time Progress** - Batch CV generation tracking - 🎯 **Workflow Steps** - Guided experience from CV upload to generation #### Workflow 1. **Upload CV** - Upload your base CV template (.docx) 2. **Search Jobs** - Find opportunities by keyword and location 3. **Review & Select** - Browse matched jobs with extracted skills 4. **Generate CVs** - Create tailored CVs with one click 5. **Download** - Get all generated CVs as a ZIP file #### Building for Production ```bash cd frontend npm run build ``` This creates an optimized build that the Flask backend will serve. ### Legacy Web Interface (HTML/Bootstrap) The original HTML-based interface is still available. To use it, edit `job_apply_ai/ui/app.py` and ensure it's the active server file. ```bash python -m flask --app job_apply_ai.ui.app run ``` Then visit: http://localhost:5000 ### Command Line The application also provides a command-line interface: ```bash # Scrape job listings job-apply-ai scrape --keyword "Software Engineer" --location "Berlin" --max-jobs 5 # Generate tailored CVs for all jobs in an Excel file job-apply-ai batch --cv path/to/cv_template.docx --jobs-file path/to/jobs.xlsx # Generate a tailored CV for a single job description job-apply-ai tailor --cv path/to/cv_template.docx --job path/to/job_description.txt ``` ## Project Structure - `job_apply_ai/scraper/`: Job listing scraping modules - `job_apply_ai/cv_modifier/`: CV customization functionality - `job_apply_ai/utils/`: Utility functions and helpers - `job_apply_ai/ui/`: User interface components - `job_apply_ai/outputs/`: Output directories for jobs and CVs - `job_apply_ai/outputs/jobs/`: Contains Excel files with job listings - `job_apply_ai/outputs/cvs/`: Contains generated CV files ## Testing For detailed testing instructions, see [TESTING_GUIDE.md](TESTING_GUIDE.md). ## License MIT ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. .\.venv\Scripts\job-apply-ai.exe web Set-Location "D:\projects\job_search_agent\Job-apply-AI-agent-main" $env:PATH = "D:\projects\veloce\.tools\node\node-v24.14.1-win-x64;$env:PATH" $env:NPM_CONFIG_CACHE = "$PWD\.npm-cache" $env:NPM_CONFIG_PREFIX = "$PWD\.npm-prefix" Set-Location ".\frontend" npm.cmd run dev Set-Location "D:\projects\job_search_agent\Job-apply-AI-agent-main" $env:JOB_APPLY_AI_DATA_DIR = "$PWD\.runtime" $env:TMP = "$PWD\.local_state\temp" $env:TEMP = "$PWD\.local_state\temp" $env:PIP_CACHE_DIR = "$PWD\.local_state\pip-cache" $env:PYTHONPYCACHEPREFIX = "$PWD\.local_state\pycache" .\.venv\Scripts\python.exe -m job_apply_ai.ui.app_new