Inspiration

Every student has experienced that moment when multiple deadlines collide. A schedule may look manageable at first, but one assignment takes longer than expected, an urgent task appears, or the available study time simply isn't enough.

Most planning tools help you organize tasks, but planning becomes much harder when reality changes. I wanted to build something focused on that overlooked moment: helping students recover from a disrupted plan instead of starting over.

That idea became Deadline Rescue.

What it does

Deadline Rescue is a student-focused planning assistant that turns tasks, deadlines, durations, priorities, and available study hours into a structured schedule.

But its main purpose is not just scheduling. It also helps students respond when things go wrong.

  • Build a schedule: Organizes tasks into available study windows while considering deadlines and priorities.
  • Detect unrealistic plans: Identifies tasks that cannot fit and explains capacity problems instead of pretending everything is achievable.
  • Recover from disruptions: Lets students report delays, longer-than-expected tasks, or new urgent work.
  • Compare proposed changes: Shows what would move, what may remain unscheduled, and the trade-offs involved.
  • Keep students in control: Proposed changes are not applied automatically. Students can review, approve, or reject them.
  • Interact conversationally: A built-in assistant supports natural-language requests and guided actions.

Deadline Rescue also includes a simulated Alexa+ style experience to demonstrate a conversational approach to planning. It is a web-based simulation, not a live Alexa+ integration.

How I built it

I built Deadline Rescue using React, TypeScript, Vite, and Vitest. I used Codex as my development environment to help plan, implement, and test the application.

The scheduling engine uses deterministic TypeScript logic rather than relying on an AI model to perform scheduling calculations. Tasks are scheduled using an earliest-deadline-first approach, with priority and stable tie-breaking rules. Availability windows, task durations, feasibility checks, and schedule comparisons are handled by application code.

The conversational layer interprets supported user requests and connects them to the existing planning logic. When a disruption occurs, the application generates a candidate schedule and presents the differences for the student to review before making any changes to the accepted plan.

The application is designed to run locally without requiring a paid AI API or a separate backend.

Challenges I faced

One of the main challenges was making the planner honest about time constraints. A visually complete schedule is not useful if it silently ignores a deadline or assumes that more time is available than the student actually has.

Another challenge was implementing schedule recovery without unexpectedly changing the user's existing plan. I designed the workflow around proposals, comparisons, and explicit approval or rejection.

I also worked on keeping the scheduling behavior deterministic, handling deadline and time formatting consistently, and testing the interactions between the assistant, scheduler, feasibility analysis, and recovery flow.

What we learned

This project helped me understand that a useful planning assistant needs more than a conversational interface. It needs reliable underlying logic, clear explanations, predictable behavior, and meaningful user control.

I learned how to structure a TypeScript application around a deterministic scheduling engine, test complex interactions, and turn planning results into an interface that helps people understand not only what to do next, but also why a plan may need to change.

What's next

I want to continue improving the clarity of schedule explanations, the experience of reviewing proposed changes, and the reliability of the application across different screen sizes.

My goal with Deadline Rescue is simple: when a student's plan falls apart, help them find a realistic next step — without pretending that time is unlimited.

Built With

Share this project:

Updates

Submission history