An intelligent automation system that scrapes job listings and automatically applies to positions on your behalf using tailored resumes and cover letters.
- 🤖 Automated Job Applications: Scrapes job boards and applies to matching positions automatically
- 📄 Resume Tailoring: Uses GPT to customize resumes and cover letters for each application
- 🔐 Secure Authentication: JWT-based authentication with AWS Cognito integration
- 💾 MongoDB Integration: Persistent storage for job data, applications, and user preferences
- ⏰ Scheduled Scraping: Background job scheduler for continuous job monitoring
- 📊 Dashboard: Track application history and job statistics
- 🔧 Preference Management: Configure job preferences, location, salary, and skills
- 📤 Resume Upload: Upload and manage resume PDFs
- FastAPI - Modern Python web framework
- MongoDB - NoSQL database
- AWS Cognito - Authentication and authorization
- APScheduler - Background job scheduling
- OpenAI API - GPT integration for resume tailoring
- Next.js - React framework
- TypeScript - Type-safe development
- Tailwind CSS - Styling
- AWS Cognito - Client-side auth integration
Job_Apply_Agent/
├── backend/
│ ├── app/
│ │ ├── auth/ # Authentication & Cognito
│ │ ├── jobs/ # Job scraping & auto-apply logic
│ │ ├── resume/ # Resume management & tailoring
│ │ ├── user/ # User preferences & dashboard
│ │ ├── storage/ # File upload handling
│ │ ├── db/ # Database configuration
│ │ ├── main.py # FastAPI app initialization
│ │ └── config.py # Configuration management
│ ├── requirements.txt # Python dependencies
│ └── ...
├── frontend/
│ ├── app/
│ │ ├── login/ # Authentication pages
│ │ ├── dashboard/ # Main dashboard
│ │ ├── apply/ # Job application UI
│ │ ├── upload/ # Resume upload
│ │ ├── preferences/ # User preferences
│ │ └── ...
│ ├── components/ # Reusable React components
│ ├── lib/ # Utilities and API client
│ ├── package.json # Node dependencies
│ └── ...
- Python 3.9+
- Node.js 18+
- MongoDB instance (local or Atlas)
- AWS Cognito user pool configured
- OpenAI API key
-
Clone and navigate to backend
cd backend python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt
-
Configure environment variables
cp .env.example .env
Update
.envwith your credentials:MONGODB_URIAWS_COGNITO_USER_POOL_IDAWS_COGNITO_CLIENT_IDOPENAI_API_KEY
-
Run the server
uvicorn app.main:app --reload
Backend runs on
http://localhost:8000API docs available athttp://localhost:8000/docs
-
Navigate to frontend
cd frontend npm install -
Configure environment variables
cp .env.example .env.local
Update with your Cognito configuration and backend URL.
-
Run development server
npm run dev
Frontend runs on
http://localhost:3000
POST /auth/login- User loginPOST /auth/signup- User registrationPOST /auth/refresh- Refresh JWT token
GET /jobs/scrape- Scrape jobs from configured platformsPOST /jobs/apply-now- Apply to specific jobGET /jobs/applications- Get application historyPOST /jobs/preferences- Update job preferences
POST /resume/upload- Upload resume PDFGET /resume/text- Get extracted resume textPOST /resume/tailor- Generate tailored version for job
GET /user/dashboard- Get dashboard dataGET /user/suggestions- Get personalized job suggestionsPOST /user/preferences- Set user preferences
Currently integrated:
- Seek (Australian jobs)
Planned:
- Workday
- Lever boards
- Indeed
Sensitive credentials are encrypted and stored in MongoDB. Configure storage in app/services/credentials.py.
The system uses APScheduler to run automated tasks:
- Periodic job scraping
- Automatic applications based on preferences
- Resume updates
Configure scheduler intervals in app/jobs/auto_apply_scheduler.py.
- Frontend dashboard with job tracking
- JWT validation in all endpoints
- PDF resume upload with text extraction
- Continuous background scraping daemon
- Multi-platform job board support
- End-to-end test endpoint
- Email notifications for successful applications
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see LICENSE file for details.
For issues, questions, or suggestions, please open an issue on GitHub.
This tool is for personal use. Users are responsible for ensuring compliance with job board terms of service when using automated application features.