Inspiration
As two college freshmen actively navigating the overwhelming task of time management for new classes each semester, having an app that can jump-start this process is vital to our college experience. We built Locked In as a platform for students just like us to cut through the syllabus clutter and get straight to learning.
What it does
Locked In is a comprehensive web application designed to automate academic planning and foster collaborative studying.
Smart Study Plans: Users upload their class syllabi, and our multi-stage agentic RAG workflow compiles a comprehensive list of deadlines, generating a custom study plan catered to their preferences.
Calendar Integration: Students can view their study plan on our in-app calendar or seamlessly export it to Google Calendar.
Peer-to-Peer Ranked Studying (NRVE Track): Moving beyond solitary studying, our Ranked Mode matches peers in live study games. Rather than just competing, students learn from each other's knowledge gaps in real-time. By queueing up to answer course-specific questions, students reinforce their own knowledge while exposing themselves to different approaches and concepts, climbing the ladder to become the Master Locksmith!
How we built it
We spent a significant amount of time up-front designing the API endpoints, frontend data flow, and database schema to ensure our system architecture was solid before writing any code.
The Tech Stack & Integrations:
Frontend & Auth: We built a robust interface using React and TypeScript, integrating Clerk for rapid, secure Identity-as-a-Service authentication.
MongoDB Atlas (MLH Track): We used MongoDB Atlas as the backbone of our application's data layer. By leveraging Atlas Vector Search, we seamlessly stored and queried the vector embeddings generated from the parsed course syllabi. This native vector database capability was critical for making our multi-stage RAG workflow both fast and contextually accurate.
Nebula API (Nebula Labs Track): To ensure our study plans were grounded in reality, we routed the Nebula API into our backend to pull accurate UTD course catalog data, matching syllabus uploads to official course details and professor information.
Gemini AI (MLH Track): We pushed the limits of the Gemini API by leveraging different models for distinct tasks. We used the heavier-weight Gemini 1.5 Pro to handle the large context windows required for our custom MongoDB vector-backed RAG workflow, parsing complex syllabi to generate accurate study plans. For the Ranked Studying mode, we utilized Gemini 1.5 Flash to handle on-demand, low-latency quiz generation.
Google Antigravity (MLH Track): Antigravity was our true co-pilot. We used it extensively as a brainstorming tool to bounce ideas off an LLM and near-instantly see prototypes, system prompts, and MongoDB vector schema drafts. It super-powered our ideation process, turning potential roadblocks into brief detours and vastly increasing our development speed.
Challenges we ran into
Building a live peer-learning queue was a very difficult task to accomplish in just 24 hours, especially on top of all the other features for a duo team. Instead of getting bogged down building a full websocket handling flow, we engineered an HTTPS polling pattern. This allowed our live games to be handled entirely by a set of well-designed API endpoints, maintaining minimal latency between peers without the overhead of web sockets.
Accomplishments that we're proud of
As a team of two freshman hackers with only one hackathon under our belts, we came in expecting to just barely get a project running. Being able to architect and deploy this full-stack, AI-integrated platform in such a short amount of time is a massive accomplishment for us.
What we learned
Backend Systems: We learned a lot about MongoDB's vector database format and how to quickly handle complex auth workflows with Clerk to eliminate boilerplate.
AI Orchestration: We learned how to build a custom multi-stage RAG workflow to minimize hallucinations and maximize accuracy. We also learned the importance of model selection, balancing the intelligence of a Pro model with the speed of a Flash model depending on the feature's requirements.
Frontend Data Flow: We became much more comfortable building a React + TypeScript interface connected to a backend through structured API endpoints. Designing this flow early kept the app organized as we added complex features like the calendar view and Google Calendar export.
What's next for Locked In
Our next major step is integrating the tool directly with the Elearning API. This will allow students to simply log in and have the app automatically pull all of their active syllabi, completely streamlining the onboarding process. We also plan to refactor our backend to use a fully functional websocket system for matchmaking. This will enable us to build for scale, handling more concurrent users and enabling more complex, real-time peer learning games like a collaborative tug-of-war.
Built With
- antigravity
- fastapi
- gemini
- html
- javascript
- mongodb
- nebulaapi
- python
- react
- typescript
- vite
Log in or sign up for Devpost to join the conversation.