AutoResuAgent is an intelligent resume tailoring system that uses advanced NLP and LLMs to automatically customize resumes for specific job postings. It analyzes job descriptions, extracts relevant experiences from your resume, and generates tailored bullets and cover letters optimized for ATS systems.
Watch AutoResuAgent in action: Click here to watch
- Smart Parsing: Paste raw job postings and resumes - AI automatically structures the data
- Semantic Matching: Uses Sentence-BERT + FAISS for intelligent experience retrieval
- LLM Generation: GPT-4o-mini generates tailored bullets and cover letters
- LaTeX Output: Professional LaTeX source code for resume and cover letter
- Change Summary: Detailed explanation of how your resume was tailored
- Modern UI: Clean, professional interface with real-time status updates
- Docker (recommended): Docker Desktop for Windows/Mac
- OR Manual Setup:
- Python 3.10 or higher
- Node.js 18 or higher
- OpenAI API Key
This is the easiest way to run AutoResuAgent on Windows and Mac (including M-series).
git clone https://github.com/yourusername/autoresuagent.git
cd autoresuagentCRITICAL: The application requires an OpenAI API key to function.
-
Copy the example environment file:
cp .env.example .env
-
Edit
.envand add your OpenAI API key:# Windows (Notepad) notepad .env # Mac/Linux nano .env
-
Replace
sk-your-openai-api-key-herewith your actual API key:OPENAI_API_KEY=sk-proj-YOUR_ACTUAL_KEY_HEREGet an API key: https://platform.openai.com/api-keys
docker-compose up --buildWhat happens:
- Backend starts on
http://localhost:8000 - Frontend starts on
http://localhost:3000 - Both services are automatically connected via Docker network
Open your browser and navigate to:
http://localhost:3000
Press Ctrl+C in the terminal, then:
docker-compose downIf you prefer to run the application without Docker:
-
Install Python Dependencies
# Create virtual environment (recommended) python -m venv venv # Activate virtual environment # Windows: venv\Scripts\activate # Mac/Linux: source venv/bin/activate # Install dependencies pip install -r requirements.txt pip install -r requirements-web.txt
-
Set Environment Variable
# Windows (PowerShell) $env:OPENAI_API_KEY="sk-your-key-here" # Windows (CMD) set OPENAI_API_KEY=sk-your-key-here # Mac/Linux export OPENAI_API_KEY=sk-your-key-here
-
Start Backend Server
python server.py
Backend will run at
http://localhost:8000
-
Install Node Dependencies
cd frontend npm install -
Start Development Server
npm run dev
Frontend will run at
http://localhost:3000
Open your browser: http://localhost:3000
- Job Posting: Copy the full text from LinkedIn, Indeed, or company website
- Resume: Copy from LinkedIn profile, PDF export, or text document
- Paste the raw job posting text in the left panel
- Click "Auto-Parse" to convert to structured YAML
- Wait for the "Ready" badge
- Paste your resume text in the right panel
- Click "Auto-Parse" to convert to structured JSON
- Wait for the "Ready" badge
- Click "Generate Tailored Resume" (center button)
- Wait 30-60 seconds for AI processing
- View results in the success card
The generated output includes:
- Change Summary: What was improved and why
- Cover Letter: Tailored plain text cover letter
- Resume Bullets: Optimized bullet points (3 tabs):
- Resume Bullets (ready to use)
- Resume LaTeX (copy and compile)
- Cover Letter LaTeX (copy and compile)
- Click the "Resume LaTeX" or "Cover Letter LaTeX" tab
- Click "Copy" button
- Paste into:
- Local LaTeX editor (compile with
pdflatex) - Overleaf (online LaTeX editor)
- Local LaTeX editor (compile with
- Compile to get professional PDF
Problem: Error: Port 8000 (or 3000) is already in use
Solution:
# Find and kill the process using the port
# Windows:
netstat -ano | findstr :8000
taskkill /PID <PID> /F
# Mac/Linux:
lsof -ti:8000 | xargs kill -9Or change the port in docker-compose.yml:
ports:
- "8001:8000" # Change 8000 to 8001Problem: Error: failed to solve with frontend dockerfile.v0
Solutions:
- Ensure Docker Desktop is running
- Clear Docker cache:
docker system prune -a docker-compose build --no-cache
Problem: Error: OPENAI_API_KEY environment variable not set
Solutions:
- Check
.envfile exists and has the correct key - Restart Docker containers:
docker-compose down docker-compose up
- Verify API key at: https://platform.openai.com/api-keys
Problem: Failed to parse job posting: NetworkError
Solutions:
- Ensure backend is running (
docker-compose psshows both services) - Check backend health:
http://localhost:8000/(should show{"status": "healthy"}) - CORS is configured in
server.py- check logs for errors
Problem: Request hangs or times out
Solutions:
- Check backend logs:
docker-compose logs backend - Verify OpenAI API credits: https://platform.openai.com/usage
- The process typically takes 30-60 seconds - be patient
Problem: Docker build fails on Apple Silicon
Solution: Docker images are multi-platform compatible, but ensure:
docker-compose build --platform linux/amd64Backend:
- FastAPI (Python 3.11)
- OpenAI GPT-4o-mini (LLM)
- Sentence-BERT (embeddings)
- FAISS (vector search)
- Pydantic (validation)
Frontend:
- React 18
- Vite 5
- Tailwind CSS 3
- Modern Slate & Teal theme
Infrastructure:
- Docker & Docker Compose
- Nginx (frontend proxy)
- Uvicorn (ASGI server)
autoresuagent/
├── src/ # Backend source code
│ ├── agent/ # Agent executor & pipeline
│ ├── embeddings/ # Sentence-BERT encoder
│ ├── generators/ # Bullet & cover letter generators
│ ├── llm/ # OpenAI client
│ ├── models/ # Pydantic schemas
│ └── parsers.py # Raw text parsers
├── frontend/ # React frontend
│ ├── src/
│ │ ├── App.jsx # Main component
│ │ └── index.css # Tailwind styles
│ ├── Dockerfile # Frontend container
│ └── nginx.conf # Nginx config
├── data/ # Job & resume data
│ ├── jobs/ # YAML job descriptions
│ ├── resumes/ # JSON candidate profiles
│ └── temp/ # Temporary files
├── server.py # FastAPI server
├── Dockerfile # Backend container
├── docker-compose.yml # Multi-container orchestration
└── .env.example # Environment template
Once the backend is running, visit:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
POST /parse/job- Parse raw job text to YAMLPOST /parse/resume- Parse raw resume text to JSONPOST /generate- Generate tailored resume
# Backend tests
python -m pytest tests/
# Check code quality
python -m pylint src/
python -m mypy src/- Backend: Auto-reloads on code changes (Uvicorn
--reload) - Frontend: Hot Module Replacement (Vite HMR)
# All services
docker-compose logs -f
# Specific service
docker-compose logs -f backend
docker-compose logs -f frontend- Never commit
.envfile - It contains your API key .envis in.gitignoreby default- Use
.env.exampleas a template for others - Rotate API keys regularly
- In production, use secrets management (AWS Secrets Manager, etc.)
- Generation Time: 30-60 seconds (depends on OpenAI API latency)
- Concurrent Requests: Backend handles multiple requests via async
- Caching: Frontend static assets cached for 1 year
- Optimization: Multi-stage Docker builds minimize image size
- Author: Tarun Bommawar
- Course: CS 675 - Introduction to AI (Fall 2024)
- Instructor: Dr. Ziyu Yao
- Institution: George Mason University
Technologies:
- OpenAI GPT-4o-mini
- Sentence-BERT (all-MiniLM-L6-v2)
- FAISS (Facebook AI Similarity Search)
- FastAPI, React, Docker
MIT License - See LICENSE file for details
For issues, questions, or feedback:
- Check the Troubleshooting section above
- Review backend logs:
docker-compose logs backend - Open an issue on GitHub (if applicable)
For TAs/Graders:
- Clone repository
- Create
.envfile with OpenAI API key - Run
docker-compose up --build - Access
http://localhost:3000 - Paste sample job posting and resume
- Click "Auto-Parse" on both panels
- Click "Generate Tailored Resume"
- Wait ~45 seconds
- Review generated output (bullets, LaTeX, change summary)
- Click "Copy" on LaTeX tabs to get source code
Expected Result: Full tailored resume with cover letter in ~45 seconds
Thank you for using AutoResuAgent!