Claim this agent
Agent DossierGITHUB OPENCLEWSafety 66/100

Xpersona Agent

jobhunter

Multi-agent AI system for automated job search: CrewAI + Claude + FastAPI + React JobHunter Agent πŸ‘¨πŸ»β€πŸ’» A multi-agent AI system that automates the most painful parts of job searching. Upload your resume, paste any job URL or description from LinkedIn, Indeed, Dice, or any company careers page, and get back an ATS fit score, tailored resume bullets, a personalized cold email, and interview strategy - all generated by four specialized AI agents working in sequence, powered by Claude. --- What You

OpenClaw Β· self-declared
1 GitHub starsTrust evidence available
git clone https://github.com/sriputta-dev/jobhunter.git

Overall rank

#30

Adoption

1 GitHub stars

Trust

Unknown

Freshness

May 31, 2026

Freshness

Last checked May 31, 2026

Best For

jobhunter is best for crewai, multi-agent workflows where OpenClaw compatibility matters.

Not Ideal For

Contract metadata is missing or unavailable for deterministic execution.

Evidence Sources Checked

editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack

Overview

Key links, install path, reliability highlights, and the shortest practical read before diving into the crawl record.

Verifiededitorial-content

Overview

Executive Summary

Multi-agent AI system for automated job search: CrewAI + Claude + FastAPI + React JobHunter Agent πŸ‘¨πŸ»β€πŸ’» A multi-agent AI system that automates the most painful parts of job searching. Upload your resume, paste any job URL or description from LinkedIn, Indeed, Dice, or any company careers page, and get back an ATS fit score, tailored resume bullets, a personalized cold email, and interview strategy - all generated by four specialized AI agents working in sequence, powered by Claude. --- What You Capability contract not published. No trust telemetry is available yet. 1 GitHub stars reported by the source. Last updated 5/31/2026.

No verified compatibility signals1 GitHub stars

Trust score

Unknown

Compatibility

OpenClaw

Freshness

May 31, 2026

Vendor

Sriputta Dev

Artifacts

0

Benchmarks

0

Last release

Unpublished

Install & run

Setup Snapshot

git clone https://github.com/sriputta-dev/jobhunter.git
  1. 1

    Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.

  2. 2

    Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Evidence & Timeline

Public facts grouped by evidence type, plus release and crawl events with provenance and freshness.

Verifiededitorial-content

Public facts

Evidence Ledger

Vendor (1)

Vendor

Sriputta Dev

profilemedium
Observed May 23, 2026Source linkProvenance
Compatibility (1)

Protocol compatibility

OpenClaw

contractmedium
Observed May 23, 2026Source linkProvenance
Adoption (1)

Adoption signal

1 GitHub stars

profilemedium
Observed May 23, 2026Source linkProvenance
Security (1)

Handshake status

UNKNOWN

trustmedium
Observed unknownSource linkProvenance

Events

Release & Crawl Timeline

Artifacts & Docs

Parameters, dependencies, examples, extracted files, editorial overview, and the complete README when available.

Self-declaredGITHUB OPENCLEW

Captured outputs

Artifacts Archive

Extracted files

0

Examples

6

Snippets

0

Languages

python

Executable Examples

bash

git clone https://github.com/your-username/jobhunter.git
cd jobhunter

bash

cp backend/.env.example backend/.env

text

ANTHROPIC_API_KEY=sk-ant-your-key-here

bash

cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn api.main:app --reload --port 8000

bash

cd frontend
npm install
npm start

bash

cd backend
python tests/test_jobhunter.py

Editorial read

Docs & README

Docs source

GITHUB OPENCLEW

Editorial quality

ready

Multi-agent AI system for automated job search: CrewAI + Claude + FastAPI + React JobHunter Agent πŸ‘¨πŸ»β€πŸ’» A multi-agent AI system that automates the most painful parts of job searching. Upload your resume, paste any job URL or description from LinkedIn, Indeed, Dice, or any company careers page, and get back an ATS fit score, tailored resume bullets, a personalized cold email, and interview strategy - all generated by four specialized AI agents working in sequence, powered by Claude. --- What You

Full README

JobHunter Agent πŸ‘¨πŸ»β€πŸ’»

A multi-agent AI system that automates the most painful parts of job searching. Upload your resume, paste any job URL or description from LinkedIn, Indeed, Dice, or any company careers page, and get back an ATS fit score, tailored resume bullets, a personalized cold email, and interview strategy - all generated by four specialized AI agents working in sequence, powered by Claude.

Python CrewAI FastAPI React


What You Actually Get

Immediately, no API key needed:

An ATS fit score from 0 to 100 showing how well a job matches your skill profile, with the exact keywords that matched and which ones are missing.

After clicking Run AI Analysis (needs Anthropic key, ~$5 free credits):

Four agents run in sequence, each building on the previous output.

The Job Analyst reads your resume alongside the job description and returns a structured fit assessment - STRONG FIT, GOOD FIT, STRETCH, or SKIP - with clear reasoning. The Resume Tailor rewrites your summary and bullet points using the exact language of the JD, grounded in your actual resume content. The Outreach Specialist drafts a personalized cold email under 120 words with a specific hook for that company. The Strategy Coach generates five technical interview questions with hints drawn from your real projects, behavioral questions with STAR method outlines, a company research tip, and your unique angle for that role.

Everything is editable. Click Edit on any AI output, make your changes, save, and revert to the original anytime. Both versions are stored.


How Jobs Get Added

Paste Mode is the main way to use this. Find a job on LinkedIn, Indeed, Dice, Glassdoor, Greenhouse, Lever, or any company site. Copy either the URL or the job description text. Paste it into the Paste Job tab. The system auto-detects which one it received, extracts the content, scores it, and adds it to your tracker in under two seconds.

If a URL does not load because a site blocks automated fetching, just copy and paste the job description text directly. Text mode works everywhere.

Auto Search pulls from five free job boards simultaneously - Himalayas, Remotive, Jobicy, Arbeitnow, and Indeed RSS - with results scored and ready to review.


Requirements

  • Python 3.11+
  • Node.js 18+
  • Anthropic API key for AI analysis (free $5 credits at console.anthropic.com)

Setup

1. Clone

git clone https://github.com/your-username/jobhunter.git
cd jobhunter

2. Configure

cp backend/.env.example backend/.env

Open backend/.env and add your key:

ANTHROPIC_API_KEY=sk-ant-your-key-here

To get your key: go to console.anthropic.com, sign up free, go to API Keys, click Create Key. New accounts get $5 in credits which covers around 100 job analyses.

3. Backend

cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn api.main:app --reload --port 8000

Windows: use venv\Scripts\activate instead. You should see Application startup complete.

4. Frontend

Open a new terminal:

cd frontend
npm install
npm start

Dashboard opens at http://localhost:3000.

Note: Run the frontend and backend servers simultaneously in separate terminal instances

First Thing To Do - Upload Your Resume

Before running AI analysis, upload your resume so agents use your actual experience rather than the sample placeholder.

Click the resume area at the top of the left panel. Select your .pdf or .docx file. Text is extracted immediately and agents use it from that point forward, including after server restarts.

If your PDF is a scanned image rather than text-based, upload the .docx version instead. The system will tell you clearly if extraction fails and what to do.


Customize for Your Profile

Open backend/tools/ats_scorer.py and edit the CANDIDATE_PROFILE dictionary. The primary skills list drives 70 percent of the ATS score so accuracy here matters most. Replace the default .NET/React skill set with your actual stack.

Open backend/agents/agents.py and edit DEFAULT_CANDIDATE_BACKGROUND. This is what agents fall back to when no resume is uploaded. Once you upload a resume file it overrides this automatically.


Using the Dashboard

Paste a job by clicking the Paste Job tab, entering a URL or description text, and clicking Add Job. The job appears with an ATS score in under two seconds.

Search for jobs by clicking Search Jobs, entering a title and location, and clicking Search. Results from five boards appear automatically.

Run AI analysis by clicking any job in the list, then clicking Run AI Analysis. Results come back in 30 to 90 seconds depending on API speed. Click the refresh button after waiting.

Edit AI output by clicking Edit on the Resume, Cold Email, or Strategy tabs. A textarea opens with the content. Save your version and click Revert to AI anytime to restore the original.

Track applications using the Status dropdown on any job - New, Applied, Interviewing, Rejected, Offered.


Run the Tests

cd backend
python tests/test_jobhunter.py

Expected: ALL 50 TESTS PASSED - 0 failures

Covers ATS scoring, scraper functions, URL and source detection for twelve job boards, DOCX and PDF extraction, resume cache logic, paste-to-score pipeline, editable content fields, and all API endpoints.


Adding a New Job Source

Open backend/tools/job_scraper.py and add a function:

def scrape_myboard(query: str, limit: int = 10) -> List[Dict]:
    jobs = []
    resp = requests.get(f"https://myboard.com/api/jobs?q={query}", timeout=15)
    for job in resp.json().get("results", [])[:limit]:
        jobs.append({
            "title": job["title"],
            "company": job["company"],
            "location": job.get("location", "Remote"),
            "url": job["url"],
            "description": job["description"],
            "salary": job.get("salary", ""),
            "source": "myboard",
            "posted_date": job.get("date", ""),
        })
    return jobs

Then add it to the SOURCES list inside fetch_all_jobs(). Deduplication and scoring happen automatically.


API Reference

| Endpoint | Method | Description | |---|---|---| | GET /health | GET | Health check | | GET /api/jobs | GET | List jobs with optional status, min_score, source filters | | GET /api/jobs/{id} | GET | Single job with all AI outputs and edits | | PATCH /api/jobs/{id} | PATCH | Update status, notes, favorite | | PATCH /api/jobs/{id}/edit | PATCH | Save user edits to resume, email, or strategy | | POST /api/jobs/paste | POST | Add job by URL or pasted text | | POST /api/jobs/{id}/analyze | POST | Trigger 4-agent AI crew in background | | POST /api/search | POST | Search all five free job boards | | POST /api/resume/upload | POST | Upload resume PDF or DOCX | | GET /api/resume | GET | Get current resume profile and preview | | DELETE /api/resume | DELETE | Remove uploaded resume | | GET /api/stats | GET | Dashboard statistics |


Project Structure

jobhunter/
  backend/
    agents/
      agents.py        4 CrewAI agent definitions and resume cache logic
      tasks.py         Task definitions with context chaining
      crew.py          Crew orchestrator
    api/
      main.py          All endpoints including resume upload and edit save
    models/
      database.py      Job, SearchRun, ResumeProfile models
    tools/
      resume_parser.py PDF and DOCX text extraction
      job_extractor.py URL fetch and text parser for paste mode
      job_scraper.py   Five free job board scrapers
      ats_scorer.py    ATS keyword scoring engine
    tests/
      test_jobhunter.py  50 tests
    requirements.txt
    .env.example
  frontend/
    src/
      App.jsx
      App.css
      components/
        ResumeUploader.jsx
        SearchPanel.jsx
        JobList.jsx
        JobDetail.jsx
        StatsBar.jsx
  docker-compose.yml
  README.md

Troubleshooting

Backend does not start: make sure the virtual environment is active (source venv/bin/activate) and dependencies are installed (pip install -r requirements.txt).

Dashboard shows "Failed to load jobs": confirm the backend is running. Test with curl http://localhost:8000/health - should return {"status":"ok"}.

URL paste returns nothing: some sites block automated fetching. Copy and paste the job description text directly instead. This works everywhere.

AI analysis not appearing: check ANTHROPIC_API_KEY in backend/.env. Check the backend terminal for error messages.

ATS scores look off: edit CANDIDATE_PROFILE in backend/tools/ats_scorer.py with your real skills.

Resume not affecting AI output: make sure your PDF is text-based not a scanned image. Try uploading the DOCX version.


What Is Coming Next

Daily digest emails delivering the top matching jobs to your inbox every morning. A browser extension for one-click job adding without opening the dashboard. RAG-based semantic profile matching that understands the meaning of your experience rather than keyword counts. Multi-resume support for different roles.

This is version 1. Will keep shipping.


License

MIT

API & Reliability

Machine endpoints, contract coverage, trust signals, runtime metrics, benchmarks, and guardrails for agent-to-agent use.

MissingGITHUB OPENCLEW

Machine interfaces

Contract & API

Contract coverage

Status

missing

Auth

None

Streaming

No

Data region

Unspecified

Protocol support

OpenClaw: self-declared

Requires: none

Forbidden: none

Guardrails

Operational confidence: low

No positive guardrails captured.
Invocation examples
curl -s "https://www.xpersona.co/api/v1/agents/crewai-sriputta-dev-jobhunter/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-sriputta-dev-jobhunter/contract"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-sriputta-dev-jobhunter/trust"

Operational fit

Reliability & Benchmarks

Trust signals

Handshake

UNKNOWN

Confidence

unknown

Attempts 30d

unknown

Fallback rate

unknown

Runtime metrics

Observed P50

unknown

Observed P95

unknown

Rate limit

unknown

Estimated cost

unknown

Do not use if

Contract metadata is missing or unavailable for deterministic execution.
No benchmark suites or observed failure patterns are available.

Machine Appendix

Raw contract, invocation, trust, capability, facts, and change-event payloads for machine-side inspection.

MissingGITHUB OPENCLEW

Contract JSON

{
  "contractStatus": "missing",
  "authModes": [],
  "requires": [],
  "forbidden": [],
  "supportsMcp": false,
  "supportsA2a": false,
  "supportsStreaming": false,
  "inputSchemaRef": null,
  "outputSchemaRef": null,
  "dataRegion": null,
  "contractUpdatedAt": null,
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Invocation Guide

{
  "preferredApi": {
    "snapshotUrl": "https://www.xpersona.co/api/v1/agents/crewai-sriputta-dev-jobhunter/snapshot",
    "contractUrl": "https://www.xpersona.co/api/v1/agents/crewai-sriputta-dev-jobhunter/contract",
    "trustUrl": "https://www.xpersona.co/api/v1/agents/crewai-sriputta-dev-jobhunter/trust"
  },
  "curlExamples": [
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-sriputta-dev-jobhunter/snapshot\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-sriputta-dev-jobhunter/contract\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-sriputta-dev-jobhunter/trust\""
  ],
  "jsonRequestTemplate": {
    "query": "summarize this repo",
    "constraints": {
      "maxLatencyMs": 2000,
      "protocolPreference": [
        "OPENCLEW"
      ]
    }
  },
  "jsonResponseTemplate": {
    "ok": true,
    "result": {
      "summary": "...",
      "confidence": 0.9
    },
    "meta": {
      "source": "GITHUB_OPENCLEW",
      "generatedAt": "2026-10-08T22:19:24.506Z"
    }
  },
  "retryPolicy": {
    "maxAttempts": 3,
    "backoffMs": [
      500,
      1500,
      3500
    ],
    "retryableConditions": [
      "HTTP_429",
      "HTTP_503",
      "NETWORK_TIMEOUT"
    ]
  }
}

Trust JSON

{
  "status": "unavailable",
  "handshakeStatus": "UNKNOWN",
  "verificationFreshnessHours": null,
  "reputationScore": null,
  "p95LatencyMs": null,
  "successRate30d": null,
  "fallbackRate": null,
  "attempts30d": null,
  "trustUpdatedAt": null,
  "trustConfidence": "unknown",
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Capability Matrix

{
  "rows": [
    {
      "key": "OPENCLEW",
      "type": "protocol",
      "support": "unknown",
      "confidenceSource": "profile",
      "notes": "Listed on profile"
    },
    {
      "key": "crewai",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "multi-agent",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    }
  ],
  "flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:crewai|supported|profile capability:multi-agent|supported|profile"
}

Facts JSON

[
  {
    "factKey": "vendor",
    "label": "Vendor",
    "value": "Sriputta Dev",
    "category": "vendor",
    "href": "https://github.com/sriputta-dev/jobhunter",
    "sourceUrl": "https://github.com/sriputta-dev/jobhunter",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-05-23T06:54:02.795Z",
    "isPublic": true,
    "metadata": {}
  },
  {
    "factKey": "protocols",
    "label": "Protocol compatibility",
    "value": "OpenClaw",
    "category": "compatibility",
    "href": "https://www.xpersona.co/api/v1/agents/crewai-sriputta-dev-jobhunter/contract",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-sriputta-dev-jobhunter/contract",
    "sourceType": "contract",
    "confidence": "medium",
    "observedAt": "2026-05-23T06:54:02.795Z",
    "isPublic": true,
    "metadata": {}
  },
  {
    "factKey": "traction",
    "label": "Adoption signal",
    "value": "1 GitHub stars",
    "category": "adoption",
    "href": "https://github.com/sriputta-dev/jobhunter",
    "sourceUrl": "https://github.com/sriputta-dev/jobhunter",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-05-23T06:54:02.795Z",
    "isPublic": true,
    "metadata": {}
  },
  {
    "factKey": "handshake_status",
    "label": "Handshake status",
    "value": "UNKNOWN",
    "category": "security",
    "href": "https://www.xpersona.co/api/v1/agents/crewai-sriputta-dev-jobhunter/trust",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-sriputta-dev-jobhunter/trust",
    "sourceType": "trust",
    "confidence": "medium",
    "observedAt": null,
    "isPublic": true,
    "metadata": {}
  }
]

Change Events JSON

[]

Sponsored

Ads related to jobhunter and adjacent AI workflows.