Turn a job description into a structured, reviewable sourcing project.
Generate role-specific searches, validate public results, enrich selected profiles, rank candidates, and export a recruiter-owned shortlist.
Open the live prototype · Run locally · Deployment notes
Important
This repository is a sourcing prototype, not an autonomous hiring system. A recruiter remains responsible for search strategy, candidate relevance, fair evaluation, outreach, and compliance with each data source's terms.
- Paste a job description and choose General, Engineering, or Legal sourcing mode.
- Parse the role into structured criteria.
- Generate Boolean and source-specific searches.
- Run selected searches through Serper and validate the returned URLs.
- Import or enrich selected public profiles.
- Apply ranking factors, recruiter notes, and statuses.
- Export a reviewed candidate set to CSV.
Projects are stored in the browser's localStorage; there is no shared account database in this repository.
- Role-aware search generation for general, engineering, and legal sourcing
- Search presets, selection controls, and request-cost estimates
- Job-description parsing with an OpenAI-assisted route and a local fallback
- Serper-backed discovery with URL/result validation
- Manual candidate import and public-page enrichment
- Candidate ranking factors, recruiter statuses, recommended actions, and export filters
- Local project persistence and CSV export
- Unit coverage for search generation, ranking, parsing, validation, import, cost, and export logic
flowchart LR
JD["Job description"] --> Parse["Criteria parser"]
Parse --> Searches["Search generator"]
Searches --> Serper["Serper API"]
Serper --> Validate["Result validation"]
Validate --> Review["Recruiter review"]
Review --> Enrich["Optional public-page enrichment"]
Enrich --> Rank["Ranking factors"]
Rank --> CSV["CSV export"]
Review <--> Local["Browser localStorage"]
git clone https://github.com/VicenteBarrientos/resumex-sourcing-copilot.git
cd resumex-sourcing-copilot
npm install
cp .env.example .env.local
npm run devOn Windows PowerShell, replace the copy command with:
Copy-Item .env.example .env.localConfigure the integrations you want to use:
SERPER_API_KEY="your_serper_api_key_here"
OPENAI_API_KEY="your_openai_api_key_here"Open http://localhost:3000.
| Command | Purpose |
|---|---|
npm run dev |
Start the development server. |
npm test |
Run the TypeScript unit suite. |
npm run lint |
Run ESLint. |
npm run build |
Create a production build. |
npm run start |
Serve a completed build. |
- Job descriptions, saved projects, candidates, and recruiter notes are stored locally in the current browser.
- Serper receives generated search queries when a search is executed.
- OpenAI receives role or selected public-profile context only when the corresponding AI-assisted action is used.
- Clearing the site's browser storage removes locally saved projects.
Do not paste confidential candidate information unless your deployment, vendor agreements, and privacy process permit it.
The UI does not send outreach or make hiring decisions. Optional enrichment does retrieve public pages selected by the user.
Before exposing a fork to untrusted traffic, add authentication, request quotas, durable rate limiting, and outbound-request protections that block private/internal network targets. Without those controls, public API routes can consume paid provider keys or be abused as an outbound fetch service.
app/ UI and API routes
components/ Shared interface components
lib/
search-generator Search strategy generation
candidate-* Validation, ranking and export
jd-parse Job-description criteria
projects Browser persistence
*.test.ts Unit tests
- ResumeX — candidate job-search workspace
- TalentX Recruiting — recruiting website and portfolio
