← Projects

Talent Intelligence

A two-person CV-screening backend. LangGraph agents match job requirements to evidence in a CV, check claims against public sources, and give a human reviewer a scored, explainable result.

RoleCore backend developer · Team of 2
Year2026
ToolsFastAPI · Celery · LangGraph · pgvector · RabbitMQ

Problem

A human reviewer needs to connect job requirements to evidence in a CV, distinguish candidate claims from public-source checks, and understand the reasoning behind a rubric score.

Parsing, embedding and external lookups are slow and failure-prone, so the API accepts submissions while background jobs handle processing.

What I built

Team of 2. I owned the system architecture, document parsing and chunking, the RabbitMQ/Celery pipeline, R2/pgvector storage, and much of the CV scoring workflow.

Architecture

FastAPI queues submissions through RabbitMQ for Celery/LangGraph workers, with R2 for documents and PostgreSQL/pgvector for records and embeddings. Job-description embeddings query CV chunks by cosine distance to retrieve evidence for one application, not rank a pool of candidates. Workers call external embedding, LLM, GitHub, and web-search services.

  • Async by design: submission and processing separated via RabbitMQ/Celery.
  • Evidence first: application-scoped pgvector retrieval, rubric scores backed by cited CV passages.
  • Built for review: public-source claims are flagged for a human reviewer, never treated as fact.
FastAPI sends work through RabbitMQ to a Celery/LangGraph worker. Below, the worker connects to R2 document storage and PostgreSQL/pgvector. It also calls external embedding, LLM, GitHub, and web-search services.

Key decisions & trade-offs

  • Queue-based processing keeps work outside the request cycle, at the cost of retry handling and job-state complexity.
  • Retrieval is scoped to one application: it finds relevant passages, not proof that a requirement is satisfied.
  • Scoring is separate from the LLM evidence reviewer, which adds notes and risk flags only, without changing the score.
  • Repository checks verify existence and metadata, not authorship or a candidate’s contribution.

Results

Working prototype. Evaluation set and latency measurements in progress.

  • Implemented — CV parsing, profile/rubric extraction, retrieval, public-source checks, and scoring with persisted evidence.

What I’d improve

  • Build a labeled evaluation set for retrieval relevance, rubric scoring, and public-source checks.
  • Measure per-stage latency and failures, including malformed documents, unavailable providers, and retries.
  • Strengthen provenance and privacy controls, with a correction path for inaccurate claims and explicit human review.
Next project

VoiceReaderAI