An enterprise-grade, AI-powered student performance tracking and risk prediction dashboard built for Indian college counselors, HODs, and administrators. It uses Machine Learning to identify at-risk students early and provides actionable intervention plans.
| Feature | Description |
|---|---|
| π Role-Based Access Control | Login system with Admin, HOD (department-filtered), and Counselor roles |
| π Risk Prediction Engine | Random Forest classifier predicting Low / Moderate / High / Critical risk |
| π§ Explainable AI (XAI) | SHAP-based reasoning for why a student is flagged at-risk |
| π§ͺ What-If Simulator | Simulate how changes in attendance/marks affect risk score |
| π Subject-Wise Failure Prediction | Per-subject (Math, Physics, Programming) failure alerts |
| π Historical Risk Tracking | 6-month trend line showing improvement or decline |
| π€ Chatbot Assistant | Natural language queries like "Show high-risk students from CSE 4th semester" |
| βοΈ Fairness & Bias Report | Gender and department parity analysis to detect model bias |
| π CSV & PDF Export | Download action lists, full reports, and individual student report cards |
| π€ ERP Upload | Upload CSV files to ingest new student data |
| π₯ Burnout Detection | Flags students showing burnout patterns (marks drop + low attendance + low activity) |
| π Counselor Notes & Interventions | Log parent calls, counseling sessions, mentor assignments with follow-ups |
student-performance-tracker/
βββ app.py # Main Streamlit dashboard (login + overview)
βββ setup.py # One-click setup script
βββ requirements.txt # Python dependencies
βββ .streamlit/
β βββ config.toml # Streamlit theme configuration
βββ src/
β βββ generate_data.py # Synthetic Indian student data generator (Faker en_IN)
β βββ db.py # SQLite database layer (CRUD + auth)
β βββ train_model.py # ML training pipeline (Random Forest + SHAP)
β βββ recommendations.py # Rule-based action plan generator
βββ pages/
β βββ 1_Risk_Table.py # Filterable student risk table
β βββ 2_Student_Profile.py # Deep-dive student profile with XAI + What-If
β βββ 3_Analytics.py # Advanced charts & correlations
β βββ 4_Reports.py # CSV export for counselor action lists
β βββ 5_Chatbot_Assistant.py # NLP chatbot for quick queries
β βββ 6_Fairness_Report.py # Bias & fairness audit (Admin only)
βββ data/ # Generated at runtime (gitignored)
β βββ .gitkeep # Preserves directory in Git
β βββ synthetic_students.csv # (generated)
β βββ historical_risk.csv # (generated)
β βββ students.db # (generated)
βββ models/ # Generated at runtime (gitignored)
βββ .gitkeep # Preserves directory in Git
βββ best_model.pkl # (generated)
βββ scaler.pkl # (generated)
βββ features.pkl # (generated)
βββ shap_explainer.pkl # (generated)
| Layer | Technology |
|---|---|
| Frontend | Streamlit, Plotly |
| ML/AI | scikit-learn, Random Forest, SHAP, XGBoost |
| Data | Pandas, NumPy, Faker (Indian locale) |
| Database | SQLite |
| Reports | FPDF2 (PDF generation) |
- Python 3.9 or higher
- pip (Python package manager)
git clone https://github.com/httpshanu/student-performance-tracker.git
cd student-performance-trackerpython -m venv venv
# Windows
venv\Scripts\activate
# macOS / Linux
source venv/bin/activatepip install -r requirements.txtpython setup.pyThis single command will:
- Generate 2,000 synthetic Indian student records with realistic names, roll numbers, and academic data
- Load everything into a SQLite database
- Train a Random Forest model with SHAP explainability
streamlit run app.py| Username | Password | Role | Access |
|---|---|---|---|
admin |
admin123 |
Admin | Full access (all departments + fairness report) |
hod_cse |
hod123 |
HOD | Computer Science & Engineering only |
hod_mech |
hod123 |
HOD | Mechanical Engineering only |
hod_civil |
hod123 |
HOD | Civil Engineering only |
hod_eee |
hod123 |
HOD | Electrical & Electronics only |
hod_bba |
hod123 |
HOD | Business Administration only |
hod_arts |
hod123 |
HOD | Arts & Humanities only |
counselor1 |
counselor123 |
Counselor | All departments (no fairness report) |
The synthetic data generator (src/generate_data.py) creates realistic Indian college student data:
- Indian names via
Faker('en_IN')β e.g., Aarav Sharma, Priya Patel, Rohit Kumar - Indian roll numbers β format:
26CSE0001,26MECH0042 - 6 departments β CSE, Mechanical, Civil, EEE, BBA, Arts & Humanities
- Indian syllabus subjects β Maths, Physics, Programming, EVS, Communication
- Academic features β attendance, internal marks, midterms, assignments, lab scores
- Behavioral features β library visits, consecutive absences, Monday/Friday bunk patterns, burnout flags
- Risk scoring β weighted formula producing Low / Moderate / High / Critical labels
- Historical data β 6 months of risk score history per student
- Push this repository to GitHub
- Go to share.streamlit.io
- Connect your GitHub account and select this repository
- Set the main file path as
app.py - Add a pre-run script or use
setup.pyto generate data on first run - Click Deploy
Note: For Streamlit Cloud deployment, the data and models are generated fresh on each deployment since they are gitignored.
Run the dashboard locally to see the full UI with charts, risk tables, student profiles, and more.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License β see the LICENSE file for details.
Sanid β GitHub
This project uses 100% synthetic data generated via the Faker library. No real student information is used or stored. The application is intended for demonstration and educational purposes only.
Built with β€οΈ for Indian educational institutions