Inspiration

Every semester, students juggle 4 or 5 courses — each one dropping a syllabus PDF on day one with dozens of deadlines buried inside. You sit there with a highlighter, manually copying due dates into your calendar, hoping you don't miss anything. Then midterm season hits and you suddenly realize two exams and an assignment all land in the same 48-hour window. We built planIT because we're the students who needed it.

What it does

planIT lets you upload your course outline PDFs — one, two, five of them — and automatically builds a complete semester calendar with every deadline already populated. No manual entry. No spreadsheets. Just drag-and-drop your PDFs and you're done. Beyond extraction, planIT flags scheduling conflicts automatically: if two or more high-weight assessments land within 48 hours of each other, the app surfaces that as a conflict with a severity level so you know exactly where the danger zones in your semester are before they sneak up on you. It also calculates a priority score for each course based on deadline density, assessment weights, and conflicts — and lets you override it if you know better. Your full calendar exports as a universal .ics file or a print-ready monthly PDF.

How we built it

PDFs are messy. The raw text extracted from them is full of garbage — repeated headers, broken line breaks, page numbers, boilerplate. So before we even touch an LLM, we run a multi-stage pipeline: validate the file, extract raw text, strip the noise, then chunk the document into semantically meaningful sections (assignments, exams, grading breakdowns, scheduling tables). Only the relevant chunks go to the LLM, keeping extractions accurate and costs low. We don't just trust what the LLM gives back either. Every extracted event goes through a Pydantic validation layer — date format, weight range, event type — all of it gets checked. If something looks off, we either retry the extraction or flag it for the user to review. Every event also carries a confidence score, and anything below our threshold triggers a visible warning so the student knows to double-check it. The frontend was built to respect user edits: we track every manual change so future re-scheduling never overwrites something you intentionally fixed.

Challenges we ran into

Making the PDF extraction reliable was the hardest engineering challenge. The same piece of information — a deadline, an assessment weight — can appear in wildly different formats across different professors' syllabi. Building a chunking and validation pipeline robust enough to handle that variability, while keeping LLM costs low, required a lot of iteration. Getting the confidence scoring and conflict detection thresholds right also took significant tuning.

Accomplishments that we're proud of

We're proud that planIT doesn't silently get things wrong. The confidence score system, the Pydantic validation layer, and the user-overridable priority scores all reflect a deliberate decision to keep the student in control and informed rather than just trusting the AI blindly. We're also proud of the dual export system — the .ics file and the print-ready monthly PDF cover the two ways students actually live their academic lives.

What we learned

We learned that the hard part of an AI-powered application isn't the AI call — it's everything around it. The preprocessing pipeline, the validation layer, the confidence scoring, the conflict detection logic, and the user edit tracking all required as much thought as the LLM integration itself. We also learned that "good enough" accuracy isn't good enough when missed deadlines have real consequences for students.

What's next for planIT

We want to expand beyond deadline tracking into active study planning — automatically generating suggested study blocks in your calendar based on upcoming deadlines and assessment weights. We'd also like to add direct integrations with Canvas and other LMS platforms so students don't even need to upload PDFs manually. Longer term, we're exploring how planIT could learn from past semesters to improve its priority recommendations over time.

Built With

Share this project:

Updates