Job searching is a full-time job. It shouldn't be.
The standard job search is manual, repetitive, and signal-poor — scrolling job boards, tailoring resumes by hand, losing track of where you applied. HireLoop automates the high-effort / low-judgment parts while keeping you in control of every decision that matters.
The core design rule: no autonomous applying. The system researches, scores, discovers, and prepares — but a human confirms before anything is submitted. No spam applies, no mismatched applications, no embarrassing auto-submits.
Four phases, one pipeline
The system was designed in four phases that activate sequentially based on your readiness score — company-specific job polling only turns on once you're ready for that company.
Scrapes interview signals from Glassdoor, Blind, LeetCode, Reddit. Dynamically calculates global and per-company readiness scores (0–100) based on topic coverage weights. Dashboard shows prep gaps in real time.
Polls company career pages directly — no LinkedIn/Indeed. Filters by posting age (max 7 days), role level, and location. Claude scores job-resume fit and flags top matches.
Per-job resume tailoring using Claude API. Parses your base DOCX via Apache POI, rewrites relevant bullets to match the JD, produces a tailored version for review before submission.
Gmail API integration auto-tracks recruiter responses. Dashboard shows pipeline state per company — applied, responded, scheduled, rejected. Human confirms every application before it sends.
What makes it different
- Config-driven rules engine: targets.yml defines which companies to target and at what readiness threshold. filters.yml defines job filters. Change behavior without touching code.
- Pluggable LLM provider strategy: LLM calls go through a provider interface — swap between Claude API and Gemini without touching business logic. Designed for cost flexibility.
- Readiness-gated job polling: Job polling for a company only activates when your readiness score for that company crosses its configured threshold. You don't see Apple jobs until you're ready for Apple.
- Direct career page targeting: All job discovery hits company career pages directly, not aggregators. Avoids stale listings, fake roles, and the noise of Easy Apply spam.
- Human-in-the-loop by design: Every application requires explicit dashboard confirmation. The agent prepares everything; you pull the trigger.
What it's built on
| Language | Java 26 · Spring Boot 3 |
| Scheduler | Spring @Scheduled — batch scrape runs, not real-time |
| LLM | Claude API (claude-sonnet-4-6) via RestTemplate — fit scoring, resume tailoring, intel summarization |
| Browser | Playwright for Java — career page scraping |
| Database | PostgreSQL via Spring Data JPA · Flyway migrations |
| Resume | Apache POI — parses DOCX, stores as JSON, rewrites bullets per JD |
| Gmail | Gmail API v1 (OAuth2) — auto-tracks recruiter responses |
| Frontend | React SPA at localhost:8080/ui — pipeline, prep tracker, job feed |
| Hosting | Railway — Java backend + managed PostgreSQL |
| Config | application.yml + targets.yml + filters.yml |
Code is cheap. Design first. The entire system was designed through a PRD-first approach — 23 sections, 24-step phased delivery order — before a single line of code was written. Claude Code was used for autonomous development from the PRD spec.