Skip to content

muneeracodes/JobSense-AI-Career-Coach

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧠 JobSense β€” AI Career Coach

Upload your CV. Paste a job description. Get your match score, skill gap analysis, tailored interview talking points, and rewritten CV bullets β€” in under 10 seconds.

🎬 Live demo:

JobSense Demo

JobSense Screenshot

πŸ‘‰ Try JobSense Live β†’

Python Streamlit LangChain Groq FAISS License: MIT Live Demo


✨ What it does

Most people apply to jobs blindly β€” sending the same CV everywhere and hoping for the best. JobSense fixes that.

Upload your CV (PDF) and paste any job description. The app uses Retrieval-Augmented Generation (RAG) to cross-reference both documents via two independent FAISS vector stores, then produces a structured career report with:

Output What you get
πŸ“Š Match Score 0–100% score showing how well your CV fits the role
βœ… Matched Skills Skills you already have that the JD is asking for
❌ Skill Gaps Missing skills you need to develop or address
πŸ’ͺ Strengths Your strongest selling points for this specific role
πŸ’¬ Interview Talking Points 5 ready-to-use points tailored to this JD
✍️ Rewritten CV Bullets 3 bullets rewritten to match the job's language and priorities

πŸ—οΈ Architecture

CV (PDF)         ──► PyMuPDF ──► Text Chunks ──► HuggingFace Embeddings ──► FAISS Store A ──┐
                                                                                              β”œβ”€β”€β–Ί Similarity Search
Job Description  ──► Splitter ──► Text Chunks ──► HuggingFace Embeddings ──► FAISS Store B β”€β”€β”˜
                                                                                              β”‚
                                                                          Retrieved Context ───
                                                                                              β–Ό
                                                              System Prompt + RAG Context ──► Llama 3.3 70B (Groq)
                                                                                              β”‚
                                                                                              β–Ό
                                                                           Pydantic Parser ──► Structured JSON
                                                                                              β”‚
                                                                                              β–Ό
                                                                               Streamlit UI ──► You

Why two FAISS stores? Most RAG tutorials query a single document. JobSense cross-references two separate vector stores simultaneously β€” querying your CV against the job description's requirements. This is the same pattern used in enterprise systems that match user profiles against policy or requirements databases.


πŸ› οΈ Tech Stack

Layer Technology Purpose
LLM Llama 3.3 70B via Groq Ultra-fast inference for structured analysis
Vector DB FAISS (local, CPU) Zero cost, zero latency, no external service needed
Embeddings sentence-transformers (HuggingFace) Local embeddings β€” no API key needed
Document parsing PyMuPDF Reliable text extraction from real-world PDFs
Output schema Pydantic v2 Guarantees structured JSON every time
Orchestration LangChain 0.3 LCEL Clean pipeline: prompt β†’ llm β†’ parser
UI Streamlit 1.45 Deployed and shareable in minutes

πŸ“ Project Structure

JobSense-AI-Career-Coach/
β”œβ”€β”€ app.py              # Streamlit UI β€” upload, report rendering, buttons
β”œβ”€β”€ ingest.py           # PDF/text β†’ chunks β†’ embeddings β†’ FAISS vector store
β”œβ”€β”€ generate.py         # Retrieval chain + Llama 3.3 70B + structured output
β”œβ”€β”€ schema.py           # CareerReport Pydantic model (the JSON contract)
β”œβ”€β”€ requirements.txt    # All dependencies pinned
β”œβ”€β”€ .env                # Your GROQ_API_KEY (never commit this)
β”œβ”€β”€ .gitignore          # Excludes .env and __pycache__
└── README.md

⚑ Run Locally

1. Clone the repo

git clone https://github.com/muneeracodes/JobSense-AI-Career-Coach.git
cd JobSense-AI-Career-Coach

2. Create a virtual environment

python -m venv venv
source venv/bin/activate        # Mac / Linux
venv\Scripts\activate           # Windows

3. Install dependencies

pip install -r requirements.txt

4. Add your Groq API key

Create a .env file in the project root:

GROQ_API_KEY=gsk_your_key_here

Get a free key at console.groq.com β€” no credit card required.

5. Run

streamlit run app.py

Open http://localhost:8501 in your browser.


πŸš€ Deploy on Streamlit Cloud (Free)

Step 1 β€” Make sure .env is in .gitignore

.env
__pycache__/
*.pyc

Step 2 β€” Push to GitHub

Your repo should be public at github.com/muneeracodes/JobSense-AI-Career-Coach.

Step 3 β€” Go to Streamlit Cloud

Visit share.streamlit.io β†’ sign in with GitHub β†’ click "Create app".

Step 4 β€” Fill in the form

Field Value
Repository muneeracodes/JobSense-AI-Career-Coach
Branch main
Main file path app.py

Step 5 β€” Add your secret key

Click "Advanced settings" β†’ "Secrets" β†’ paste:

GROQ_API_KEY = "gsk_your_key_here"

⚠️ Never put your API key in any committed file. Streamlit Secrets is the correct way.

Step 6 β€” Deploy

Click "Deploy". In ~2 minutes you get a live public URL:

https://jobsense-ai-career-coach-g9ucp9ucell8uzph7zrb2e.streamlit.app/

πŸ“Š Example Report Output

{
  "match_score": 74,
  "matched_skills": ["Python", "Django", "REST APIs", "PostgreSQL", "Git"],
  "missing_skills": ["Kubernetes", "AWS Lambda", "Redis"],
  "strengths": [
    "3 years of production Django experience directly matches the JD requirement",
    "Open source contributions demonstrate code quality and collaboration",
    "PostgreSQL expertise fully covers the database requirement"
  ],
  "rewritten_bullets": [
    "Architected and deployed a Django REST API serving 50k+ daily requests with 99.9% uptime",
    "Reduced query response time by 40% through PostgreSQL indexing and query optimisation",
    "Led migration of a monolithic Flask app to microservices, cutting deploy time by 60%"
  ],
  "interview_talking_points": [
    "Lead with your Django production experience β€” it directly matches their core requirement",
    "Frame your REST API work in terms of scale and uptime, not just features built",
    "For the Kubernetes gap: mention you're actively learning it and show your progress",
    "Use your open source contributions as proof of code review and collaboration",
    "Ask about their infrastructure pain points β€” shows strategic thinking"
  ]
}

⚠️ Known Limitations

  • Scanned PDFs not supported β€” requires text-based PDFs; OCR support is planned
  • English only β€” prompt engineering is optimised for English JDs and CVs
  • Session-based β€” report resets on page refresh (by design for privacy)

πŸ—ΊοΈ Roadmap

  • OCR support for scanned CVs (Tesseract / AWS Textract)
  • Export report as styled PDF
  • Compare multiple job descriptions side by side
  • LinkedIn JD auto-import via URL
  • RAGAS evaluation for retrieval quality scoring

πŸ§‘β€πŸ’» Built by

Muneera β€” @muneeracodes πŸš€ Live App: jobsense-ai-career-coach-g9ucp9ucell8uzph7zrb2e.streamlit.app Built to solve a real problem while job hunting β€” and as a portfolio project demonstrating LangChain RAG with dual vector stores.


πŸ“„ License

MIT β€” use it, fork it, improve it. Attribution appreciated but not required.

About

AI Career Coach built with LangChain, Groq, FAISS

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages