Avni is an intelligent recruitment and career assistance agent built using Streamlit, LangChain, and OpenAI. It is designed to act as an advanced AI assistant for both recruiters evaluating candidates and job seekers looking to optimize their resumes for specific roles.
Avni provides a comprehensive suite of tools to analyze and interact with resumes:
- Resume Analysis: Upload your resume (PDF/TXT) and evaluate it against standard role requirements (e.g., AI/ML Engineer, Full Stack Developer) or a Custom Job Description. It scores your profile semantically and identifies missing skills.
- Resume Q&A: Ask any context-driven questions directly about the uploaded resume, powered by Retrieval-Augmented Generation (RAG).
- Interview Preparation: Automatically generate personalized interview questions based on the candidate's exact strengths and weaknesses. You can select specific question types (e.g., Coding, Theoretical, System Design) and difficulty levels.
- Actionable Improvements: Get deep insights on why a resume is falling short on certain skills, with highly specific, paragraph-by-paragraph suggestions and "before/after" examples.
- Resume Generation: Regenerate a highly optimized version of your resume tailored to your target job, filling in the gaps with intelligently expanded context.
Below is the high-level system architecture of Avni:
graph TD
User([User / Job Seeker]) -->|Uploads Resume & Job Description| UI[Streamlit UI - Frontend]
UI -->|Sends Input & API Key| Agent{ResumeAnalysisAgent}
subgraph Data Processing Pipeline
Agent -->|Document parsing| DocLoader[Document Loader <br/> PyPDF2 / TXT]
DocLoader --> |Text Extracted| Splitter[LangChain Text Splitter]
Splitter --> |Chunks| Embeddings[OpenAI Embeddings]
Embeddings --> |Vectors| FAISS[(FAISS Vector Database)]
end
subgraph AI Modules & Agents
Agent --> |Job Description| JDExtractor[Skill Extractor Agent]
JDExtractor --> |Target Skills| Analyzer[Semantic Skill Analyzer]
FAISS --> |RAG Context| Analyzer
Analyzer --> |GPT-4o| Scoring[Scoring & Weakness Profiling]
FAISS --> |RAG Context| QA[Resume Q&A Chain]
Scoring --> InterviewGen[Interview Question Generator]
Scoring --> Optimizer[Resume Optimizer & Generator]
end
Scoring --> UI
QA --> UI
InterviewGen --> UI
Optimizer --> |Final Improved Resume| UI
UI -->|Presents Analysis, Scores, & Artifacts| User
- Frontend (Streamlit): App handles file uploads, user configuration (API Keys), and renders a beautiful UI across 5 modular tabs.
- Text Processing: Resumes are converted into raw text via
PyPDF2and then cleanly chunked usingRecursiveCharacterTextSplitter. - Vector Embeddings (FAISS): The chunks are processed via OpenAI Embeddings and stored in a FAISS vector store, forming the memory backbone of the RAG system.
- Intelligent Retrieval: When a job description is provided, a skill-extraction LLM identifies the target requirements. The
RetrievalQAsemantic similarity engine evaluates how well the resume content matches these target skills, assigning an automated score. - Generative Feedback: Weaknesses are passed into another GPT-4o chain that fabricates actionable advice, while the resume generation agent weaves those missing attributes back into a newly crafted resume using strict context boundaries.
You will need the following installed:
- Python 3.8+
- An active OpenAI API Key (using the
gpt-4omodel space)
-
Clone this repository to your local machine.
-
Install the necessary Python dependencies:
pip install -r requirements.txt
-
Run the Streamlit application:
first put openAI api key on the frontend. streamlit run app.py
-
Access the web interface at
http://localhost:8501. Enter your OpenAI API key in the sidebar to begin.