Inspiration
Student life runs on deadlines, a fixed timetable and a pile of unread notices, but most planners are static. The moment a lab runs long or you lose two hours, the whole plan is wrong and you rebuild it by hand. We wanted an agent that doesn't just chat about your schedule but actually plans, checks conflicts and re-plans when reality changes, without ever touching your data without your say-so.
What it does
CampusPilot is an AI academic co-pilot for students.
- Ask in plain language: "Plan my next two days", "I lost two hours today", "Mark my DBMS assignment complete", "Add a 15-min coffee break."
- The agent calls 12 validated tools (plan, replan, deadlines, schedule, free slots, create/update task, notices, check-in, wellbeing) against a real backend.
- It shows a proposed plan with a diff (added, moved, removed). Nothing is saved until you press Confirm and Save. Cancelling leaves your active plan untouched.
- A live dashboard shows task cards, deadline countdowns, a day timeline and conflicts, all rendered from the database rather than hardcoded sample data.
- Study check-ins, notices, and task actions (done / postpone / change duration) all work from the UI.
- Alexa+ (simulated) voice mode: say "Alexa, ask CampusPilot to plan my next two days." The wake phrase is stripped before the request reaches the agent, and replies are spoken back. It is clearly labelled as a web simulation using the browser Web Speech API, not a real Alexa skill or Amazon service.
- Works offline: with no API key, a deterministic quick mode runs against the same backend, and the UI shows a visible "Fallback mode" badge.
How we built it
One FastAPI process serves a single-file web UI and the JSON API from the same origin, backed by SQLite.
Browser → FastAPI → Agent → Backend services → SQLite
The core principle: the LLM chooses tools, Python does the work. Gemini only proposes a tool and arguments. Our code validates them, runs the scheduling, conflict detection and persistence deterministically, and returns the result. Chat can never save a plan. /plan/save is the only path to an active plan, and a second confirm is rejected with a 409.
Everything lives in SQLite, so plans survive a refresh and a server restart. We containerized it with Docker and set it up for one-click deploys on Render. Live-AI usage has per-day and per-visitor limits, and the app falls back gracefully when a limit or an API error is hit.
Challenges we ran into
- Keeping the LLM from owning state. We forced every write through a validated tool and a confirmation step so a bad model output can't corrupt a schedule.
- Demo reliability. The Gemini free tier can throttle a live demo, so we built the quick mode with the same backend. A demo never depends on the network.
- Free hosting quirks. Ephemeral disks mean the database can reset, so startup recreates and reseeds with dates relative to today. The shared demo student needed a reset endpoint.
- Voice support. Speech recognition only works in Chrome/Edge with microphone permission, so typing is always available as a fallback.
- Being honest about the Alexa+ track. We built a labelled simulation, not an integration, and say so in the UI and docs.
Accomplishments that we're proud of
- A full test suite (backend contract, API, agent guardrails, seed data and end-to-end) that runs entirely offline: 156 tests passing from a fresh clone in a clean virtualenv.
- A plan lifecycle with no silent writes: propose → diff → confirm → save → replan, all persistent.
- Graceful degradation everywhere: no key, quota hit, no mic, and still a working demo.
What we learned
Reliable agents come from keeping the model's job small. Letting the LLM interpret intent and pick tools, while deterministic code owns the schedule and the data, made the system testable and trustworthy. We also learned to design for the demo failing: fallbacks, rate limits and reset paths matter as much as features.
What's next for CampusPilot
- A real Alexa skill instead of a simulation.
- Accounts and per-student isolation instead of one shared demo student.
- Linking check-ins to specific tasks, and making the daily study target a real stored preference.
- Calendar import and automatic announcement classification.
Code: https://github.com/Akshaj-code14/Instantiated_Coders_Amazon
Log in or sign up for Devpost to join the conversation.