Inspiration

Every student has faced the same problem: a mountain of PDFs, no idea where to start, and YouTube rabbit holes that eat hours without real learning. We wanted to build a personal AI tutor that doesn't just answer questions — it thinks about your learning like a great teacher would.

What it does

EduAgent Pro is a full-stack AI study platform powered by 7 specialized agents:

  • Study Planner — Generates a day-by-day study plan with curated resources per topic
  • Doubt Solver — Explains any concept with interactive whiteboard steps + LaTeX math
  • Quiz Agent — Creates adaptive MCQ quizzes from your uploaded notes
  • Flashcard Agent — Spaced-repetition flashcards with difficulty tracking
  • Smart Notes — Extracts key concepts, definitions, and exam tips from PDFs
  • Research Agent — Finds the best articles, videos, and papers per topic via Tavily
  • AI Tutor Chat — Persistent streaming conversation with full context memory

On top of that: Gamification (XP, streaks, 6 levels), AI Exam Mode (timed, graded, full report), Learning Analytics (heatmap, radar chart, AI insights), and a Pomodoro Timer with focus rewards.

How we built it

  • Backend: FastAPI + Groq (LLaMA 3.3 70B) for all AI inference. In-memory RAG with keyword-based retrieval (no heavy ML models — fits Vercel's 250MB limit). Mangum adapter to run ASGI on Vercel's serverless Lambda runtime.
  • Frontend: React 18 + Vite + TailwindCSS + Framer Motion. Recharts for analytics. KaTeX for math rendering. SSE streaming for real-time AI responses.
  • Deployment: Both frontend and backend deployed on Vercel.

Challenges we faced

  • Package size: ChromaDB + sentence-transformers = ~2GB. Vercel Lambda limit is 250MB. We rewrote the entire RAG layer with in-memory Jaccard keyword search — zero ML overhead.
  • ASGI on Lambda: Vercel's Python runtime is Lambda-style and can't run ASGI directly. Solved with Mangum to wrap FastAPI into a Lambda-compatible handler.
  • Module-level SDK crashes: Groq SDK throws at construction time if the API key is missing. Fixed with lazy initialization across all 9 agent/RAG modules.
  • Streaming on serverless: Lambda buffers responses, so SSE streaming falls back gracefully to a standard JSON response in production.

What we learned

Building for serverless constraints forces you to rethink every assumption. In-memory RAG is surprisingly effective for single-session use cases. Lazy initialization is non-negotiable for SDK clients in serverless environments.

What's next

  • Persistent vector storage (Upstash or Pinecone free tier)
  • Multi-PDF session memory
  • Collaborative study rooms
  • Mobile app with offline flashcard sync

Built With

  • fastapi
  • framer-motion
  • groq
  • katex
  • llama-3.3-70b
  • mangum
  • pdfplumber
  • python
  • react
  • recharts
  • server-sent
  • tailwindcss
  • tavily-api
  • vercel
  • vite
Share this project:

Updates

Submission history