Skip to content

Latest commit

 

History

History
132 lines (99 loc) · 4.58 KB

File metadata and controls

132 lines (99 loc) · 4.58 KB

HireIQ — Autonomous Hiring Intelligence Platform

AI-powered candidate screening that reasons about candidates like a senior engineer — not just keyword matching.

Python 3.12 FastAPI License: MIT


What It Does

Feature How It Works
Adversarial Detection Cross-validates listed skills against project evidence. Catches keyword stuffing and AI-generated content.
8-Dimension Scoring Evaluates skill depth (not presence) across technical depth, production experience, stack alignment, and 5 more dimensions.
Growth Trajectory Analyzes career progression — a fast-learning fresher can outrank a stagnating mid-level.
Candidate Q&A RAG-powered chat: ask "Who has the deepest RAG experience?" and get cited answers.
Interview Questions Generates questions that target each candidate's specific weak spots — not templates.
Bias Audit Score distributions by university, location, and experience level. Every decision is logged and auditable.

Architecture

Architecture

Pipeline: Parse JD → Parse Resumes → Score (8 dims) → Rank → Interview Qs → Vector Ingest


Quick Start

Docker (recommended)

cp .env.example .env       # add your GOOGLE_API_KEY
make docker-up             # starts PostgreSQL, Redis, API, Frontend

Local Development

make install                             # install deps
docker compose up postgres redis -d      # start DB + cache
make api                                 # start backend (port 8000)
make frontend                            # start frontend (port 8501)

API Endpoints

Endpoint Method Description
/api/v1/upload POST Upload JD text + batch resumes (PDF/DOCX)
/api/v1/screen/{job_id} POST Start the screening pipeline
/api/v1/screen/{job_id}/status GET Poll pipeline progress
/api/v1/candidates/{job_id} GET Ranked candidate list
/api/v1/candidate/{id} GET Full candidate detail (scores, flags, questions)
/api/v1/chat POST RAG Q&A with citations
/api/v1/questions/{id} GET Personalized interview questions
/api/v1/report/{job_id}/bias GET Bias audit report

Scoring

Each candidate is scored 0–10 on 8 dimensions with chain-of-thought justifications:

  1. Technical Depth — system design, architecture patterns, algorithm complexity
  2. Project Complexity — production systems vs toy projects
  3. Stack Alignment — match with the JD's required technologies
  4. Production Experience — deployment, monitoring, incident response evidence
  5. Learning Velocity — speed of adopting new technologies
  6. Documentation Quality — how clearly the resume communicates achievements
  7. Domain Relevance — industry and domain experience match
  8. Communication Clarity — ability to articulate technical decisions

HireIQ Score

composite     = weighted_average(8 dimension scores)
growth_bonus  = velocity_score × 0.15
adversarial   = (1 − authenticity) × −2.0
hireiq_score  = clamp(composite + growth_bonus + adversarial, 0, 10)

Tech Stack

Layer Technology
Orchestration LangGraph
LLM Google Gemini 2.5 Flash
Vector DB ChromaDB (cosine similarity)
Embeddings Sentence-Transformers (all-MiniLM-L6-v2)
PDF Parsing PyMuPDF + pdfplumber
Backend FastAPI (async)
Database PostgreSQL 16
Cache Redis 7
Frontend Streamlit
Storage Local disk (S3 optional)

Project Structure

src/
├── agents/          # 5 AI agents (parser, scorer, ranker, interview, chat)
├── api/             # FastAPI route handlers
├── models/          # SQLAlchemy ORM models
├── orchestrator/    # LangGraph state machine + node functions
├── schemas/         # Pydantic request/response models
├── services/        # Business logic layer
├── tools/           # PDF parser, adversarial detector, vector store, etc.
└── utils/           # Logging, embeddings, file handler

frontend/
├── app.py           # Streamlit entry point
└── pages/           # 6 pages (upload, dashboard, detail, chat, questions, audit)

tests/               # pytest test suites

License

MIT