Node.js CLI for exercising Hir3d CV ingestion and candidate search: parse CVs with Google Gemini, persist candidates in MySQL, store artifacts in Azure Blob Storage, and run responsive or AI-ranked searches.
Development and demo utility — not deployed to Vercel.
License: MIT — Copyright (c) 2025-2026 Hir3d
- Node.js 22
- pnpm 11.13.1 (via Corepack)
- MySQL
- Azure Blob Storage
- Google AI API key
corepack enable
pnpm install --frozen-lockfile
cp .env.example .envConfigure .env, then:
pnpm cli| Command | Purpose |
|---|---|
pnpm cli |
Interactive command menu |
pnpm upload-cv -- <path> |
Upload and process a CV |
pnpm search:create -- "<description>" |
Create a search from natural language |
pnpm search:responsive -- <search-id> |
Fast database search |
pnpm search:deep -- <search-id> |
AI-assisted candidate ranking |
pnpm build |
Compile TypeScript to dist/ |
pnpm start |
Run the compiled application |
Example:
pnpm upload-cv -- ./sample-cv.txtRequired values (see .env.example):
AZURE_STORAGE_CONNECTION_STRING— Azure Blob URL (account URL or SAS URL), not a classicDefaultEndpointsProtocol=...connection string. The env name is historical; the value is passed toBlobServiceClientas a URL (e.g.https://<account>.blob.core.windows.net/?sv=...&sig=...).MYSQL_HOST(required),MYSQL_PORT(default3306),MYSQL_USER(defaultroot),MYSQL_PASSWORD,MYSQL_DATABASE(defaulthir3d_db)GOOGLE_API_KEYVERBOSE(optional diagnostics)
migrate-database.ts at the repo root is a destructive internal tool (DROP TABLE). It is not exposed via package.json scripts. It requires CONFIRM_MIGRATE=yes to run and will wipe the CVs table — do not use unless you intend that.
| Repo | Role |
|---|---|
| hir3d-one/web | Marketing / portfolio site |
| hir3d-one/app | Recruiter dashboard |
| hir3d-one/upload | Candidate CV upload portal |