Spaces:
Paused
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:
- Scraping job listings from platforms like LinkedIn
- Analyzing job descriptions to extract key requirements
- Automatically tailoring your CV to match job requirements
- 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
- Clone this repository:
git clone https://github.com/yourusername/Job-apply-AI-agent.git
cd Job-apply-AI-agent
- Run the installation script:
# On Unix-based systems (macOS, Linux)
./install.sh
# On Windows
install.bat
- Install frontend dependencies:
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.
# 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:
- Open
.envin the project root - Replace
your_groq_api_key_herewith your actual Groq API key - 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 injob_apply_ai/CV_TAILORING_MODE=api: uses the API subproject engine inAutomatic CV and Cover Letter with API/
When using API mode, set one provider:
# 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:
$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:
$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
- Install Frontend Dependencies (from project root):
cd frontend
npm install
- Start Backend (in one terminal):
# 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
- Start Frontend (in another terminal):
cd frontend
npm run dev
- 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
- Upload CV - Upload your base CV template (.docx)
- Search Jobs - Find opportunities by keyword and location
- Review & Select - Browse matched jobs with extracted skills
- Generate CVs - Create tailored CVs with one click
- Download - Get all generated CVs as a ZIP file
Building for Production
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.
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:
# 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 modulesjob_apply_ai/cv_modifier/: CV customization functionalityjob_apply_ai/utils/: Utility functions and helpersjob_apply_ai/ui/: User interface componentsjob_apply_ai/outputs/: Output directories for jobs and CVsjob_apply_ai/outputs/jobs/: Contains Excel files with job listingsjob_apply_ai/outputs/cvs/: Contains generated CV files
Testing
For detailed testing instructions, see 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