AI-powered candidate screening for light industrial staffing.
Ingests applicants from Indeed / LinkedIn via a Chrome extension, scores them with embeddings + Claude, and presents them in a swipe-style review dashboard.
Chrome Extension → POST /api/ingest → Backend (Fastify + Prisma)
│
BullMQ queue
│
AI Scoring Worker
├── OpenAI embeddings (match score)
└── Claude (willingness score + summary)
│
PostgreSQL + R2
│
React frontend (swipe deck)
- Node 20+
- Docker (for Postgres + Redis)
docker-compose up -dcd backend
cp .env.example .env # fill in API keys
npm install
npm run db:push # apply schema to Postgres
npm run dev # API on :3000In a second terminal:
npm run worker # BullMQ scoring workercd frontend
npm install
npm run dev # Vite on :5173- Open
chrome://extensions - Enable Developer mode (top right)
- Click Load unpacked → select the
extension/folder - Pin the extension and set the API URL to
http://localhost:3000
Visit http://localhost:5173/parse to paste a candidate profile and validate AI scoring without the extension.
| Key | Description |
|---|---|
DATABASE_URL |
Postgres connection string |
REDIS_URL |
Redis connection string |
OPENAI_API_KEY |
For text-embedding-3-small |
ANTHROPIC_API_KEY |
For Claude (scoring + outreach) |
R2_ACCOUNT_ID |
Cloudflare R2 account ID |
R2_ACCESS_KEY_ID |
R2 access key |
R2_SECRET_ACCESS_KEY |
R2 secret key |
R2_BUCKET_NAME |
R2 bucket name (default: recruiting-pdfs) |
recruitimation/
├── backend/ Node.js + Fastify API + BullMQ worker
│ ├── prisma/ Database schema
│ └── src/
│ ├── routes/ API endpoints
│ ├── workers/ BullMQ scoring worker
│ ├── ai/ Embeddings, scoring, draft generation
│ └── storage/ Cloudflare R2
├── frontend/ React + Vite + Tailwind
│ └── src/
│ ├── views/ SwipeDeck, ResultsGrid, OutreachFlow, JobManager, PasteAndParse
│ ├── components/ CandidateCard, ScoreChip, PdfViewer
│ └── api/ API client
└── extension/ Chrome Manifest V3
├── content/ indeed.js, linkedin.js
├── popup/ Extension popup UI
├── interceptor.js LinkedIn XHR/fetch proxy (page context)
└── background.js Service worker
| Phase | Status | Description |
|---|---|---|
| 1 | ✅ Done | Paste & Parse MVP — validate AI scoring |
| 2 | ✅ Done | Core API, DB schema, swipe deck |
| 3 | ✅ Done | Chrome extension (Indeed + LinkedIn) |
| 4 | ✅ Done | Outreach draft + confirm flow |
| 5 | ✅ Done | ATS logging + CSV export |
| 6 | 🔲 Next | LinkedIn DOM hardening, pin remind cron |
| 7 | 🔲 Next | PCF PDF generation |
| 8 | 🔲 Next | Auth (Clerk / Auth.js) |