A Python automation app that monitors Netherlands-focused PhD vacancies and sends matching positions to interface every preferred days.
- Scrapes
AcademicTransferacross paginated results. - Scrapes
EURAXESSfiltered to job offers in the Netherlands. - Applies your keyword list plus excluded-keyword filtering.
- Sends matching vacancies to Telegram.
- Deduplicates overlaps between the two sources before sending.
- Persists sent job IDs in Redis so repeated vacancies are skipped on later runs.
- Academic Transfer – provides listings of PhD/Research positions (filtered in the code for relevant vacancies).
- EURAXESS – European PhD/research jobs (filtered in the code for Netherlands-based positions).
pip install -r requirements.txtSet these environment variables before running:
TELEGRAM_BOT_TOKEN=your_bot_token
TELEGRAM_CHAT_ID=your_chat_id
REDIS_URL=your_redis_connection_string
SEEN_JOB_TTL_SECONDS=2592000Edit config.py to change:
KEYWORDSEXCLUDED_KEYWORDSCHECK_INTERVAL_HOURS
Run once:
python main.py --onceRun continuously with the scheduler:
python main.pymain.py: scheduler and notification flowscraper.py: source-specific scraping logicnotifier.py: Telegram sending logicstorage.py: Redis-based seen-job persistenceconfig.py: filters, source URLs, and timing