Skip to main content
All use casesUse Case

Screen resumes and match candidates with retrieval-grounded LLM scoring.

Resume screening and candidate matching are RAG problems with a scoring layer on top: retrieve the relevant job requirements and candidate history, then have the LLM produce a structured score. The kit's structured-output extraction pattern and per-key tracking map directly onto this.

FastAPIOpenAICeleryPostgreSQLPydantic v2Redis

The usual pain points

  • Extracting structured candidate data from unstructured resume formats
  • Matching candidates against job requirements consistently, not ad-hoc
  • Processing large batches of applications without blocking the API
  • Tracking usage per recruiter or per job posting for reporting

How the kit solves them

  • Structured LLM extraction with Pydantic v2 schemas for consistent resume parsing
  • RAG query pattern reused to retrieve and rank candidates against job requirements
  • Celery workers process application batches asynchronously
  • Per-API-key tracking supports per-recruiter or per-req usage reporting

Example implementation

main.py
@celery.task
def screen_application(application_id: str, job_id: str):
    resume_text = storage.read_text(application_id)
    extracted = llm.extract(resume_text, output_schema=CandidateProfile)
    job_reqs = rag.query(question="Key requirements", collection=job_id, top_k=3)
    score = llm.chat(messages=build_match_prompt(extracted, job_reqs), track_tokens=True)
    db.save_score(application_id, score.content)

Ready to build your ai recruiting backend?

FastAPI AI Kit ships with everything shown above, pre-configured and production-ready. Clone the repo and start building in minutes.

Ready to ship your AI backend this weekend?

Join developers who skipped weeks of boilerplate and went straight to building.

Read the docs
No subscriptions · One-time payment · Lifetime updates