Inspiration
As a university student, I found myself constantly switching between different AI tools just to study one lecture, one tab for summarizing notes, another for making flashcards, and another for generating practice questions. It was inefficient and broke my focus every time. I wanted one tool that could take a single lecture PDF and generate everything I needed to actually study it in one place.
What it does
LectureLens takes an uploaded lecture PDF and automatically generates a summary, flashcards, multiple-choice questions, and essay questions, all from the same document. It also includes a **chat feature where students can ask questions about their own lecture notes and get answers grounded strictly in that document, so it never makes up information that wasn't actually taught.
How we built it
I built the full stack myself:
- Backend: FastAPI, which extracts and chunks text from PDFs, generates embeddings with Google's Gemini API, and stores them in ChromaDB for retrieval-augmented generation (RAG)
- Database: PostgreSQL, to persist user documents and generated study packs
- Frontend: Next.js + TypeScript, styled with Tailwind CSS, with interactive 3D-flip flashcards and instant-feedback quiz questions
- Auth: Clerk, for real user accounts
- Deployment: backend on Render, frontend on Vercel fully live
Challenges we ran into
Almost every part of this was a first for me; I learned advanced Python, FastAPI, RAG, and deployment from scratch while building it. Some specific hurdles:
- Hitting Gemini's free-tier rate limits repeatedly during testing
- Debugging a CORS misconfiguration between my deployed frontend and backend
- A mid-project laptop reset that forced me to rebuild my entire dev environment from GitHub
- Making a deliberate product decision around the chat feature, which I chose to have it explicitly say, "I don't see that in the lecture notes," rather than let it guess from general knowledge, prioritizing trustworthiness over completeness
Accomplishments that we're proud of
- Building a genuine RAG pipeline from scratch, chunking, embeddings, vector search, and grounded generation, not just calling an LLM API directly
- Shipping a fully deployed, working product: live frontend, live backend, live database, real authentication, all connected
- Designing the chat feature to be honest about its limits rather than optimizing purely for "always sounding confident"
- Getting through a full-stack deployment pipeline (Render + Vercel + Clerk + CORS) as a self-taught beginner, debugging every error along the way
What we learned
Beyond the technical stack, I learned how much of real engineering is debugging and problem-solving under uncertainty, reading stack traces, isolating whether an issue is frontend, backend, database, or a third-party API limit, and staying methodical when several things break in the same session. I also learned to make and defend real product tradeoffs, not just write code that "works."
What's Next for LectureLens
- Backend-level authentication verification, so API requests are validated server-side, not just gated in the UI
- Support for additional file formats beyond PDF, like Word documents and slide decks
- Scoping the chat feature per document, so multiple uploaded lectures don't share the same search space
- An optional "go deeper" mode that clearly separates lecture-grounded content from AI-expanded general knowledge, for students who want extra context beyond their notes
Built With
- chromadb
- clerk
- fastapi
- google-gemini
- nextjs
- postegresql
- python
- rag
- react
- render
- sqlalchemy
- tailwindcss
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.