AI‑powered resume ingestion, job analysis, candidate/job matching, and outreach drafting built on Next.js, SQLite, and NVIDIA Kimi.
- Next.js (App Router, React 19)
- better-sqlite3 (local persistence)
- LLM calls via NVIDIA
Kimi(HTTP client inlib/kimi.js) - SerpApi for job search imports
git clone <your-repo-url>
cd agent-development
cp .env.example .env.local
npm install
npm run devApp runs at http://127.0.0.1:3000.
NVIDIA_API_KEY– required for resume parsing, job analysis, matching, and email generation.SERPAPI_KEY– required for job search import.DB_PATH– optional; path to the SQLite file. Defaults to./jobhunter.db. The app will create parent folders if needed.
npm run dev– start dev server (Turbopack).npm run build– production build.npm run start– serve the production build.
- Resume upload:
/resume→POST /api/resume→ PDF parsed → LLM (parseResume) → saved toresumes. - Job analysis:
/jobs→POST /api/jobs→ LLM (analyzeJob) → saved tojobs. - Matching:
/match→POST /api/matchwithresume_id+job_id→ LLM (matchResumeToJob) → saved tomatches. - Outreach:
/email→POST /api/emailwithmatch_id+tone→ LLM (generateEmail) → saved toemails. - Search import:
/search→POST /api/serpapi(Google Jobs via SerpApi) → optional import to/api/jobs.
- The database file is local; use
DB_PATHto point to a writable location in your deployment environment. - Resume uploads are limited by PDF parseability; ensure PDFs contain text (not pure scans).
- API keys are required for end‑to‑end functionality; without them, LLM-backed routes will fail.
- If you see
pdf-parsetype errors, ensureNVIDIA_API_KEYis set and the uploaded file is a real PDF with text. - Port conflicts on
3000: stop other Next.js instances or runnpm run dev -- --port 3001.