Inspiration
Student burnout is a cycle of cramming, skipping sleep, and ignoring how you feel until you finally crash. We realized most study tools only focus on grinding out work, treating a student's capacity as if it were infinite. We were inspired to build a "wellness-first" solution that actually identifies the warning signs of burnout and forces you to prioritize recovery before it happens.
What it does
BurnoutBuddy is a smart study platform that acts as an intermediary between a student's schedule and their immediate focus sessions. It securely syncs with Google Calendar and uses AI (Gemini 2.5) to transform an overwhelming 7-day schedule into a manageable, prioritized task list. As users work through customizable Pomodoro cycles, the app enforces mandatory wellness check-ins. By analyzing this check-in data alongside schedule density, BurnoutBuddy calculates a live Burnout Risk Score and automatically routes students to specific, localized UVA resources (like CAPS or Student Health) if they need support.
How we built it
We built BurnoutBuddy on a fully asynchronous Python and FastAPI backend, connected to a PostgreSQL database hosted on Supabase. The frontend is a responsive React 19 app styled with Tailwind CSS and shadcn/ui. We utilized Supabase for seamless Google OAuth authentication, allowing us to securely pull users' schedules via the Google Calendar API. To power our intelligent task generation, we integrated Gemini 2.5 Flash Lite using LangChain.
Challenges we ran into
Securely handing off Supabase OAuth tokens from the React client to our FastAPI backend required careful configuration to ensure proper server-side identity verification. We also battled race conditions during asynchronous calendar syncing, which we solved by implementing per-user database locks to prevent duplicate events. Finally, extracting reliable JSON from our LLM was a major hurdle until we adopted LangChain's structured output tools.
Accomplishments that we're proud of
We are incredibly proud of our "Wellness-First" architecture that calculates a live Burnout Risk Score based on real user data and schedule density. We successfully built "meaningful friction" into the app by forcing wellness check-ins before users can resume working. Technically, we’re proud of our highly functional, Picture-in-Picture capable Pomodoro timer, and our localized routing that connects distressed students directly to actionable UVA emergency resources.
What we learned
We learned that relying on LangChain and Pydantic for structured AI output is vastly superior to raw prompt engineering, eliminating an entire class of parsing bugs. On the UX side, we discovered that adding intentional friction, like mandatory wellness gates, is sometimes the only way to gather reliable health data. Technically, handling high-concurrency database connections in async SQLAlchemy taught us crucial lessons about session lifecycle management.
What's next for BurnoutBuddy
We plan to expand our calendar integration to automatically ingest assignments directly from LMS platforms like Canvas. We also want to build long-term data visualization dashboards so students can track their burnout risk across an entire semester, and eventually scale our localized emergency resource mapping to support universities nationwide!
Built With
- fastapi
- geminiapi
- langchain
- oauth
- python
- react
- supabase
- tailwind
- typescript
- uvicorn
Log in or sign up for Devpost to join the conversation.