An AI-powered analytics platform that provides accurate, explainable insights from multi-year college placement data using Retrieval-Augmented Generation (RAG).
Colleges publish placement data across multiple PDFs and CSV files, making it difficult for students to:
- 📊 Find accurate placement statistics
- 📈 Analyze trends across years
- 💬 Get answers to natural language questions
Traditional dashboards:
- Require predefined queries
- Lack flexibility
- Fail to explain results clearly
This project builds an AI-driven placement intelligence system that:
- 📥 Ingests multi-year placement data into a centralized database
- 🧮 Pre-aggregates analytical summaries
- 🤖 Uses a RAG-based chatbot to answer placement-related questions accurately
- 🔍 Ensures transparency via citations and coverage indicators
🚫 The system avoids hallucination by restricting the LLM to verified, indexed data only.
CSV Files (Year-wise)
↓
MySQL (placements table)
↓
SQL Aggregation (Summaries)
↓
FAISS Vector Store
↓
RAG Chatbot (Local LLM)
- Single normalized database table
- Pre-aggregated, LLM-friendly summaries
- Pure RAG (no runtime SQL or tool calling)
- Admin-controlled refresh pipeline
- FastAPI
- SQLAlchemy
- MySQL
- FAISS (Vector Store)
- Ollama (Local LLM – LLaMA 3)
- LangChain
- Pandas
- Python
- REST APIs
placements
----------------------------------
id
student_name
branch
company
package_lpa
academic_year
- ✅ Enables easy multi-year analysis
- ✅ Simplifies trend computation
- ✅ Scales without schema changes
- Year-wise CSV files are placed in
data/raw/ - A loader script automatically ingests all CSVs into MySQL
- New academic years can be added without code changes
📄 Script:
python scripts/load_to_mysql.py
Instead of querying the database at runtime, the system:
- Pre-computes analytical summaries (per year + overall)
- Converts them into natural-language text
- Stores them in a FAISS vector database
The chatbot answers queries strictly from indexed knowledge.
- ✔️ Correctness
- ✔️ Consistency
- ✔️ Zero hallucination
- 💬 Natural language Q&A on placement data
- 📆 Multi-year analytics support
- 🛡️ Placement-only guardrails
- 🔗 Transparent citations
- 📊 Coverage indicator showing data confidence
An admin-only endpoint allows rebuilding the knowledge base without restarting the server.
POST /admin/refresh
This endpoint:
- Re-generates summaries
- Rebuilds FAISS index
- Updates the chatbot in memory
| Challenge | Solution |
|---|---|
| Partial answers from RAG | Introduced pre-aggregated summaries |
| Incorrect analytics | Removed runtime SQL & tool calling |
| Year-wise data mismatch | Dynamic summary generation from DB |
| LLM hallucination | Strict RAG-only answers + guardrails |
# install dependencies
pip install -r requirements.txt
# load CSVs into MySQL
python scripts/load_to_mysql.py
# start backend
uvicorn app.main:app --reload- Uses industry-standard RAG architecture
- Avoids LLM hallucination by design
- Scales to multiple years without schema changes
- Demonstrates system design, not just coding
Rucha Chavan
Java Backend | DSA | AI Systems | RAG-based Applications