HireSense is an AI-powered resume analysis web application that uses a Retrieval-Augmented Generation (RAG) pipeline to semantically search and summarize resumes. The system enables HR users to upload PDF resumes, retrieve relevant candidates based on job requirements, and generate concise, LLM-based summaries to support faster and more accurate screening decisions.
The recruitment process often requires HR teams to manually review a large number of resumes, which is time-consuming, repetitive, and prone to human bias. As a computer engineering student with a strong interest in AI and backend systems, I wanted to explore how Large Language Models (LLMs) and vector search can be applied to solve real-world problems. HireSense was created to experiment with an AI-powered resume analysis system that can automatically index resumes, retrieve relevant candidates based on job requirements, and generate concise summaries to support faster and more informed hiring decisions.
- Resume Upload & Parsing : Upload PDF resumes and automatically extract text content for further processing.
- Semantic Resume Search (RAG-based) : Search resumes using natural language queries (e.g., “AngularJS developer”) with vector similarity instead of keyword matching.
- AI-Powered Resume Summarization : Use LLMs to summarize candidate profiles, highlight matching skills, relevant experience, and potential gaps.
- Interactive Web Interface : A modern web UI that allows HR users to upload resumes, search candidates, and view AI-generated results in real time.
Python | CSS | JavaScript | Next.js | Uvicorn | FastAPI | LangChain | Faiss | Google Gemini | HuggingFace | Pydantic
- How to design and implement an end-to-end Retrieval-Augmented Generation (RAG) pipeline
- Practical use of vector databases (FAISS) for semantic document retrieval
- Integrating LLMs into backend services with controlled prompts and context management
- Designing clean API architectures for AI-driven applications
- Bridging frontend and backend systems in a full-stack AI project
HireSense/
├── frontend/ # Next.js Frontend (UI Layer)
│ ├── src/app/
│ │ ├── page.js # Landing page
│ │ ├── workspace/
│ │ │ └── page.js # Main workspace UI (upload, search, analyze)
│ │ └── layout.js
│ ├── public/ # Static assets
│ └── package.json
│
├── backend/ # FastAPI Backend (API & AI Layer)
│ ├── app/
│ │ ├── main.py # FastAPI entry point
│ │ │
│ │ ├── api/ # API routes
│ │ │ ├── health.py # Health check endpoint
│ │ │ ├── resumes.py # Resume upload / list / delete APIs
│ │ │ ├── search.py # Resume search based on job requirements (RAG-based)
│ │ │ └── analyze.py # Resume analysis (RAG-based)
│ │ │
│ │ ├── core/ # Core configuration
│ │ │ ├── config.py # Environment & settings
│ │ │ └── logging.py # Logging configuration
│ │ │
│ │ ├── schemas/ # Pydantic schemas
│ │ │ ├── resume.py # Resume-related schemas
│ │ │ ├── search.py # Search schemas
│ │ │ └── analyze.py # Analysis request/response schemas
│ │ │
│ │ ├── services/ # Business & AI logic
│ │ │ ├── parsing/
│ │ │ │ └── pdf_parser.py # PDF resume parser
│ │ │ │
│ │ │ ├── chunking/
│ │ │ │ └── chunker.py # Resume text chunking
│ │ │ │
│ │ │ ├── embedding/
│ │ │ │ └── embeddings.py # Transform Chunked Text --> vector
│ │ │ │
│ │ │ ├── vector_store/
│ │ │ │ └── faiss_store.py # FAISS vector database
│ │ │ │
│ │ │ ├── llm/
│ │ │ │ ├── provider.py # LLM provider (Gemini)
│ │ │ │ └── .env # LLM API keys
│ │ │ │
│ │ │ └── rag/
│ │ │ └── rag_chain.py # RAG pipeline & agent
│ │ │
│ │ └── utils/ # Utility helpers
│ │ └── file_handler.py # File save / delete helpers
│ │
│ ├── requirements.txt
│ └── .env # Backend environment variables
│
├── .gitignore
└── README.md










