Skip to content

Vickyavh7/cloudhireops

Repository files navigation

HireOps (CloudHireOps)

Automated job search pipeline for DevOps / Cloud / SRE roles. Scrapes jobs, scores them with AI (Groq), and sends Telegram alerts for strong matches.

Built for Vicky Avhad — portable across laptop, Docker, and any cloud server.


Architecture

Job sources                    Processing                    Alerts
─────────────                  ──────────                    ──────
LinkedIn scraper    ──┐
Hirist, Cutshort,   ──┼──► Postgres (job_listings) ──► n8n (every 2h)
Indeed, Instahyre  ──┤         status=new              Groq AI scoring
Naukri Gmail IMAP  ──┘              │                  Telegram (≥65%)
                                      ▼
                              Daily digest (9 AM IST)

Naukri activity (home laptop) ──► activity_log

Docker services

Service Port Role
hireops-db 5432 PostgreSQL
hireops-n8n 5678 Workflow automation
hireops-gotenberg 3000 PDF generation (template ready)
hireops-scrapers Cron scrapers (host network)

Quick start

1. Clone and configure

git clone https://github.com/Vickyavh7/cloudhireops.git
cd cloudhireops
cp .env.example .env
# Edit .env — see Configuration below

2. Start stack

bash scripts/setup.sh

Or manually:

docker compose up -d --build
python3 scripts/export_cookies_from_env.py   # optional, if cookies set
DB_HOST=localhost python3 scripts/deploy_n8n_workflows.py
docker exec hireops-n8n n8n publish:workflow --id=tO1tDnLBUgUirMwf
docker exec hireops-n8n n8n publish:workflow --id=HireOpsDaily01

3. n8n UI

http://localhost:5678


Configuration (.env)

Variable Required Purpose
POSTGRES_* Yes Database
GROQ_API_KEY Yes AI job scoring
TELEGRAM_BOT_TOKEN Yes Alerts
TELEGRAM_CHAT_ID Yes Alerts
GMAIL_IMAP_USER For Naukri Gmail address
GMAIL_IMAP_APP_PASSWORD For Naukri App password
NAUKRI_EMAIL / NAUKRI_PASSWORD Optional Home worker login
NAUKRI_JOBS_SOURCE No email (default) or browser
HIREOPS_ROLE No server or home

Never commit .env — it is gitignored.


Naukri (special handling)

Naukri blocks datacenter/WSL IPs (Akamai). We use a split approach:

Task Where How
Jobs Server Gmail IMAP reads job alert emails
Activity Home laptop bash scripts/home_worker.sh

One-time Naukri setup

See scripts/NAUKRI_SETUP.txt:

  1. Create job alerts on naukri.com (DevOps, Kubernetes, AWS)
  2. Gmail app password in .env
  3. Home worker for algorithm activity
# One-time on laptop
bash scripts/setup_home_worker.sh

# Twice daily (8 AM & 8 PM IST)
DB_HOST=localhost bash scripts/home_worker.sh

Scraper commands

# Inside container
docker exec hireops-scrapers python run_scrapers.py scrape      # LinkedIn + email + tier1
docker exec hireops-scrapers python run_scrapers.py naukri-email
docker exec hireops-scrapers python run_scrapers.py linkedin
docker exec hireops-scrapers python run_scrapers.py tier1

# On laptop (activity)
DB_HOST=localhost bash scripts/home_worker.sh

Cron schedule (server)

  • Every 6h: full scrape
  • Every 30 min: Naukri email check

n8n workflows

Workflow Schedule Action
HireOps - Process Jobs Every 2h Score 5 new jobs → Telegram if ≥65%
HireOps - Daily Digest 9 AM IST Summary stats to Telegram

Deploy after changes:

DB_HOST=localhost python3 scripts/deploy_n8n_workflows.py
docker exec hireops-n8n n8n publish:workflow --id=tO1tDnLBUgUirMwf

Project layout

cloudhireops/
├── docker-compose.yaml
├── sql/001_schema.sql
├── scrapers/           # Playwright scrapers + email ingest
├── scripts/            # Setup, deploy, home worker
├── templates/          # Gotenberg resume HTML
├── browser_sessions/   # Portable login state (gitignored)
├── cookies/            # Optional cookie files (gitignored)
└── docs/BUILD_LOG.md   # What we built (history)

Platform status

Platform Jobs source Notes
LinkedIn Scraper Working
Hirist Scraper Working
Cutshort Scraper Working
Indeed Scraper Partial; may need cookies
Naukri Gmail email Alerts + IMAP
Instahyre Scraper Cloudflare; needs cookies
Wellfound Scraper Often IP blocked

Security

  • Rotate any API keys or passwords that were shared in chat or logs
  • .env, browser_sessions/, and cookies/ are not pushed to GitHub
  • Use Gmail app passwords, not your main Google password

Docs


License

MIT — use and modify freely.

About

Automated DevOps job search: scrape, AI score, Telegram alerts

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors