Inspiration
Study Rescue was inspired by a common problem students face: having multiple assignments, deadlines, and responsibilities but not knowing what to work on first.
Traditional to-do lists are useful for recording tasks, but they do not always help students decide which assignment is most urgent, how much time should be allocated to it, or what to do when a study plan falls apart.
I wanted to build something that was more adaptive.
The idea behind Study Rescue was to create a tool that does not simply say, “Here are your assignments,” but instead helps answer:
- What should I work on first?
- How much time do I realistically have?
- Can I complete this before the deadline?
- What happens if I fall behind?
This led to the creation of Study Rescue, an AI-powered academic planning application that combines priority scoring, student availability, and adaptive AI scheduling.
What It Does
Study Rescue allows students to add assignments with information such as:
- Module
- Assignment title
- Deadline
- Weight
- Difficulty
- Estimated workload
- Current progress
The application then calculates a priority score using a deterministic algorithm.
The priority score considers:
- Deadline urgency
- Assignment weight
- Difficulty
- Current progress
Assignments are classified as Critical, High, Medium, or Low priority.
Students can also enter how many hours they realistically have available to study each day.
Study Rescue uses this information to generate an AI-powered rescue plan that tells the student:
- What assignment to work on
- How long to work on it
- What specific task to complete
- Why that task should be prioritised
One of the main features is “I Fell Behind.”
If a student misses planned study time because of work, illness, family responsibilities, or another unexpected event, they can tell Study Rescue how many hours they missed and why.
The system then rebuilds the study plan while protecting the closest deadlines and highest-priority work.
How I Built It
The frontend was built using React, Vite, JavaScript, and CSS.
For the backend and database, I used Supabase.
Supabase is responsible for:
- User authentication
- PostgreSQL database storage
- Assignment data
- Study availability
- Progress updates
- Row Level Security
- Edge Functions
Each user can only access their own assignments and availability through Supabase Row Level Security policies.
I created a custom priority algorithm in JavaScript to calculate the urgency of each assignment before AI is used.
The AI scheduling system uses the Gemini API.
Instead of exposing the Gemini API key in the frontend, the request is sent through a Supabase Edge Function, where the API key is stored securely as a secret.
The Edge Function sends structured assignment and availability information to Gemini and asks it to return the study plan as structured JSON.
The React frontend then displays this plan on the student's dashboard.
The application is deployed using Vercel, with the source code stored on GitHub.
Challenges I Faced
One of the biggest challenges was making the AI-generated schedules accurate.
During development, the AI sometimes produced incorrect weekdays, inconsistent study-hour totals, or zero-minute study sessions.
For example, the AI could correctly identify an assignment deadline but describe the wrong weekday in the summary.
I improved the prompt by explicitly providing the current date and weekday, adding strict scheduling rules, and requiring the AI's summary to match the generated sessions.
I also added rules preventing:
- Zero-minute sessions
- Placeholder sessions
- Work being scheduled after deadlines
- Study hours exceeding the student's availability
Another challenge was connecting authentication, the database, and the frontend correctly.
I had to configure Supabase Row Level Security so that each authenticated user could only access their own information.
Deploying the application also required configuring the correct environment variables and authentication redirect URLs so that the live Vercel version worked the same way as the local development version.
What I Learned
This project taught me that integrating AI into an application involves much more than simply calling an AI API.
The quality of the result depends heavily on:
- The structure of the data being sent
- Clear prompt instructions
- Validation
- Error handling
- Security
- Reliable non-AI logic
I also learned how frontend applications communicate with backend services, how authentication sessions work, how Row Level Security protects user data, and why API secrets should never be stored directly in frontend code.
Building the priority algorithm also helped me understand the value of combining deterministic programming with AI.
Instead of asking AI to make every decision, Study Rescue first calculates assignment priorities using its own logic and then gives that structured information to Gemini.
This makes the AI one part of the system rather than the entire system.
Reliability and Fallback Planning
Another important lesson was not to make the application completely dependent on an external AI service.
Study Rescue includes a local fallback scheduling system.
If AI generation becomes unavailable, the fallback system can still:
- Rank unfinished assignments
- Calculate remaining workload
- Check deadlines
- Check available study hours
- Allocate study sessions
- Warn students if there is not enough time available
This makes the application more resilient.
What's Next
Future improvements could include:
- Google Calendar integration
- Study reminders and notifications
- Automatic assignment imports
- Calendar-based time blocking
- Study-session completion tracking
- Study analytics
- Improved workload estimation
- Mobile support
My goal for Study Rescue is to move beyond static task management and create a study planning system that continuously adapts to the reality of a student's life.
Built With
- academic-planning
- ai
- css
- education-technology
- gemini-api
- generative-ai
- github
- javascript
- postgresql
- productivity
- react
- row-level-security
- scheduling
- student-productivity
- supabase
- supabase-auth
- supabase-edge-functions
- vercel
- vite