An integrated academic automation platform with three modules: AI-powered Lesson Plan Generator, Exam Answer Generator, and CO-PO-PSO Attainment Workbook Generator — all in one unified interface.
AI-powered agentic system that automatically generates semester lesson plans from academic documents using LangGraph, LiteLLM, and EasyOCR.
Input (3 files):
- Academic Calendar (Excel) — Semester dates, holidays, exam periods
- Subject Syllabus (Image/PDF) — Modules, topics, hours allocation
- Weekly Timetable (Word/PDF) — Teaching days and slots
Output: Styled Excel workbook with lesson plan schedule, summary, and module progress sheets.
Pipeline: 4-node LangGraph StateGraph — Parse Documents → Analyze Constraints → Generate Schedule → Create Excel
Upload a question paper and syllabus to generate detailed answers automatically using LLMs.
Generates a complete CO-PO-PSO attainment workbook from exam data, lab rubrics, and course exit surveys. Supports selective sheet generation with automatic dependency resolution.
Output workbook (up to 5 sheets):
| Sheet | Description |
|---|---|
| Mapping CO-PO-PSO | Binary CO×PO matrix, session allotment, mapping strength, and mapped PO/PSO attainment |
| Summary Attainment | Per-CO targets, ESE & ICA attainment, Direct/Indirect/Final attainment, and GAP analysis |
| ESE Splitup | Student-level end semester exam marks with CO-wise averages and % attainment |
| ICA Splitup | Student-level internal assessment marks with CO-wise averages and % attainment |
| Course Exit | Survey response analysis (Likert 1–5) and CO attainment percentages |
Sheet dependency graph:
ESE_Splitup ──────┐
ICA_Splitup ──────┼──▶ Summary_Attainment ──▶ Mapping CO-PO-PSO
Course_Exit ──────┘
Users can select any combination of sheets. Dependencies are auto-resolved — selecting Summary automatically requires ESE + ICA + Exit. Leaf sheets (ESE, ICA, Exit) can be generated independently.
| File | Format | Description | Required For |
|---|---|---|---|
| Questionwise Exam Result | .xlsx | Student-wise marks for each ESE question. Rows = students, Columns = question marks | ESE Splitup |
| ESE Template | .xlsx | Maps each question to its CO and max marks | ESE Splitup |
| Oral/Practical Marks | .xlsx | Optional oral/practical exam marks per student | ESE Splitup |
| Lab Rubrics File | .xlsx | Workbook with sheets for Experiments, Assignments, and optionally Miniproject & Oral marks | ICA Splitup |
| Term Test File | .xlsx | Workbook with TT1, TT2, and optionally TT3 sheets | ICA Splitup |
| Word Template (CO Mapping) | .docx | Table mapping each experiment/assignment to its CO(s) | ICA Splitup |
| Course Exit Survey | .xlsx | MS Forms export. Each CO is a column, students rate 1–5 (Likert scale) | Course Exit |
| CO Rubrics Document | .docx | CO descriptions with Bloom's taxonomy levels. Format: CO1: Students will be able to... |
Summary |
| PO / PSO Document | .docx | PO1–PO12 and PSO descriptions. Format: PO1: Engineering Knowledge – Apply... |
Mapping |
- Selective sheet generation — toggle which sheets to include; dependencies auto-resolved
- Auto sheet detection — uploaded Excel sheet names are matched to expected fields automatically (single-sheet files auto-select; multi-sheet files fuzzy-match by name)
- GAP analysis modal — when Summary/Mapping sheets are included, a modal shows per-CO GAP analysis with fields for proposed actions and modified targets
- CO auto-extraction — uploading the rubrics document auto-extracts all COs for custom target % and session count inputs
- Info tooltips — every file upload has an (i) icon explaining exactly what that file should contain
| Component | Technology |
|---|---|
| Framework | FastAPI (Python 3.10+) |
| AI Orchestration | LangGraph (StateGraph with human-in-the-loop) |
| LLM Gateway | LiteLLM (auto-fallback between Gemini & Groq) |
| OCR | EasyOCR + Chandra OCR |
| Excel Processing | openpyxl |
| NLP (CO-PO Mapping) | scikit-learn TF-IDF + position-based templates |
| Component | Technology |
|---|---|
| Framework | Next.js 16 + React 19 + TypeScript |
| Styling | Tailwind CSS v4 |
| State | Zustand |
| Icons | lucide-react |
| Animations | Framer Motion |
| File Upload | react-dropzone |
| HTTP | axios |
- Python 3.10+
- Node.js 18+
cd backend
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS/Linux
pip install -r requirements.txtCreate a .env file in backend/:
GEMINI_API_KEY=your-key
GROQ_API_KEY=your-keyRun:
python main.pyServer starts at http://localhost:8001
cd frontend
npm install
npm run devApp runs at http://localhost:3000
backend/
├── main.py # FastAPI server
├── requirements.txt
├── core/ # Shared core logic
│ ├── config.py # Model config & paths
│ ├── llm.py # LiteLLM wrapper with fallback
│ ├── ocr.py # OCR utilities
│ ├── graph.py # LangGraph pipeline
│ ├── state.py # Pipeline state definition
│ └── utils/ # Converters, date logic, Excel helpers
├── nodes/ # LangGraph nodes (Planner)
│ ├── parse_documents.py
│ ├── analyze_constraints.py
│ ├── generate_schedule.py
│ └── create_excel.py
├── apps/
│ ├── copo_mapping/ # COPO Attainment module
│ │ ├── router.py # 6 API endpoints
│ │ └── services.py # All Excel/Word processing (4400+ lines)
│ └── exam_generator/ # Exam Answer module
│ ├── router.py
│ └── services.py
├── parsers/ # Specialized data extractors
├── uploads/ # Temporary file storage
└── outputs/ # Generated files
frontend/
├── src/
│ ├── app/ # Next.js app router
│ ├── components/
│ │ ├── layout/ # Header, Sidebar, Navigation
│ │ ├── upload/ # Planner upload section
│ │ ├── processing/ # Processing view & progress
│ │ ├── results/ # Results display
│ │ ├── copo/ # COPO Attainment page
│ │ │ └── COPOMapping.tsx # Full single-page form
│ │ ├── exam/ # Exam Answer page
│ │ ├── logs/ # Log terminal
│ │ └── ui/ # Shared UI primitives (Button, Card)
│ ├── hooks/ # useStore, useProcessingStream
│ ├── services/ # API service layers
│ ├── lib/ # Utilities
│ └── types/ # TypeScript types
└── public/
| Endpoint | Method | Description |
|---|---|---|
/health |
GET | Health check |
/generate-plan |
POST | Upload files & start generation |
/jobs/{job_id} |
GET | Get job status |
/download/{job_id} |
GET | Download Excel file |
| Endpoint | Method | Description |
|---|---|---|
/get-sheets |
POST | Get sheet names from an uploaded Excel |
/extract-cos |
POST | Extract COs from rubrics document |
/upload-combined |
POST | Generate ICA splitup only |
/upload-ese |
POST | Generate ESE splitup only |
/generate-attainment-phase1 |
POST | Generate workbook + compute GAPs |
/generate-attainment-phase2 |
POST | Apply actions & download final workbook |
| Endpoint | Method | Description |
|---|---|---|
/generate |
POST | Generate answers from question paper + syllabus |
Primary: Gemini 2.5 Flash Lite
│ (rate limit 429)
▼
Fallback 1: Groq GPT-OSS-120B
│ (rate limit)
▼
Fallback 2: Groq Llama 3.3 70B
MIT License