Inspiration

Every student knows the feeling of staring at a packed week with no idea where to start. We kept seeing friends pull all-nighters not because they were lazy, but because they genuinely didn't know how long things would take or which notes to study. We built Tempo to fix that.

What it does

Tempo is an AI-powered study planner that connects directly to Canvas. It reads your actual assignment PDFs, estimates how long each one will take using Gemini AI, and matches each problem to the specific lecture notes that cover it. It then schedules study blocks around your Google Calendar automatically. A built-in focus timer counts down from your AI estimate, with your matched materials right there in the same panel. Social streaks and friend leaderboards keep you accountable.

How we built it

We built the backend in Python with Flask, using Gemini 2.5 Flash to power the AI estimation and material matching. The Canvas LMS API handles course and assignment syncing, and Google Calendar API manages scheduling. The frontend is a single-page HTML/JS app served directly from Flask. We deployed on Render with Gunicorn.

Challenges we ran into

Getting the AI to match specific assignment problems to relevant lecture slides required significant prompt engineering. Canvas sync involving file downloads, PDF extraction, and AI estimation for every assignment in one request kept hitting Render's timeout limits, which we solved with Gunicorn's extended worker timeout. We also hit a tricky infinite recursion bug from a JavaScript function redefinition pattern that silently broke session history.

Accomplishments that we're proud of

The problem-level material matching works remarkably well--it reads an assignment and tells you exactly which slides cover each specific problem. The end-to-end flow from Canvas sync to a scheduled study week with matched materials genuinely feels like magic. We're also proud of shipping a polished, fully deployed product in a hackathon timeframe.

What we learned

We learned how much prompt engineering matters for getting structured, reliable output from LLMs. We also learned the hard way that splitting a stateful session-based backend across two hosting platforms breaks cookie authentication entirely. Keeping the stack simple and colocated saved us hours of debugging.

What's next for Tempo

We want to add mobile support, smarter rescheduling when assignments change, and a feedback loop where Tempo learns from the difference between estimated and actual time to get more accurate over time. Long-term, we see Tempo expanding beyond Canvas to support any LMS, and adding collaborative study features so friend groups can plan together.

Built With

Share this project:

Updates