Inspiration
College calendars show when things are due, but they never show when you should actually do the work. The moment something changes (a midterm moves, a rehearsal gets added, you miss a day), the whole plan falls apart and you're left dragging blocks around by hand.
I wanted a single place that holds both academic deadlines and personal tasks, so I don't have to manually transfer everything into Google Calendar, and that can rebuild the plan when life changes.
What it does
Quill is a semester planner that keeps academic deadlines and personal tasks in one place.
- One feed in, a full plan out. Paste one calendar feed (Canvas or any iCal) and Quill builds a realistic weekly study plan around your deadlines, fixed commitments, and capacity. No more copying every assignment into Google Calendar by hand.
- Replan in plain English. When life changes, such as "my midterm moved to Thursday and I have rehearsal that night," you just type it. Quill replans the week with Gemini, shows the tool calls it made, explains every change, and updates your schedule live.
- Study tab. A timer and checklist, so planning and actually doing the work live in the same app.
How I built it
- Backend: FastAPI with a single JSON file for state
- Frontend: Next.js + TypeScript
- Planning: Gemini via function calling, with tools for adding, moving, and deleting blocks, plus a validator that enforces locked exams, no overlaps, waking hours, and daily capacity
- Views: a month home view, a weekly plan view with a visible tool-call log, a Study tab with a timer/stopwatch music playlists, task checklist, and a shareable recap card
Challenges I ran into
- Reliable replanning. Early on, Gemini would propose invalid schedules (blocks past deadlines, overlapping times), so I had to build a strict validator plus a retry loop.
- Matching requests to the right block. Natural-language requests like "move Saturday's assignment" would sometimes grab the wrong item.
Accomplishments that I'm proud of
- The core replan loop works: you can type "add a rehearsal Friday 7–9pm," "move my midterm to Thursday," or "delete the club meeting," and the week updates with visible tool calls and an explanation.
- The validator actually prevents bad plans instead of silently accepting them.
- A clean Study tab and a shareable recap card
- A UI that looks intentional instead of like a default dashboard.
What I learned
You have to design the tools and the validator carefully, or the model will generate plans that look fine until they aren't.
What's next for Quill
- Study-block reminders and notifications
- Drag-and-drop editing of the generated plan
- Per-course workload and difficulty weighting
- Export plan back to a calendar (.ics)
Built With
- fast-api
- google-gemini-api
- ical
- javascript
- json
- python
Log in or sign up for Devpost to join the conversation.