AI-Powered Intelligent Job Search & Application Management Platform
An advanced job tracking and career development tool that leverages IBM Watson AI to provide intelligent job recommendations, resume optimization, interview preparation, and automated email templates. Built with modern web technologies and deployed with containerization for seamless scalability.
Application is now live on IBM Cloud Code Engine!
| Service | URL | Status |
|---|---|---|
| 🎨 Frontend | https://job-tracker-frontend.25rpaifsnzhb.jp-osa.codeengine.appdomain.cloud | ✅ Active |
| 🔧 Backend API | https://job-tracker-backend.25rpaifsnzhb.jp-osa.codeengine.appdomain.cloud | ✅ Active |
| 📚 API Docs | https://job-tracker-backend.25rpaifsnzhb.jp-osa.codeengine.appdomain.cloud/api/docs | ✅ Active |
Region: Japan (Osaka) | Platform: IBM Cloud Code Engine | Database: MongoDB Atlas
-
Watson AI Integration Fix ✅
- Resolved Python 3.14 incompatibility by migrating from
ibm-watsonx-aiSDK to HTTP-based REST API - Implemented
_get_iam_token()for IBM Cloud IAM authentication - Created
_call_watsonx_api()wrapper for Watson ML endpoint calls - All 7 AI functions now return real Watson AI responses instead of hardcoded fallbacks
- Model Updated: granite-3-8b-instruct (improved performance & availability)
- Resolved Python 3.14 incompatibility by migrating from
-
Backend Deployment ✅
- Fixed module import error: Changed Dockerfile CMD from
uvicorn backend.api.main:apptopython -m uvicorn api.main:app - Fixed absolute imports in
tasks/scheduled_tasks.py: Convertedfrom backend.*to relative imports - Successfully deployed to IBM Cloud Code Engine with auto-scaling (1-3 instances)
- Result: 0 restarts, 100% uptime
- Fixed module import error: Changed Dockerfile CMD from
-
Frontend Deployment ✅
- Configured frontend with production API URL via
.env.production - Fixed CORS issues by adding deployed frontend domain to backend allow list
- Updated nginx configuration for SPA routing
- Successfully deployed with multi-stage Docker build
- Result: React app serving with full API connectivity
- Configured frontend with production API URL via
-
Environment & Security ✅
- All API keys securely stored in Code Engine environment variables (not in code)
- Added
.gitignoreprotection for local.envfiles - Implemented CORS middleware with deployed frontend URL
- MongoDB Atlas credentials properly configured
| Area | Change | Impact |
|---|---|---|
| AI Model | Migrated from SDK to HTTP API | Python 3.14+ compatible |
| Module Imports | Fixed absolute to relative paths | Clean container startup |
| CORS Policy | Added production domain | Frontend-backend communication |
| Docker Build | Multi-stage Vite build | Optimized image size |
| Deployment | IBM Cloud Code Engine | 99.9% availability |
| Database | MongoDB Atlas connection | Cloud-based data persistence |
- Intelligent Cover Letter Generation - AI-crafted cover letters tailored to specific job postings
- Smart Resume Optimization - Targeted suggestions to match job requirements
- Interview Preparation - AI-generated practice questions and preparation tips
- Job Analysis & Fit Assessment - Comprehensive skill gap analysis
- Professional Email Templates - Follow-up, thank you, and negotiation emails
- Performance Insights - AI-powered recommendations based on metrics
- Unified Application Tracking - Manage all job applications in one place
- Real-time Job Updates - Integrated job search capabilities
- Resume Manager - Upload and manage multiple resumes
- Interview Scheduler - Organize and prepare for interviews
- Saved Jobs - Bookmark and track opportunities
- Email Integration - Automatic job detail extraction from emails
- Comprehensive Dashboard - Track applications, interviews, offers
- Success Metrics - Interview rates, offer ratios, match percentages
- Performance Analytics - Visual insights on application history
- Skill Gap Analysis - Identify missing skills for target roles
- Python 3.14+
- Node.js 18+
- MongoDB (local or Atlas)
- Docker & Docker Compose (optional)
git clone https://github.com/agniv-dutta/job-tracker-agent.git
cd job-tracker-agentcd backend
# Create and activate virtual environment
python -m venv .venv
.venv\Scripts\Activate.ps1 # Windows PowerShell
# or
source .venv/bin/activate # macOS/Linux
# Install dependencies
pip install -r requirements.txt
# Configure environment
cp .env.example .env
# Edit .env with your credentialscd frontend
# Install dependencies
npm install
# Create environment configuration
cp .env.example .envBackend (.env)
# MongoDB
MONGODB_URL=mongodb+srv://user:password@cluster.mongodb.net/job_tracker
# Watson AI
WATSONX_API_KEY=your_api_key
WATSONX_PROJECT_ID=your_project_id
IBM_IAM_API_KEY=your_iam_key
WATSONX_URL=https://us-south.ml.cloud.ibm.com
# JWT
JWT_SECRET=your_secret_key
JWT_ALGORITHM=HS256
# Email (optional)
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SENDER_EMAIL=your_email@gmail.com
SENDER_PASSWORD=your_app_passwordFrontend (.env)
VITE_API_BASE_URL=http://localhost:8000docker-compose up -d- Backend: http://localhost:8000
- Frontend: http://localhost:3000
- API Docs: http://localhost:8000/docs
Terminal 1 - Backend
cd backend
.venv\Scripts\Activate.ps1
$env:PYTHONPATH="$(Get-Location)"
uvicorn api.main:app --reload --host 0.0.0.0 --port 8000Terminal 2 - Frontend
cd frontend
npm run devjob-tracker-agent/
├── backend/
│ ├── api/
│ │ ├── main.py # FastAPI application entry
│ │ └── routes/ # API endpoints
│ │ ├── users.py
│ │ ├── applications.py
│ │ ├── jobs.py
│ │ ├── analytics.py
│ │ └── ai.py
│ ├── services/
│ │ ├── watsonx_service.py # Watson AI integration (HTTP API)
│ │ ├── job_api_service.py # Job posting service
│ │ ├── email_parser.py # Email parsing
│ │ ├── resume_parser.py # Resume parsing
│ │ ├── matcher.py # Job matching
│ │ └── notifications.py # Email notifications
│ ├── models/
│ │ └── database.py # MongoDB models
│ ├── config/
│ │ └── database.py # Database configuration
│ ├── auth/
│ │ └── jwt_handler.py # JWT authentication
│ ├── tasks/
│ │ └── scheduled_tasks.py # Background jobs
│ ├── Dockerfile
│ └── requirements.txt
│
├── frontend/
│ ├── src/
│ │ ├── App.tsx # Main component
│ │ ├── index.tsx # Entry point
│ │ ├── index.css # Global styles
│ │ ├── vite-env.d.ts # Vite types
│ │ ├── components/ # React components
│ │ ├── services/
│ │ │ └── api.ts # API client
│ │ ├── context/
│ │ │ └── AuthContext.tsx # Auth state
│ │ └── hooks/ # Custom hooks
│ ├── public/ # Static assets
│ ├── Dockerfile
│ ├── nginx.conf # Nginx configuration
│ ├── vite.config.ts
│ ├── tailwind.config.js
│ ├── tsconfig.json
│ └── package.json
│
├── docker-compose.yml
├── WATSON_API_MIGRATION.md # Migration documentation
└── README.md
POST /api/auth/register- Register new userPOST /api/auth/login- Login userPOST /api/auth/refresh- Refresh JWT token
GET /api/applications- List all applicationsPOST /api/applications- Create new applicationGET /api/applications/{id}- Get application detailsPUT /api/applications/{id}- Update applicationDELETE /api/applications/{id}- Delete application
GET /api/jobs- Search jobsGET /api/jobs/{id}- Get job detailsPOST /api/jobs/save- Save job posting
POST /api/ai/cover-letter- Generate cover letterPOST /api/ai/resume-optimization- Optimize resumePOST /api/ai/interview-prep- Get interview questionsPOST /api/ai/job-analysis- Analyze job fitPOST /api/ai/email-template- Generate emailGET /api/ai/insights- Get performance insights
POST /api/resume/upload- Upload resumeGET /api/resume/list- List user resumesDELETE /api/resume/{id}- Delete resume
The application uses IBM Watson AI with the granite-13b-chat-v2 model for:
- HTTP-Based API Integration - Direct REST calls (bypassing SDK for Python 3.14 compatibility)
- IAM Authentication - Secure token-based authentication with IBM Cloud
- Intelligent Prompting - Context-aware AI for career-specific tasks
- Fallback Templates - Graceful degradation with professional templates when API unavailable
User Request
↓
Generate IAM Token (IBM Cloud)
↓
Call Watson ML API (HTTP POST)
↓
Parse AI Response
↓
Return to User
- Model: granite-13b-chat-v2
- Temperature: 0.7 (balanced creativity & consistency)
- Max Tokens: 500-800 (context-dependent)
- Endpoint: https://us-south.ml.cloud.ibm.com/ml/v1/text/generation
cd backend
pytest tests/cd frontend
npm run testOnce the backend is running, visit:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
The professional dashboard includes:
- Stats Overview - Total applications, interviews, offers, success rate
- Application Status Breakdown - Visual breakdown of application statuses
- Recent Applications - Latest submitted applications
- Interview Schedule - Upcoming interviews and preparation
- AI Insights - Personalized recommendations based on activity
- Primary Color: #1E3A5F (Professional Dark Blue)
- Background: White with subtle gradients
- Typography: Clean, readable fonts
- Modern UI - Professional design without emojis
- ✅ JWT Authentication - Secure token-based auth
- ✅ Password Hashing - bcrypt encryption for sensitive data
- ✅ CORS Protection - Configured CORS policies
- ✅ Environment Variables - Secure credential management
- ✅ API Rate Limiting - Prevent abuse
- ✅ Input Validation - FastAPI Pydantic validation
- ✅ HTTPS Ready - Docker setup supports SSL/TLS
- Async Operations - Motor async MongoDB driver for non-blocking I/O
- Database Indexing - Optimized MongoDB queries with proper indexes
- Frontend Caching - React Context API for efficient state management
- Lazy Loading - Component-level code splitting with Vite
- Docker Containers - Efficient resource utilization and isolation
- HTTP/2 Support - Nginx configured for optimal performance
# Clear cache and reinstall
rm -r .venv
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt- Verify IBM credentials in
.env - Check IAM token generation:
POST https://iam.cloud.ibm.com/identity/token - View backend logs for API errors
- Ensure API key permissions for Watson ML
# Clear node_modules and reinstall
rm -r node_modules package-lock.json
npm install
npm run dev- Ensure MongoDB is running locally or update connection string to Atlas
- Check network connectivity for Atlas clusters
- Verify credentials in MongoDB URL
- Check firewall/IP whitelist for Atlas
npm run dev # Frontend with hot reload
uvicorn api.main:app --reload # Backend with auto-reloadnpm run build # Frontend production build
docker-compose up -d # Deploy with DockerSee WATSON_API_MIGRATION.md for details on:
- Migration from SDK to HTTP API for Watson AI
- Python 3.14 compatibility resolution
- IAM token authentication implementation
- All 7 AI function updates
Contributions are welcome! Please follow these steps:
- Fork the repository
- 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 the LICENSE file for details.
Original Author
- Agniv Dutta - GitHub: @agniv-dutta
Enhancement & Deployment by
- Aditya Choudhuri - GitHub: @AdityaC-07
- 🚀 Watson AI integration fixes and HTTP API migration
- ☁️ Full-stack deployment to IBM Cloud Code Engine
- 🔧 Docker containerization and build optimization
- 🛡️ CORS and security configuration
- 📦 Production environment setup
Repository Forks
- Original: agniv-dutta/job-tracker-agent
- Enhanced Fork: adityac18/job-tracker-agent
- IBM Watson AI - Powerful AI capabilities for career tasks
- FastAPI - Modern, fast Python web framework
- React & TypeScript - Excellent frontend development experience
- MongoDB - Flexible and scalable database solution
- Tailwind CSS - Beautiful utility-first CSS framework
- Docker - Containerization and deployment excellence
For support, email choudhuri.aditya7@gmail.com or open an issue on GitHub.
Click here to view https://youtu.be/ZTjHW1ddnJo