A full-stack Chrome extension and web service for instant AI-powered resume generation optimized for Applicant Tracking Systems (ATS).
- AI-Powered Resume Generation: Uses OpenAI GPT-4 to tailor resumes to specific job descriptions
- Chrome Extension: One-click resume generation from LinkedIn, Indeed, and other job sites
- ATS Optimization: Ensures resumes pass ATS scanners with proper formatting and keywords
- Real-time Progress: Server-sent events (SSE) for live generation progress
- PDF Export: Professional LaTeX-based PDF generation
- Multi-site Support: Works on LinkedIn, Indeed, Glassdoor, Monster, ZipRecruiter
RESUME_GENERATOR/
βββ extension/ # Chrome extension source
βββ server/ # Node.js backend server
βββ dist/ # Built extension files
βββ .env.example # Environment configuration template
βββ start-local.sh # Local development launcher
- Node.js 18+ and npm
- Chrome/Chromium browser
- OpenAI API key
- PostgreSQL database (for production)
git clone <repository>
cd RESUME_GENERATOR
npm install
cd server && npm install && cd ..cp .env.example .env.local
# Edit .env.local with your configuration:
# - Add your OpenAI API key
# - Set JWT secret (generate with: openssl rand -hex 64)
# - Configure database URL (for production)./start-local.sh
# Server runs on http://localhost:3001- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select the
dist/extension/folder - The extension icon will appear in your toolbar
# Run all tests
cd server && npm test
# Run specific test suites
npm run test:unit # Unit tests
npm run test:integration # Integration tests
npm run test:e2e # End-to-end tests
npm run test:coverage # Coverage report./build-extension.sh
# Creates dist/extension.zip for upload- Push to GitHub repository
- Connect Railway to your repo
- Set environment variables in Railway dashboard
- Deploy automatically on push
cd server
docker build -t resume-generator .
docker run -p 3000:3000 --env-file .env resume-generatorcd server
NODE_ENV=production npm start- JWT authentication with secure httpOnly cookies
- Rate limiting (100 requests per minute by default)
- CORS protection with configurable origins
- Input validation and sanitization
- SQL injection protection via Prisma ORM
- XSS prevention in generated content
| Endpoint | Method | Description |
|---|---|---|
/health |
GET | Health check and status |
/auth/login |
POST | User authentication |
/profile/:email |
GET | Retrieve user profile |
/profile/:email |
PUT | Update user profile |
/generate |
POST | Generate resume |
/generate/job/:id |
GET | SSE job progress stream |
/pdfs/:filename |
GET | Download generated PDF |
- Navigate to a job posting on LinkedIn, Indeed, etc.
- Click the "Generate Resume" floating button
- Review extracted job details
- Click "Generate" to create tailored resume
- Download PDF when ready
- Click the extension icon
- Enter job details manually
- Generate and download resume
| Variable | Description | Default |
|---|---|---|
PORT |
Server port | 3000 |
NODE_ENV |
Environment mode | development |
JWT_SECRET |
JWT signing secret | (required) |
OPENAI_API_KEY |
OpenAI API key | (required) |
DATABASE_URL |
PostgreSQL connection | (required for production) |
ALLOWED_ORIGINS |
CORS allowed origins | http://localhost:* |
RATE_LIMIT_REQUESTS |
Max requests per window | 100 |
RATE_LIMIT_WINDOW_MS |
Rate limit window (ms) | 60000 |
The server includes built-in health checks and monitoring:
curl http://localhost:3001/healthReturns:
- Server status and uptime
- Database connectivity
- Memory usage
- Active job count
- Feature flags
- Fork the repository
- Create a feature branch
- Make changes and add tests
- Ensure all tests pass
- Submit a pull request
MIT License - see LICENSE file for details
- Refresh the job page after installing/updating extension
- Ensure tectonic is installed:
npm install -g tectonic - Check server logs for LaTeX compilation errors
- Add your domain to
ALLOWED_ORIGINSin .env - Ensure chrome-extension:// is allowed for extension
- Adjust
RATE_LIMIT_REQUESTSfor development - Implement user-based limits for production
For issues and questions:
- GitHub Issues: Create an issue
- Documentation: See
/docsfolder - Email: support@example.com
Built with β€οΈ for job seekers everywhere