A comprehensive AI-powered teaching assistant platform that enables instructors to create course-specific AI TAs trained on their materials, with built-in academic integrity policies and rich analytics.
- RAG-based Q&A: Retrieval-Augmented Generation scoped to course materials
- Document Ingestion: PDF → text → chunk → embed → store pipeline
- Claude Integration: Powered by Anthropic's Claude for intelligent, contextual answers
- Citations: All answers include source references with page numbers
- Academic Integrity: Built-in policy enforcement (no full solutions, no exam help)
- Course Management: Create courses with name, code, and term
- Material Upload: Upload syllabus, lectures, assignments, transcripts (PDF)
- Policy Configuration: Define allowed/disallowed topics and custom rules
- TA Personas: Choose from 3 tone packs:
- Policy-First (professional, clear boundaries)
- Friendly Explainer (warm and encouraging)
- Scaffolded/Tutoring (Socratic method)
- TA Simulator: Test how the TA responds to questions before publishing
- Coverage Check: Identify gaps between student questions and uploaded materials
- Lecture Summarizer: Generate study packs with key points and practice questions
- Syllabus Extraction: Auto-extract office hours, email, policies from syllabus
- Analytics Dashboard:
- Q&A logs with sources
- Refusal tracking (academic integrity violations)
- Topic clustering
- End-of-term reports
- Course Selection: Browse and select published courses
- Chat Interface: Ask questions about course content
- Citations: See which documents/pages answers come from
- Difficulty Toggle: "I'm new to this" for simplified explanations
- Follow-up Suggestions: Quick buttons for common follow-ups
- Quick Info: Fast access to office hours, late policy, etc.
- FastAPI: Modern Python web framework
- SQLAlchemy: ORM for database operations
- SQLite: Database (easily upgradable to PostgreSQL)
- Anthropic Claude: AI answer generation
- Sentence Transformers: Text embeddings for RAG
- PyPDF2: PDF text extraction
- React 18: UI library
- TypeScript: Type safety
- Vite: Build tool
- Zustand: State management
- React Router: Navigation
- Python 3.9+
- Node.js 18+
- Anthropic API key
- Navigate to backend directory:
cd backend- Create virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt- Create
.envfile:
cp .env.example .env- Edit
.envand add your Anthropic API key:
ANTHROPIC_API_KEY=your_api_key_here
SECRET_KEY=your_secret_key_here
- Run the backend:
python main.pyThe API will be available at http://localhost:8000
- API docs:
http://localhost:8000/docs
- Navigate to frontend directory:
cd frontend- Install dependencies:
npm install- Run the development server:
npm run devThe app will be available at http://localhost:3000
- Register as an instructor at
/register - Create a course with name, code, and term
- Upload materials:
- Syllabus (auto-extracts key info)
- Lecture slides
- Assignments
- Transcripts
- Configure settings:
- Choose TA persona
- Set policies and rules
- Define allowed/disallowed topics
- Test with simulator to see how the TA responds
- Publish course to make it available to students
- Monitor analytics to see questions, refusals, and coverage gaps
- Register as a student at
/register - Select a course from available published courses
- Ask questions about course content
- Toggle "I'm new to this" for simplified explanations
- View citations to see where answers come from
- Use follow-up suggestions for deeper exploration
-
Ingestion Pipeline:
PDF Upload → Text Extraction → Chunking → Embedding → Vector Storage -
Query Flow:
Student Question → Embed Query → RAG Retrieval (filtered by course_id) → Build Context → Claude Generation → Answer + Citations -
Policy Enforcement:
Question → Violation Detection → Refuse or Answer → Log
- users: Instructors and students
- courses: Course metadata and settings
- materials: Uploaded files (PDFs)
- material_chunks: Chunked text with embeddings
- questions: Q&A logs with sources
- coverage_gaps: Identified material gaps
POST /auth/register- Register new userPOST /auth/token- LoginGET /auth/me- Get current user
POST /courses/- Create courseGET /courses/- List coursesGET /courses/{id}- Get course detailsPATCH /courses/{id}- Update coursePOST /courses/{id}/materials- Upload materialGET /courses/{id}/materials- List materialsPOST /courses/{id}/publish- Publish course
POST /chat/- Ask question
POST /instructor/simulator- Test TA responseGET /instructor/courses/{id}/coverage-check- Check coverage gapsPOST /instructor/materials/{id}/study-pack- Generate study packGET /instructor/courses/{id}/analytics- Get analytics
cd backend
pytestBackend:
cd backend
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorkerFrontend:
cd frontend
npm run build- JWT-based authentication
- Password hashing with bcrypt
- Role-based access control (instructor/student)
- Academic integrity policy enforcement
- Refusal logging for monitoring
- Support for video transcripts
- Multi-language support
- Advanced topic clustering with ML
- Integration with LMS (Canvas, Blackboard)
- Mobile app
- Voice input/output
- Collaborative features (peer discussions)
- Gamification (badges, leaderboards)
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE file for details
For questions or issues:
- Open an issue on GitHub
- Email: support@ai-ta-platform.com
- Anthropic Claude API
- Sentence Transformers
- FastAPI
- React community