Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

InterviewAssistant – Grounded RAG-Based Resume & Interview System

A retrieval-augmented generation system that helps job seekers tailor resumes, draft grounded cover letters, and generate role-specific interview questions using structured candidate knowledge aligned to a job description.

Unlike generic LLM prompts, this system separates retrieval from generation to prevent hallucinated experience and ensure claims are backed by actual candidate evidence.


🚀 What This Solves

Generic LLMs:

  • Blend job description requirements with invented experience
  • Hallucinate tools, metrics, or skills
  • Produce generic cover letters

This system:

  • Stores structured candidate experience in a persistent FAISS vector store
  • Builds an ephemeral index of each uploaded job description
  • Performs two-stage retrieval (JD → Candidate)
  • Applies strict grounding guardrails before LLM generation

🏗 Architecture

User Uploads Job Description
↓
Ephemeral JD Vector Index (FAISS)
↓
Retrieve Key JD Requirements
↓
Retrieve Matching Candidate Evidence (Persistent FAISS)
↓
Construct Grounded Prompt with Evidence Sections
↓
Groq LLaMA 3.1 8B (API)
↓
Interview Questions / Cover Letter

🧠 Core Design Decisions

Persistent Candidate Knowledge Base

  • Resume, work experience, projects, STAR stories
  • Embedded using sentence-transformers
  • Stored in FAISS
  • Rebuilt only when candidate docs change

Ephemeral JD Index

  • Built per uploaded JD
  • Ensures role-specific requirement extraction
  • Prevents cross-role contamination

Two-Stage Retrieval

  1. Retrieve important JD requirement chunks
  2. Retrieve aligned candidate evidence

This prevents hallucinated claims and enforces grounding.

Grounding Guardrails

  • Explicit system rules
  • Structured evidence formatting
  • No invention of unsupported experience
  • Gap awareness if JD requirement lacks supporting evidence

API-Based Generation

  • Groq LLaMA 3.1 8B
  • Fast inference
  • Reduced local resource usage
  • Controlled output token limits for cost efficiency

🛠 Tech Stack

  • Python
  • Streamlit
  • LangChain
  • FAISS (local vector store)
  • SentenceTransformers (embeddings)
  • Groq API (LLaMA 3.1 8B)
  • python-dotenv

⚙️ Setup

1. Clone repository

git clone https://github.com/99anjalipai/InterviewAssistant.git
cd InterviewAssistant

2. Create virtual environment

python -m venv rag_env
rag_env\Scripts\activate

3. Install dependencies

pip install -r requirements.txt

4. Add GROQ API Key

Create a .env file in the project root:

GROQ_API_KEY=your_api_key_here

5. Build Candidate Vector Store

Place your candidate documents (resume, work experience, projects, STAR stories) inside:

candidate_docs/

Then run:

python -m ingest.build_candidate_index

This process will:

  • Chunk your documents
  • Generate embeddings using sentence-transformers
  • Create a persistent FAISS index inside:
stores/candidate_faiss/

6. Run the Application

streamlit run app.py

Open the provided local URL in your browser to start using the application.

📁 Project Structure

  • app.py – Streamlit frontend
  • rag_engine.py – Retrieval and grounding pipeline
  • scripts/llm_groq.py – Groq LLM wrapper
  • prompts.py – Prompt templates for generation
  • ingest/ – Candidate index builder
  • candidate_docs/ – Private candidate knowledge base (gitignored)
  • stores/ – FAISS vector store (gitignored)

📈 Future Improvements

  • Resume diff highlighting against JD
  • Skill coverage scoring
  • Explicit gap analysis report
  • Multi-JD comparison
  • Conversational interview simulation mode
  • Deployment version (Docker or Streamlit Cloud)

🔒 Notes

  • Candidate documents and vector stores are excluded from version control.
  • API usage is token-limited to control cost.
  • Retrieval parameters are tuned for grounding accuracy and efficiency.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages