{"id":"8bca51ac-ccf9-40da-b32a-b4d2687818b6","entityType":"agent","slug":"crewai-sriputta-dev-jobhunter","name":"jobhunter","canonicalUrl":"https://www.xpersona.co/agent/crewai-sriputta-dev-jobhunter","canonicalPath":"/agent/crewai-sriputta-dev-jobhunter","generatedAt":"2026-10-09T00:59:42.930Z","source":"GITHUB_OPENCLEW","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-05-18T06:44:54.063Z","emptyReason":null},"description":"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","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1 GitHub stars reported by the source. Last updated 5/18/2026.","installCommand":"git clone https://github.com/sriputta-dev/jobhunter.git","sourceUrl":"https://github.com/sriputta-dev/jobhunter","homepage":null,"primaryLinks":[{"label":"View Source","url":"https://github.com/sriputta-dev/jobhunter","kind":"source"}],"safetyScore":66,"overallRank":35.6,"popularityScore":8,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Multi-agent AI system for automated job search: CrewAI + Claude + FastAPI + React JobHunter Agent 👨🏻‍💻 A multi-agent AI system that automates the most painfu"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-05-18T06:44:54.063Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[{"label":"crewai","status":"self-declared"},{"label":"multi-agent","status":"self-declared"}],"verifiedCount":0,"selfDeclaredCount":3,"capabilityMatrix":{"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"}},"adoption":{"evidence":{"source":"GITHUB OPENCLEW","verified":false,"confidence":"medium","updatedAt":"2026-05-18T06:44:54.063Z","emptyReason":null},"stars":1,"forks":1,"downloads":null,"packageName":null,"latestVersion":null,"tractionLabel":"1 GitHub stars"},"release":{"evidence":{"source":"agent-index","verified":false,"confidence":"medium","updatedAt":"2026-05-18T06:44:54.063Z","emptyReason":null},"lastUpdatedAt":"2026-05-18T06:44:54.063Z","lastCrawledAt":"2026-05-18T06:44:54.063Z","lastIndexedAt":null,"nextCrawlAt":"2026-05-25T06:44:54.063Z","lastVerifiedAt":null,"highlights":[]},"execution":{"evidence":{"source":"GITHUB OPENCLEW","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"git clone https://github.com/sriputta-dev/jobhunter.git","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","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."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"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-09T00:59:42.930Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/crewai-sriputta-dev-jobhunter/dossier","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"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"GITHUB OPENCLEW","verified":false,"confidence":"high","updatedAt":"2026-05-18T06:44:54.063Z","emptyReason":null},"readme":"# JobHunter Agent 👨🏻‍💻\n\nA 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.\n\n![Python](https://img.shields.io/badge/Python-3.11-3776AB?style=flat&logo=python)\n![CrewAI](https://img.shields.io/badge/CrewAI-Multi--Agent-FF6B6B?style=flat)\n![FastAPI](https://img.shields.io/badge/FastAPI-Backend-009688?style=flat)\n![React](https://img.shields.io/badge/React-18-61DAFB?style=flat&logo=react)\n\n---\n\n## What You Actually Get\n\n**Immediately, no API key needed:**\n\nAn 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.\n\n**After clicking Run AI Analysis (needs Anthropic key, ~$5 free credits):**\n\nFour agents run in sequence, each building on the previous output.\n\nThe 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.\n\nEverything is editable. Click Edit on any AI output, make your changes, save, and revert to the original anytime. Both versions are stored.\n\n---\n\n## How Jobs Get Added\n\n**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.\n\nIf a URL does not load because a site blocks automated fetching, just copy and paste the job description text directly. Text mode works everywhere.\n\n**Auto Search** pulls from five free job boards simultaneously - Himalayas, Remotive, Jobicy, Arbeitnow, and Indeed RSS - with results scored and ready to review.\n\n---\n\n## Requirements\n\n- Python 3.11+\n- Node.js 18+\n- Anthropic API key for AI analysis (free $5 credits at console.anthropic.com)\n\n---\n\n## Setup\n\n**1. Clone**\n\n```bash\ngit clone https://github.com/your-username/jobhunter.git\ncd jobhunter\n```\n\n**2. Configure**\n\n```bash\ncp backend/.env.example backend/.env\n```\n\nOpen `backend/.env` and add your key:\n\n```\nANTHROPIC_API_KEY=sk-ant-your-key-here\n```\n\nTo 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.\n\n**3. Backend**\n\n```bash\ncd backend\npython -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\nuvicorn api.main:app --reload --port 8000\n```\n\nWindows: use `venv\\Scripts\\activate` instead. You should see `Application startup complete`.\n\n**4. Frontend**\n\nOpen a new terminal:\n\n```bash\ncd frontend\nnpm install\nnpm start\n```\n\nDashboard opens at http://localhost:3000.\n\nNote: Run the frontend and backend servers simultaneously in separate terminal instances\n---\n\n## First Thing To Do - Upload Your Resume\n\nBefore running AI analysis, upload your resume so agents use your actual experience rather than the sample placeholder.\n\nClick 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.\n\nIf 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.\n\n---\n\n## Customize for Your Profile\n\nOpen `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.\n\nOpen `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.\n\n---\n\n## Using the Dashboard\n\nPaste 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.\n\nSearch for jobs by clicking Search Jobs, entering a title and location, and clicking Search. Results from five boards appear automatically.\n\nRun 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.\n\nEdit 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.\n\nTrack applications using the Status dropdown on any job - New, Applied, Interviewing, Rejected, Offered.\n\n---\n\n## Run the Tests\n\n```bash\ncd backend\npython tests/test_jobhunter.py\n```\n\nExpected: `ALL 50 TESTS PASSED - 0 failures`\n\nCovers 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.\n\n---\n\n## Adding a New Job Source\n\nOpen `backend/tools/job_scraper.py` and add a function:\n\n```python\ndef scrape_myboard(query: str, limit: int = 10) -> List[Dict]:\n    jobs = []\n    resp = requests.get(f\"https://myboard.com/api/jobs?q={query}\", timeout=15)\n    for job in resp.json().get(\"results\", [])[:limit]:\n        jobs.append({\n            \"title\": job[\"title\"],\n            \"company\": job[\"company\"],\n            \"location\": job.get(\"location\", \"Remote\"),\n            \"url\": job[\"url\"],\n            \"description\": job[\"description\"],\n            \"salary\": job.get(\"salary\", \"\"),\n            \"source\": \"myboard\",\n            \"posted_date\": job.get(\"date\", \"\"),\n        })\n    return jobs\n```\n\nThen add it to the `SOURCES` list inside `fetch_all_jobs()`. Deduplication and scoring happen automatically.\n\n---\n\n## API Reference\n\n| Endpoint | Method | Description |\n|---|---|---|\n| GET /health | GET | Health check |\n| GET /api/jobs | GET | List jobs with optional status, min_score, source filters |\n| GET /api/jobs/{id} | GET | Single job with all AI outputs and edits |\n| PATCH /api/jobs/{id} | PATCH | Update status, notes, favorite |\n| PATCH /api/jobs/{id}/edit | PATCH | Save user edits to resume, email, or strategy |\n| POST /api/jobs/paste | POST | Add job by URL or pasted text |\n| POST /api/jobs/{id}/analyze | POST | Trigger 4-agent AI crew in background |\n| POST /api/search | POST | Search all five free job boards |\n| POST /api/resume/upload | POST | Upload resume PDF or DOCX |\n| GET /api/resume | GET | Get current resume profile and preview |\n| DELETE /api/resume | DELETE | Remove uploaded resume |\n| GET /api/stats | GET | Dashboard statistics |\n\n---\n\n## Project Structure\n\n```\njobhunter/\n  backend/\n    agents/\n      agents.py        4 CrewAI agent definitions and resume cache logic\n      tasks.py         Task definitions with context chaining\n      crew.py          Crew orchestrator\n    api/\n      main.py          All endpoints including resume upload and edit save\n    models/\n      database.py      Job, SearchRun, ResumeProfile models\n    tools/\n      resume_parser.py PDF and DOCX text extraction\n      job_extractor.py URL fetch and text parser for paste mode\n      job_scraper.py   Five free job board scrapers\n      ats_scorer.py    ATS keyword scoring engine\n    tests/\n      test_jobhunter.py  50 tests\n    requirements.txt\n    .env.example\n  frontend/\n    src/\n      App.jsx\n      App.css\n      components/\n        ResumeUploader.jsx\n        SearchPanel.jsx\n        JobList.jsx\n        JobDetail.jsx\n        StatsBar.jsx\n  docker-compose.yml\n  README.md\n```\n\n---\n\n## Troubleshooting\n\nBackend does not start: make sure the virtual environment is active (`source venv/bin/activate`) and dependencies are installed (`pip install -r requirements.txt`).\n\nDashboard shows \"Failed to load jobs\": confirm the backend is running. Test with `curl http://localhost:8000/health` - should return `{\"status\":\"ok\"}`.\n\nURL paste returns nothing: some sites block automated fetching. Copy and paste the job description text directly instead. This works everywhere.\n\nAI analysis not appearing: check `ANTHROPIC_API_KEY` in `backend/.env`. Check the backend terminal for error messages.\n\nATS scores look off: edit `CANDIDATE_PROFILE` in `backend/tools/ats_scorer.py` with your real skills.\n\nResume not affecting AI output: make sure your PDF is text-based not a scanned image. Try uploading the DOCX version.\n\n---\n\n## What Is Coming Next\n\nDaily 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.\n\nThis is version 1. Will keep shipping.\n\n---\n\n## License\n\nMIT\n","readmeExcerpt":"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 ","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"git clone https://github.com/your-username/jobhunter.git\ncd jobhunter"},{"language":"bash","snippet":"cp backend/.env.example backend/.env"},{"language":"text","snippet":"ANTHROPIC_API_KEY=sk-ant-your-key-here"},{"language":"bash","snippet":"cd backend\npython -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\nuvicorn api.main:app --reload --port 8000"},{"language":"bash","snippet":"cd frontend\nnpm install\nnpm start"},{"language":"bash","snippet":"cd backend\npython tests/test_jobhunter.py"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[],"languages":["python"],"docsSourceLabel":"GITHUB OPENCLEW","editorialOverview":"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","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":368,"uniquenessScore":70,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-05-18T06:44:54.063Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-05-18T06:44:54.063Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T00:59:42.930Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/github_openclew","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}