AI Resume Screening Web App

Job ID: 40104622

Budget: $250 – $750 USD

I need a production-ready web application built with React on the front-end and Node.js on the back-end that will let recruiters upload or drag-and-drop resumes, have them parsed automatically, and instantly receive a ranked list of candidates against a chosen job description. The workflow is straightforward and must stay that way: one recruiter role, a clean login, a single dashboard, and no clutter beyond what is required to parse and rank.

Core functionality
The app has two pillars. First, accurate resume parsing that extracts contact details, skills, education, experience, and any other relevant fields into a structured JSON record. Second, candidate ranking that scores each applicant’s fit for the job using OpenAI’s LLM for semantic comparison combined with a K-Nearest Neighbours model for final scoring. Job matching and other HR features are outside the initial scope, but the codebase should be organised so they could be slotted in later without major refactoring.

Technical expectations
• React (preferably with TypeScript and a component library such as MUI for rapid, consistent UI).
• Node.js/Express API with modular routes for parsing, ranking, authentication, and file handling.
• OpenAI API integration for embedding generation or text comparison.
• A KNN implementation (Python microservice or JS module—open to the cleanest solution) driving the ranking logic.
• JWT-based auth limited to the recruiter role.
• MongoDB or PostgreSQL for structured candidate storage.
• Containerised deployment (Docker).
• Clean architecture and commented code, ready for staging and production environments.

Deliverables
- Full source code for front-end and back-end, in separate folders.
- README covering setup, environment variables (OpenAI key, DB), and deployment steps.
- Postman or Swagger collection documenting each endpoint.
- Sample parsed JSON output and ranking output for at least five test resumes.
- Deployed demo link or Docker Compose file proving the stack spins up locally.

Acceptance criteria
1. A recruiter can drag-and-drop up to 20 resumes (PDF/DOCX) and receive parser output in under 10 seconds per file.
2. The ranking list must appear sorted by relevance, with scores, and stay stable on page refresh.
3. Parsing accuracy: at least 90 % of key fields correctly extracted in the provided test set.
4. No unhandled errors in console or server logs during a standard upload/rank cycle.
5. All environment variables, secrets, and API keys excluded from the repository via .env and .gitignore.

With these in place, I’ll be able to hand the tool directly to recruiters and start shortlisting candidates immediately.