Skip to content

JosueAfouda/LLM-Resume-Matching-Engine

Repository files navigation

AI Resume Matching Engine + SaaS UI

Production-grade backend for Hotel GM resume matching with a minimal commercial UI for end-to-end operation.

What Is Included

  • Backend API + worker (FastAPI + RQ)
  • Resume ingestion pipeline (PDF/DOCX/TXT)
  • Semantic matching + deterministic structured ranking
  • Top-25 ranked shortlist output
  • SaaS-style frontend (Next.js) for:
    • workspace API-key entry
    • ingestion uploads + status monitoring
    • match execution + ranked results
    • recent match history

Repository Layout

  • app/: backend API, services, infrastructure adapters
  • worker/: asynchronous ingestion worker
  • migrations/: Alembic schema migrations
  • frontend/: Next.js TypeScript SaaS UI
  • docker/: Dockerfiles for API, worker, frontend
  • docker-compose.yml: full local stack orchestration
  • render.yaml: Render deployment blueprint (free tier)

Local Run (Full Stack)

  1. Ensure Docker is running.
  2. Start all services:
docker compose up --build -d
  1. Open:
  • UI: http://localhost:3000
  • API: http://localhost:8000
  1. In UI landing screen:
  • API Base URL: http://localhost:8000
  • Workspace API Key: change-me (or your configured API_KEY)

Core API Endpoints

  • GET /health
  • POST /resumes:ingest
  • GET /resumes/{resume_id}
  • GET /ingestion/{ingestion_job_id}
  • POST /match
  • GET /match/{job_id}
  • GET /matches/recent
  • GET /dashboard/summary

Protected endpoints use header:

X-API-Key: <API_KEY>

Environment Configuration

Backend (.env from .env.example):

  • API_KEY
  • DATABASE_URL
  • REDIS_URL
  • EMBEDDINGS_PROVIDER=local|openai
  • OPENAI_API_KEY (optional)
  • CORS_ALLOW_ORIGINS (comma-separated, include UI URL)

Frontend (frontend/.env.local):

  • NEXT_PUBLIC_API_BASE_URL (default http://localhost:8000)
  • NEXT_PUBLIC_API_KEY (optional prefill only; prefer entering at runtime)

Render Deployment (Free Tier)

render.yaml includes:

  • API web service (docker/Dockerfile.api)
  • Worker service (docker/Dockerfile.worker)
  • Frontend web service (docker/Dockerfile.frontend)
  • Free Postgres + free Key Value

Required checks after deploy:

  1. Set API CORS_ALLOW_ORIGINS to include frontend Render URL.
  2. Set frontend NEXT_PUBLIC_API_BASE_URL to API public URL.
  3. Validate flow: upload resume -> status completes -> run match -> open result details.

Quick Validation

  • docker compose ps shows all services Up
  • UI dashboard loads stats from /dashboard/summary
  • Ingestion page transitions statuses to COMPLETED
  • Match page returns ranked candidates and result detail view

About

Building a proprietary AI resume matching engine to improve recruiter efficiency and reduce manual sourcing.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors