An intelligent Django-based platform that automates job and scholarship application management using AI-powered question extraction and response generation.
Job & Scholarship Tracker is a production-ready web application that revolutionizes the way you manage applications. Simply paste an application URL, and our AI-powered system will:
- Extract all questions and requirements from the application page
- Analyze your uploaded documents (resume, transcripts, certificates)
- Generate tailored, professional responses based on your background
- Track your application status, deadlines, and progress
No more copy-pasting. No more starting from scratch. Just smart, automated application management.
# Clone the repository
git clone https://github.com/NajibOladosu/job_and_scholarship_tracker.git
cd job_and_scholarship_tracker
# Set up and run (detailed instructions below)
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# Add your GEMINI_API_KEY to .env
python manage.py migrate
python manage.py runserver
# In separate terminals, run:
celery -A config worker -l info
celery -A config beat -l infoSee QUICKSTART.md for detailed setup instructions.
- Automatic Question Extraction: Paste any job or scholarship URL, and AI extracts all application questions
- Smart Response Generation: AI creates personalized answers using information from your documents
- Document Analysis: Automatically extracts education, experience, skills, and certifications from resumes and transcripts
- Context-Aware Responses: Responses are tailored to each question type and your unique background
- Quick URL Entry: Add applications with just a URL - AI handles the rest
- Full CRUD Operations: Create, view, edit, and delete applications
- Status Tracking: Track applications through multiple stages (Draft, Submitted, In Review, Interview, Offer, Rejected)
- Priority Management: Organize applications by priority (High, Medium, Low)
- Deadline Monitoring: Never miss a deadline with built-in tracking
- Multi-Format Support: PDF, DOCX, images (with OCR), and text files
- Intelligent Extraction: AI parses your documents to extract structured information
- Reusable Data: Extracted information is used across all your applications
- Version Control: Keep track of document updates and changes
- Centralized Dashboard: View all applications at a glance
- Advanced Filtering: Filter by type, status, priority, and search
- Status Statistics: See your application pipeline at a glance
- Timeline View: Track application history and status changes
- Deadline Reminders: Automatic reminders for upcoming deadlines
- Status Updates: Get notified when application statuses change
- In-App Notifications: Never miss important updates
- Framework: Django 5.2.7 (latest stable)
- Task Queue: Celery 5.5.3 + Redis 7.0.1
- Database: SQLite (development) / PostgreSQL (production)
- AI Integration: Google Gemini API
- PDF: pdfplumber 0.11.7
- DOCX: python-docx 1.2.0
- OCR: pytesseract 0.3.14 + Pillow 12.0.0
- NLP: spaCy 3.8.7
- Static Pages: BeautifulSoup4 4.14.2 + requests 2.32.5
- Dynamic Pages: Playwright 1.55.0 (supports JavaScript-rendered content)
- Anti-Bot Protection: fake-useragent 2.0.1
- Template Engine: Django Templates
- CSS Framework: Bootstrap 5 + Custom Minimalist Design
- Forms: django-crispy-forms 2.3.1 + crispy-bootstrap5 2024.10
- Icons: Bootstrap Icons
- Web Server: Gunicorn 23.0.0
- Static Files: WhiteNoise 6.8.2
- Configuration: python-decouple 3.8
- API: Django REST Framework 3.16.1
- Deployment: Railway (recommended) / Render / DigitalOcean
- CI/CD: Automatic deployments from GitHub
- Python 3.8 or higher
- Redis (for Celery)
- Tesseract OCR (optional, for image processing)
git clone https://github.com/NajibOladosu/job_and_scholarship_tracker.git
cd job_and_scholarship_trackerpython -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activatepip install -r requirements.txtCreate a .env file in the project root:
cp .env.example .envEdit .env and add your configuration:
# Django Settings
SECRET_KEY=your-secret-key-here
DEBUG=True
DJANGO_SETTINGS_MODULE=config.settings.development
ALLOWED_HOSTS=localhost,127.0.0.1
# Google Gemini API
# Get your key from: https://makersuite.google.com/app/apikey
GEMINI_API_KEY=your-gemini-api-key-here
# Database (PostgreSQL for production)
DB_NAME=job_tracker_db
DB_USER=postgres
DB_PASSWORD=your-db-password
DB_HOST=localhost
DB_PORT=5432
# Redis (for Celery)
REDIS_URL=redis://localhost:6379/0
# Email (for notifications)
EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=[email protected]
EMAIL_HOST_PASSWORD=your-gmail-app-passwordpython manage.py migratepython manage.py createsuperuserFor image document processing (certificates, scanned transcripts):
Ubuntu/Debian:
sudo apt-get install tesseract-ocrmacOS:
brew install tesseractWindows: Download from: https://github.com/UB-Mannheim/tesseract/wiki
You'll need three terminal windows:
Terminal 1 - Django Development Server:
source venv/bin/activate
python manage.py runserverTerminal 2 - Celery Worker:
source venv/bin/activate
celery -A config worker -l infoTerminal 3 - Celery Beat (Scheduler):
source venv/bin/activate
celery -A config beat -l infoAccess the application at: http://localhost:8000
- Navigate to Documents β Upload
- Upload your resume, transcripts, certificates, or other documents
- The system automatically processes and extracts your information
- Extracted data includes: education, experience, skills, certifications
Quick Method (Recommended):
- Click "Quick Add" or "Add Application"
- Paste the job/scholarship application URL
- Select application type (Job or Scholarship)
- Click "Create"
- AI automatically extracts:
- Application title
- Company/Institution name
- Description
- All application questions
Manual Method:
- Click "New Application"
- Fill in details manually
- Add questions manually if needed
- Open an application
- Click "Generate All Responses"
- AI creates personalized answers for each question using your document data
- Review and edit responses as needed
- Copy responses to use in the actual application
- Update status as you progress (Submitted β In Review β Interview β Offer)
- Set deadlines and get automatic reminders
- Add notes and track communication
- View application history and timeline
job_and_scholarship_tracker/
βββ config/ # Django project configuration
β βββ settings/ # Modular settings (base, dev, prod)
β βββ celery.py # Celery configuration
β βββ urls.py # Main URL routing
βββ apps/
β βββ accounts/ # User authentication & profiles
β βββ tracker/ # Application tracking (core app)
β βββ documents/ # Document management & processing
β βββ notifications/ # Notifications & reminders
β βββ core/ # Shared utilities
βββ services/ # Business logic services
β βββ gemini_service.py # Google Gemini AI integration
β βββ scraper_service.py # Web scraping
β βββ document_parser.py # Document parsing
βββ templates/ # HTML templates
βββ static/ # CSS, JavaScript, images
βββ media/ # User uploaded files
βββ requirements.txt # Python dependencies
The project uses modular settings:
base.py: Common settings for all environmentsdevelopment.py: Development-specific settings (SQLite, DEBUG=True)production.py: Production settings (PostgreSQL, DEBUG=False, security)
Switch between environments using the DJANGO_ENV environment variable.
The project includes a comprehensive test suite using pytest:
# Run all tests with pytest (recommended)
pytest
# Run tests with coverage
pytest --cov=. --cov-report=html
# Run specific app tests
pytest accounts/tests/
pytest tracker/tests/
pytest documents/tests/
# Run specific test file
pytest tracker/tests/test_models.py
# Run with verbose output
pytest -v
# Alternative: Django's test runner
python manage.py test
# Run specific app tests
python manage.py test accounts
python manage.py test trackerTest configuration is in pytest.ini and .coveragerc.
Access the Django admin at: http://localhost:8000/admin/
Features:
- Manage users and profiles
- View and edit applications
- Monitor document processing
- Check notifications and reminders
- View system logs
β Successfully Deployed on Railway!
This application is production-ready and fully deployed on Railway with:
- β Automatic HTTPS
- β PostgreSQL database with DNS resolution retry logic
- β Redis for Celery task queue
- β Three separate processes: Web (Django), Worker (Celery), Beat (Scheduler)
- β Auto-scaling and automatic deployments
- β Optimized worker concurrency (2 workers) to prevent OOM crashes
Quick Deploy to Railway:
- Sign up at Railway
- Click "Deploy from GitHub repo"
- Select this repository
- Add PostgreSQL and Redis databases (one-click)
- Set environment variables (see
railway.env.example) - Deploy! π
Automatic deployments: Every push to your branch auto-deploys!
Complete Railway guide: See RAILWAY_DEPLOYMENT.md for step-by-step instructions and troubleshooting.
Important Notes:
- The project includes database readiness checks (
wait_for_db.py) that handle Railway's internal DNS delays - Celery worker uses
--concurrency=2to prevent memory exhaustion - All Railway-specific configurations are in
config/settings/production.py
- Set production environment:
export DJANGO_SETTINGS_MODULE=config.settings.production- Collect static files:
python manage.py collectstatic --noinput- Run with Gunicorn:
gunicorn config.wsgi:application --bind 0.0.0.0:8000 --workers 3-
Configure Nginx as reverse proxy
-
Run Celery worker and beat as systemd services
See DEPLOYMENT.md for detailed manual deployment instructions.
- Email-based authentication (no username)
- Password hashing with PBKDF2
- CSRF protection enabled
- Encrypted sensitive data (API keys, tokens)
- File upload validation
- SQL injection protection via Django ORM
- HTTPS enforcement in production
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Google Gemini: AI-powered question extraction and response generation
- Django Community: Excellent framework and ecosystem
- Celery: Robust task queue system
- Bootstrap: Beautiful UI components
For issues, questions, or suggestions:
- Open an issue on GitHub
- Check
IMPLEMENTATION_STATUS.mdfor project progress - Review
CLAUDE.mdfor development guidelines - See deployment guides:
RAILWAY_DEPLOYMENT.mdorDEPLOYMENT.md
Current Version: 1.0.0 Completion: 100% Complete π
- Backend: 100% β
- Frontend: 100% β
- Testing: 80% β
- Deployment: 100% β (Live on Railway)
Status: Production Ready & Deployed
The application is fully functional and deployed on Railway with all features working:
- β User authentication (sign up, login, logout)
- β Application tracking and management
- β AI-powered question extraction from URLs
- β AI-powered response generation
- β Document upload and processing
- β Background task processing (Celery)
- β Notifications and reminders
See IMPLEMENTATION_STATUS.md for detailed progress breakdown.
- Core application tracking system
- AI-powered question extraction from URLs
- AI-powered response generation
- Document processing and extraction (PDF, DOCX, images with OCR)
- Background task processing with Celery
- Complete frontend templates (minimalist design)
- User authentication and profiles
- Notifications and reminders system
- Admin interfaces for all models
- Railway deployment configuration
- Comprehensive testing suite
- Advanced analytics dashboard with charts
- Email notification integration
- Mobile-responsive enhancements
- Browser extension for one-click import
- Resume builder integration
- Interview preparation features
- Application insights and recommendations
- Cover letter generator
Built with β€οΈ using Django, Celery, and Google Gemini AI