Inspiration
As a student it can be very hard to stay motivated and disciplined during term time. Suddenly exam season comes and you are 21323293092 lectures behind. What do you study? How do you study? How do you prioritise your time? And how do you study effectively? That's why we built IQumulate AI, an AI powered website which ensures that you find your weak spots before the examiner does
What it does
A single web app that closes the entire study cycle: upload → diagnose → practice → grade → schedule. Users can upload past exam papers, lecture notes(PDFs, images). The website will extract and parse questions, mark schemes and topics and feed into a personal question bank for the student. The system then scores each student across their topics based on their past performance. Using AI powered skill diagnoses, a live skills dashboard shows strengths and weaknesses at a glance via strength scores. Using these strength scores, we generate, topic based past exam questions fresh practice questions tailored to the students weak areas first. Each question comes with full worked solutions and diagrams( generated via code execution - with instant marking and an AI chatbot built it to follow up and close the feedback loop. Furthermore we have a smart scheduler, where the students can add tasks with duration, deadline and priority. The AI will build an optimised weekly schedule using a round robin algorithm and caps daily study hours to prevent burnout, all while respecting deadlines and committments. This is additive scheduling
How we built it
How we built it We started with a problem: university CS/maths students have problem sheets, solutions, and lecture notes scattered across PDFs, and no way to know which topics to practise first. We built an end-to-end adaptive learning platform in ~25 hours at HackLondon 2026. The backend is FastAPI (Python), with the data layer split across MongoDB Atlas collections — questions, users, topic vectors, RAG chunks for notes and solutions, and chat sessions. The frontend is a single-page vanilla HTML/JS app served directly by the API. The core pipeline: upload a problem sheet PDF → PyMuPDF extracts text with bounding boxes → regex detects question boundaries by number (1. ..., 2. ...) → GPT-4o-mini generates hints → text-embedding-3-small embeds each question → solution PDF is matched and ingested → everything is upserted to MongoDB in one pass. For grading, students upload a photo of their handwritten answer. GPT-4o vision grades it against the model solution with RAG context pulled from lecture notes, annotates the image with coloured overlays, and returns structured feedback. The adaptive part: each question has a topic relevance vector (GPT scores it against tags extracted from lecture notes). After every submission, only the topics that question actually assesses are updated — nudging the user vector toward 1.0 on correct and 0.0 on wrong with a small learning rate. Recommendations are the dot product between the user's gap vector and problem vectors. GPT-4o also generates fresh practice questions on demand, drawing on the uploaded question style and lecture content. The scheduler (separate service) reads assignment deadlines and study blocks from MongoDB, plans a rolling two-week timetable that fits work around life, and replans dynamically when things slip.
Challenges we ran into
- Considering all the factors that affect user retention when designing a scheduling timetable
- Integrating the different parts of the program to run seamlessly( the vector learning model and the marking and feedback model)
- Designing the vector embedding for determining user strength
- Integrating the front end and back end ## Accomplishments that we're proud of
- Learning how to make a front end with no prior coding knowledge
- Learning how to use Github and VS Code
- Staying awake
- The platform is fully self contained
- Regex chunking beats GPT chunking — we originally used an LLM to identify question boundaries, but PDFs are full of graph vertex labels like "2", "3", "10" that the model couldn't distinguish from question numbers. A simple regex (N. text) is faster, cheaper, and more accurate. The pipeline is a single pass — text extraction, chunking, embedding, image rendering, solution matching, and hint generation all happen in one call to process_problem_pdf. No misalignment between what the student sees and what the model grades.
- Integrating the different components and creating a product that works ## What we learned
- How to vibe code
- LLMs are bad at tasks that look like pattern matching but aren't — detecting question boundaries by line number is a regex problem, not an AI problem.
- MongoDB's upsert-by-field pattern means you can reprocess freely without duplicating data, but you have to explicitly clean up stale documents or old entries accumulate invisibly.
- Keeping system prompts in one file (config/prompts.py) saved us constantly — when the judging feedback was too harsh, one edit fixed it everywhere.
What's next for IQmulate AI
- expanding into different subjects and different courses
- training the AI onto various markschemes for essay subjects to compare and contrast subjective essays.
Log in or sign up for Devpost to join the conversation.