Skip to content

thisisvk45/Jobforge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JobForge

⚠️ BETA — Work in Progress JobForge is still in active beta development. APIs, CLI commands, scoring rubrics, and config schemas may change without notice. Expect rough edges, breaking changes between commits, and features that are half-wired. Use at your own risk and do not rely on it for production job hunts yet.

Autonomous job search automation system.

A personal, local-first tool for scanning 50+ company job boards, evaluating fit with LLMs, generating tailored application materials, and (eventually) auto- submitting applications with stealth capabilities.

                            ┌─────────────────────────────────────┐
                            │           J O B F O R G E           │
                            │   Autonomous Job Search Automation  │
                            └──────────────┬──────────────────────┘
                                           │
                ┌──────────────────────────┼──────────────────────────┐
                │                          │                          │
        ┌───────▼───────┐          ┌───────▼───────┐          ┌──────▼────────┐
        │   LAYER 1     │          │   LAYER 2     │          │   LAYER 3     │
        │ Ingest/Filter │──────►   │  Eval/Tailor  │──────►   │ Auto-Apply    │
        │               │          │               │          │               │
        │ Greenhouse    │          │ Sonnet 4.6    │          │ Playwright    │
        │ Lever         │          │ 6-Block Eval  │          │ +Stealth      │
        │ Ashby         │          │ 10-Dim Score  │          │ +Humanizer    │
        │ Workday       │          │ RAG Corpus    │          │ +Captcha      │
        │ Playwright    │          │ CV/CL/Answer  │          │ +Rate Limit   │
        │               │          │ PDF Gen       │          │ +Proxy        │
        │ Haiku Filter  │          │               │          │               │
        │ ~80% Kill     │          │ Hard Floor 4.0│          │ 4.4+ → Opus   │
        │               │          │               │          │ Deep Dive     │
        └───────────────┘          └───────────────┘          └───────────────┘
                                           │
                                ┌──────────▼──────────┐
                                │   COMPOUNDING       │
                                │                     │
                                │ Outcome Tracking    │
                                │ Auto-Tune Rubric    │
                                │ Neo4j Story Graph   │
                                │ Weekly Learning     │
                                └─────────────────────┘

Status

Layer State Notes
Layer 1: Ingest 🟡 beta Greenhouse/Lever/Ashby stable; Workday flaky
Layer 2: Eval & Tailor 🟡 beta Sonnet eval works; rubric still tuning
Layer 3: Auto-Apply 🔴 experimental Stealth stack incomplete — manual review required
Dashboard (web) 🟡 beta Next.js app, read-only views working
Compounding / tuning 🔴 experimental Outcome logging works; auto-tune untested

Stack

Python 3.12 · uv · asyncio · httpx · Playwright · SQLite (FTS5) · ChromaDB · Neo4j · OpenRouter (Haiku / Sonnet / Opus) · FastAPI · WeasyPrint · Pydantic v2 · Click · Rich · Next.js (dashboard)

Quickstart

You will need your own API keys. No keys are included in this repo. Copy .env.example to .env and fill in the values you have.

# 1. Clone & enter
git clone https://github.com/thisisvk45/Jobforge.git
cd Jobforge

# 2. Setup Python env
chmod +x scripts/*.sh
./scripts/setup.sh

# 3. Configure
cp .env.example .env
# then edit .env and add at minimum: OPENROUTER_API_KEY
# drop your resume, READMEs, project docs into corpus/

# 4. Scan job boards
jobforge scan

# 5. Evaluate top candidates
jobforge eval

# 6. (Beta — review carefully before enabling) auto-apply
jobforge apply

CLI Commands

Command Description
jobforge init Initialize database and index corpus
jobforge scan Scan all configured company job boards
jobforge scan -c Anthropic Scan a specific company
jobforge eval Batch evaluate filtered jobs
jobforge eval -j 42 Evaluate a specific job
jobforge apply Auto-apply to top-scoring jobs (beta)
jobforge apply -j 42 Apply to a specific job
jobforge review -a 1 -s offer Log an application outcome
jobforge tune Auto-tune rubric weights from outcomes
jobforge stats Show pipeline statistics
jobforge dashboard Launch FastAPI dashboard on :8000

Layer Details

Layer 1: Ingest & Filter

  • Async scanning of Greenhouse, Lever, Ashby, Workday APIs + Playwright fallback
  • Content-hash deduplication (SHA-256)
  • Haiku 4.5 quick scoring on 5 dimensions: role fit, seniority, location/visa, domain, red flags
  • ~80% of jobs killed before Layer 2

Layer 2: Eval & Tailor

  • Sonnet 4.6 runs a 6-block evaluation: role summary, CV match, level strategy, comp research, personalization, STAR+R stories
  • 10-dimension weighted scoring with a configurable rubric
  • RAG over your corpus (ChromaDB) for personalization
  • Generates per-job: tailored CV PDF, cover letter PDF, Q&A drafts, eval report

Layer 3: Autonomous Apply (experimental)

  • Playwright with playwright-stealth + fingerprint randomization
  • Human behavior simulation: Bezier mouse curves, variable typing with typos, random scrolling
  • Session warming: LinkedIn → Google → company homepage referrer chain
  • 2Captcha integration for reCAPTCHA, hCaptcha, Turnstile
  • Per-domain rate limiting (3–5 apps/day, 20+ min intervals)
  • Persistent cookie jars per company
  • Full screenshot + form data logging
  • For 4.4+ scores: Opus deep dive + cold email to hiring manager

⚠️ Layer 3 is not production-ready. Keep a human in the loop and always review generated artifacts before anything is sent anywhere.

Compounding Layer

  • Outcome tracking: applied → screen → interview → offer pipeline
  • Weekly auto-tuning: Sonnet analyzes which scoring dimensions correlate with success
  • Neo4j story graph: STAR+R stories linked to skills, question types, companies, outcomes

Configuration

  • config/profile.yml — Your background, skills, targets
  • config/companies.yml — 50+ companies with ATS slugs
  • config/rubric.yml — 10-dimension scoring weights (auto-tuned)
  • config/stealth.yml — Proxy, rate limits, behavior tuning
  • corpus/ — Drop your resume, READMEs, blog posts for RAG

Environment Variables

All secrets are loaded from .env at runtime — see .env.example for the full list. At a minimum you need:

  • OPENROUTER_API_KEY — required for Haiku / Sonnet / Opus calls

Optional integrations: CAPTCHA_API_KEY, APOLLO_API_KEY, HUNTER_API_KEY, SERPAPI_KEY, THEIRSTACK_API_KEY, JOBDATAAPI_KEY, Neo4j, Twilio, Slack, proxy credentials.

Neo4j Setup (Optional)

  1. Install Neo4j Desktop
  2. Create a local database, start it on bolt://localhost:7687
  3. Set NEO4J_URI, NEO4J_USER, NEO4J_PASS in .env
  4. The story graph schema auto-initializes on first use

API Dashboard

jobforge dashboard
# GET /health       — Health check
# GET /jobs         — List jobs with filters
# GET /jobs/{id}    — Job detail with evaluation
# GET /apps         — List applications
# GET /outcomes     — Stats and recent outcomes
# GET /stories      — STAR+R story bank
# GET /pipeline     — Pipeline status counts

A Next.js front-end lives in dashboard-web/ (also beta).

Known Issues (beta)

  • Workday scraping is flaky on some tenants
  • Auto-tune rubric can produce weird weights when outcome data is sparse
  • Layer 3 stealth stack is incomplete and not safe to run unattended
  • Dashboard endpoints may change shape between commits
  • Test coverage is uneven across layers

Contributing

This is a personal project in beta. Issues and small PRs are welcome, but expect the architecture to keep shifting for a while.

Ethics

This tool is built for personal use to automate the mechanical parts of job searching. It does not:

  • Misrepresent the candidate's qualifications
  • Generate false information
  • Spam companies beyond reasonable application rates
  • Circumvent explicit anti-automation measures without consent

Rate limits are configured conservatively. All generated materials are based on the candidate's real background. Use responsibly.

License

TBD — currently all rights reserved while the project is in beta.


Built by Vikas · MSBA, Wake Forest 2026 · AI/ML Engineering Status: 🟡 Beta — expect breakage

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors