HireAI is a web app for intelligent resume screening: upload resumes, optionally pair them with a job description, and get structured ATS-style scores, strengths, weaknesses, and improvement suggestions powered by the Google Gemini API.
- Multi-resume upload with text extraction (PDF and other supported formats via the upload pipeline)
- Job description context for more relevant analysis.
- Candidate dashboard with filtering, sorting, search, and score thresholds.
- Compare up to three candidates side by side.
- Detailed candidate view: score breakdown, skill radar, grammar notes, bullet rewrites, and more...
- React 18 + TypeScript
- Vite 5 (dev server defaults to port 8080)
- Tailwind CSS + shadcn/ui (Radix primitives)
- @google/genai for Gemini
- Vitest and Testing Library for unit tests
- Playwright (config uses Lovable agent defaults)
- Node.js 20+ (recommended) or Bun
- A Google AI Studio API key with Gemini access
-
Clone the repository and install dependencies:
npm install
Or with Bun:
bun install
-
Create a local environment file in the project root:
# .env.local (or .env — both are gitignored by pattern) VITE_GEMINI_API_KEY=your_key_hereVite only exposes variables prefixed with
VITE_to the browser. Never commit real API keys. -
Start the development server:
npm run dev
Open the URL shown in the terminal (by default
http://localhost:8080).
| Command | Description |
|---|---|
npm run dev |
Start Vite in development mode |
npm run build |
Production build to dist/ |
npm run preview |
Preview the production build |
npm run lint |
Run ESLint |
npm run test |
Run Vitest once |
npm run test:watch |
Vitest in watch mode |
src/pages/— route-level pages (e.g. main screening flow)src/components/— UI and feature componentssrc/lib/gemini.ts— Gemini client andanalyzeResumelogicpublic/— static assets
- Resume text is sent to Google’s API for analysis. Use only data you are allowed to process and follow your organization’s policies.
- Keep
VITE_GEMINI_API_KEYout of version control and rotate keys if they leak.
See LICENSE in this repository.