Find the right jobs — and let an AI agent apply to them for you.
JobGraph AI combines graph-based job recommendation (GNN + semantic matching) with an autonomous multi-step application agent that navigates real ATS workflows (Greenhouse, Lever, Workday).
⚡ From resume → ranked jobs → fully filled applications in seconds.
-
🧠 Graph + Semantic Intelligence
Not keyword search — jobs are ranked using a hybrid of embeddings + graph-based affinity scoring. -
🤖 Autonomous Application Agent
Goes beyond autofill — navigates multi-step, real-world job applications. -
🔁 Handles Messy ATS Flows
Works with dynamic forms, dropdowns, comboboxes, and multi-page applications. -
🛡️ Human-in-the-loop Safe Mode
Fills everything — never submits without your review.
Applying to jobs is repetitive, time-consuming, and inefficient:
- Same data entered across dozens of portals
- Weak matching when search is plain keywords
- Almost no automation that survives real ATS flows (not toy forms)
JobGraph AI:
- Recommends relevant roles using hybrid graph + semantic signals
- Automates application workflows end-to-end (with review mode)
- Keeps you in control — you review before anything is submitted
JobGraph AI uses a hybrid ranking pipeline:
-
Semantic Matching
Resume ↔ job description similarity using embedding-style signals and text overlap. -
Graph-based Affinity (GNN-inspired)
A candidate–job–skill graph scored via a GraphSAGE-style encoder (graphsage_affinity_scoresin the backend), fused with classical graph features. -
Structured Signals
Skill overlap, role/experience fit, location alignment, and explainable factor breakdowns in the UI.
👉 Final score = interpretable fusion of these signals — not a black box.
The apply agent is not a simple autofill script — it behaves like a decision-making system:
- Detects visible, enabled fields dynamically across frames
- Classifies behavior (text / select / radio / combobox / multi-step navigation)
- Maps answers from your candidate profile + intake answers, with LLM classification when rules aren’t enough
- Drives the browser with Playwright (first-class)
- Clicks safe Next / Continue / Save and continue across pages
- Repeats until the flow is complete — stops before final Submit in review mode
✔ Works against live ATS surfaces (Greenhouse, Lever, Workday, Ashby-family patterns)
✔ Dropdowns, checkboxes, custom selects, combobox-style controls
✔ Optional Stagehand CDP attach for harder UI recovery paths
- ⚡ Cuts manual application effort from long form sessions to guided, automated fills (you still review)
- 🎯 Stronger relevance vs keyword-only search via hybrid ranking
- 🤖 Multi-step applications automated across major ATS-style flows
- 🧠 Built as a scalable agentic pipeline (deterministic rules + LLM + browser automation), not a brittle single-page script
pip install pillow # if needed
python scripts/record_demo_gif.py --install-browser # once: downloads Chromium
python scripts/record_demo_gif.pyOr swap in your own screen capture — keep the path above so the README preview works on GitHub.
AI Job Application Agent — system flow from resume intake through ranked jobs to browser automation.
Legend (diagram): green — AI / agent; blue — loop / state; gray — service.
| Path | Role |
|---|---|
backend/ |
FastAPI API: ingestion, matching, GraphSAGE-style scoring, autofill, apply-agent orchestration, SQLite/Postgres persistence. |
apps/web/ |
Next.js UI (resume flow, job board, apply status). |
agents/ |
TypeScript Playwright + optional Stagehand hybrid agent (compiled for Node CLI). |
apps/extension/ |
Browser extension hooks for profile-aware assistance (optional). |
Backend (Python 3.10+ recommended):
python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
pip install -r backend/requirements.txt
uvicorn backend.app.main:app --reload --port 8022Frontend:
cd apps/web
npm install
npm run devOpen the app (default http://localhost:3020). The home route redirects to /upload.
Point the UI at your API (optional):
NEXT_PUBLIC_API_URL=http://127.0.0.1:8022
Apply agent (Node) — build once after backend changes to agent sources:
cd agents
npm install
npm run buildDo not commit .env or any file containing secrets. They are listed in .gitignore. Keep OPENAI_API_KEY only on your machine or in your deployment secret store—it is optional for running the app (ranking and deterministic fills still work; LLM-assisted classification and parsing extras are skipped when unset).
Copy .env.example to .env at the repo root when present. Common keys:
DATABASE_URL=sqlite:///./jobgraph.db
OPENAI_API_KEY= # LLM field classification + optional Stagehand / enrichments
NEXT_PUBLIC_API_URL=http://127.0.0.1:8022
ATS board configuration examples:
ASHBY_JOB_BOARDS=YourOrg
GREENHOUSE_BOARDS=company-a,company-b
LEVER_COMPANIES=company-c
WORKDAY_BOARDS=company|External|https://company.wd1.myworkdayjobs.com
For PostgreSQL:
DATABASE_URL=postgresql+psycopg://user:password@localhost:5432/jobgraph
See repository license file if present; otherwise treat as private / all rights reserved unless stated.
