JobCAT is an AI-powered job application tracker that analyzes your Gmail emails to automatically categorize and track your job applications.
- Gmail Integration: Automatically scans your Gmail for job-related emails
- AI Analysis: Uses OpenAI to analyze email content and extract key information
- Smart Categorization: Automatically categorizes emails by status (received, under review, interview scheduled, etc.)
- Company Tracking: Groups applications by company with duplicate detection
- Real-time Sync: Live feed showing sync progress
- Dashboard Analytics: Visual charts and statistics
- Manual Controls: Update status, urgency, and merge duplicate applications
- Frontend: React.js with Material-UI
- Backend: Node.js with Express
- Database: Firebase Firestore
- Authentication: Google OAuth 2.0
- AI: OpenAI GPT for email analysis
- Deployment: Vercel (recommended)
- Google Cloud Console account
- Firebase project
- OpenAI API key
- Vercel account
-
Clone the repository
git clone https://github.com/your-username/JobCATGmailScraper.git cd JobCATGmailScraper -
Deploy Backend
npm run vercel:deploy
-
Deploy Frontend
npm run vercel:deploy-client
-
Configure Environment Variables (see VERCEL_DEPLOYMENT.md)
-
Update Google OAuth URLs with your Vercel domains
NODE_ENV=production
SESSION_SECRET=your-secure-session-secret
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_CALLBACK_URL=https://your-api-domain.vercel.app/api/auth/callback/google
OPENAI_API_KEY=sk-your-openai-api-key
FRONTEND_URL=https://your-frontend-domain.vercel.app
FIREBASE_PROJECT_ID=your-firebase-project
FIREBASE_PRIVATE_KEY="your-firebase-private-key"
FIREBASE_CLIENT_EMAIL=your-firebase-emailREACT_APP_API_URL=https://your-api-domain.vercel.appJobCATGmailScraper/
├── server.js # Main API server
├── auth.js # Google OAuth configuration
├── firebase.js # Firebase/Firestore functions
├── gmail.js # Gmail API integration
├── vercel.json # Vercel deployment config
├── VERCEL_DEPLOYMENT.md # Detailed deployment guide
└── client/ # React frontend
├── src/
│ ├── components/ # React components
│ ├── contexts/ # React contexts
│ └── jobcatlogo.png # Application logo
└── package.json
-
Install dependencies
npm run install:all
-
Set up environment variables
cp .env.example .env cp client/.env.example client/.env # Fill in your actual values -
Start development servers
npm run dev:full
GET /api/auth/google- Initiate Google OAuthGET /api/auth/callback/google- OAuth callbackGET /api/auth/status- Check auth statusPOST /api/auth/logout- Logout
GET /api/applications- Get user applicationsPOST /api/update-emails- Sync with GmailGET /api/job-summary- Get dashboard summaryPUT /api/applications/:id/status- Update application statusPUT /api/applications/:id/urgency- Update application urgencyDELETE /api/applications/:id- Delete applicationPOST /api/applications/merge- Merge applications
GET /health- Health checkGET /api/sync-feed- Server-sent events for live sync
- OAuth 2.0 authentication with Google
- Session-based authentication
- CORS protection
- Firebase security rules
- Environment variable configuration
- HTTPS enforcement (Vercel)
- Incremental email sync (only new emails)
- Batch database operations
- Client-side caching
- Optimized React rendering
- Serverless functions (Vercel)
See VERCEL_DEPLOYMENT.md for detailed troubleshooting guides.
Common issues:
- Authentication loops: Check OAuth callback URLs
- CORS errors: Verify FRONTEND_URL environment variable
- Function timeouts: Consider Vercel Pro for longer execution time
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details
- Create an issue for bugs or feature requests
- Check VERCEL_DEPLOYMENT.md for deployment help
- Review the code for implementation details
Your AI-powered job application tracker is ready! 🎉