A deadline list is not a plan. It tells you that a 25 percent midterm lands on the 14th and a lab report lands on the 16th. It does not tell you which evening you are actually going to sit down, for how long, and on what. That gap is where most semesters quietly go wrong: nothing is forgotten, everything is simply started too late.

The two failures look different but come from the same place. The first is underestimating something large — a project that reads as one line on a to-do list and turns out to be six hours of work you cannot compress into the night before. The second is the pile-up, where three courses independently schedule work into the same seven days and no single syllabus warned you, because no single syllabus knew about the others.

Smart Plan closes that gap using data Semora already holds. It reads every incomplete deadline across every course in the selected semester, estimates the effort each one needs, and places that effort as timed sessions across the next 14 days. Then it rebuilds on every visit, so a plan you ignored on Tuesday is not a plan you have to fix on Wednesday.

How Smart Plan builds your next two weeks

The planning horizon is 14 days, starting today. Everything inside that horizon is a straight, repeatable pass over your data — there is no model call and no network round trip in the scheduling itself, which is why the same inputs always produce the same plan.

It starts by collecting every incomplete task in the selected semester that has a readable due date. A task with a start date in the future is held out until that day arrives, so work you deliberately deferred does not get dragged into this evening. For each remaining task it works out an effort estimate in minutes, then subtracts the minutes you have already completed against that task in earlier sessions.

Then it walks forward one day at a time. It skips the day entirely if you have weekends turned off and it is a Saturday or Sunday. Otherwise it sets a starting cursor at your weekday or weekend start time, and on today specifically, at whichever is later, your start time or the current time rounded up to the next quarter hour. It marks out the blocked time on that day, gives the day a minute budget, ranks the eligible tasks, and places sessions from the cursor forward with a 10-minute gap after each one. The day stops at 11:00 PM.

  • Blocked time includes every class meeting scheduled for that weekday, drawn from the meeting times on your course schedule.
  • Blocked time also includes any session you already completed that day, reserved from its start through its end plus a 10-minute buffer, so a rebuild never stacks new work on top of work you finished.
  • With "avoid calendar conflicts" on, blocked time includes events from your device calendar for that date, padded by 10 minutes on each side.
  • The day's budget is your daily study capacity minus the minutes you already completed that day, so finishing early genuinely buys the rest of the evening back.
  • A slot is only used if the whole session fits before the next blocked range; otherwise the placement jumps past that range and tries again.
  • Nothing shorter than 15 minutes is ever placed.

How long it thinks each thing will take

Every task carries an Estimated Effort field when you create or edit it, with presets of Smart estimate, 30m, 1h, 2h, 3h, 4h, and 8h. If you set a real number of 15 minutes or more, that number wins outright — it is your task and you know it better than a heuristic does. Values are capped at 2,880 minutes, which is 48 hours, so a mistyped estimate cannot swallow the entire horizon.

When you leave it on Smart estimate, the planner falls back to a base figure for the task type: 45 minutes for a reading, 60 for other, 75 for a quiz, 90 for an assignment, 240 for an exam, and 360 for a project. That base is then scaled by the grade weight the scan pulled off your syllabus — 1.5x at 25 percent or more, 1.25x at 15 percent or more, 1.1x at 8 percent or more, and unscaled below that. The result is rounded up to the next 15 minutes.

So a midterm worth 30 percent of your grade reads as 240 times 1.5, or six hours of prep, spread across the days you have left. A five-percent reading reads as 45 minutes. None of this is hidden from you: change the type or the weight on the task and the estimate changes with it, and if the estimate is simply wrong, override it with the effort presets and the plan rebuilds around your number.

What gets scheduled first, and why

Ordering is where a planner earns its keep, because when the days are full, something has to lose. Each task gets a load score of its grade weight multiplied by a per-type prep multiplier: 3x for an exam, 2.5x for a project, 1.5x for a quiz, 1.2x for an assignment, and 1x for a reading or other. A task with no weight extracted still counts, using a deliberately small base of 5, so an un-weighted exam still outranks an un-weighted reading on the strength of its type alone.

That score is then multiplied by priority (1.55x for High, 0.78x for Low, unchanged for Normal) and divided by how far away the deadline is, floored so that something due today does not divide by zero. Finally a pace term is added: the task's remaining minutes divided by the number of enabled study days between now and its due date. The pace term is what stops a large, distant project from being permanently outranked by a stream of small urgent things until it becomes an emergency.

Within a single day, each task accumulates a share of its remaining work equal to remaining minutes divided by available days, rounded down to a 15-minute multiple. An 8-hour project due in 10 days therefore surfaces as a 30-minute session today and a 45-minute session on each following day, landing exactly on the deadline rather than as a wall on the final weekend. A task due today, or already overdue, skips the spreading entirely and targets its full remaining effort immediately. Ties break by earlier due date, then alphabetically by title, so the order is stable rather than arbitrary.

The settings you actually control

Plan preferences sit behind a collapsible panel at the top of the screen, and the header always shows the current values in shorthand — something like "90m/day · 45m sessions", so you can see the shape of your plan without opening anything.

Saving runs a single "Save & rebuild plan" action: the preferences write and the plan regenerates together, so you never save a setting and then wonder whether it took effect. These preferences live on your account rather than on one device, so changing your session length on your iPhone changes the plan you see on your iPad and on the web.

  • Daily study capacity: 1h, 1h 30m, 2h, or 3h. Default is 1h 30m.
  • Focus session length: 25, 45, or 50 minutes. Default is 45.
  • Weekday start time, default 5:00 PM, and a separate weekend start time, default 10:00 AM, both set with a time picker.
  • Study on weekends, on by default. Turn it off and Saturday and Sunday are skipped completely, which also shortens the available days used for pacing.
  • Auto-reschedule missed sessions, on by default.
  • Avoid calendar conflicts, on by default, with a 10-minute buffer on either side of each event.

When a deadline moves, or you skip a session

Opening Smart Plan is the reschedule action. It runs on every focus of the screen, not only the first time you launch the app, so coming back to it after three days always produces a plan built for today rather than a stale one built for Monday.

A session counts as missed when it is still unfinished and it is either dated before today, or dated today at a start time that has already passed. The rebuild discards every open session in the semester and regenerates them from today forward against your current tasks, settings, and schedule. Completed sessions are never touched — they stay as history, their minutes stay subtracted from the task's remaining effort, and their time stays reserved on the day they happened.

That combination is what makes the rebuild safe to run over and over. It is deterministic and it never double-counts, so opening the screen five times in an afternoon does not five times duplicate your week. Sessions that moved are labeled in place with "Moved from" and the original date, and a status line at the top summarizes what just happened: how many missed sessions moved forward, and how many calendar conflicts were avoided. If nothing notable happened it says the plan was rebuilt from your latest deadlines.

If you would rather the plan hold still, turn off auto-reschedule. The screen tells you it is off, and the refresh button in the top right becomes the only thing that rebuilds it.

From a plan to actual work

Sessions are grouped by day with human labels (Today, Tomorrow, then a weekday and date) and each day header carries that day's total. Only today and future days are listed; yesterday's plan is not something you need to look at.

Each row has three actions. The circle on the left marks the session complete. Tapping the row opens the underlying task, so you can check the description or edit the deadline that created the session in the first place. The play button on the right opens the focus timer preloaded with that session's exact length and the task's title, and when the focus phase finishes, the session is marked complete for you.

Above the list, a summary bar shows three live numbers: sessions ahead, total planned time still outstanding, and how much you have already finished today. It is a small thing, but it is the difference between "I have a plan" and "I have done 45 minutes of it."

The Workload dashboard, which is the same data zoomed out

Smart Plan handles the next 14 days. The Workload dashboard, also included with Pro, handles the semester, and it is genuinely the more useful of the two in the first week of a term, before anything is urgent yet.

The weekly chart buckets every incomplete deadline into ISO weeks spanning your semester's start and end dates, or the range of your own due dates when the semester has none. Each bar is the sum of the same weight-times-type load score the planner uses. A week is flagged as a crunch week when its load is at least one standard deviation above the mean of the loaded weeks and it holds at least two deadlines, so a single heavy exam does not paint a week red on its own, and a semester with evenly spread work correctly flags nothing rather than flagging everything.

  • A crunch callout names the next crunch week, counts the deadlines stacking up in it, and tells you how many crunch weeks the term holds in total.
  • An exam density strip lists only the weeks that actually contain an exam, earliest first, with the count per week.
  • Load by course sorts heaviest first and shows the incomplete count, the percentage of the grade still in play, a relative load bar, and the next deadline by title and date. Courses with nothing outstanding are omitted.
  • The header shows the semester name and how many weeks are left in it.
  • A short list ranks your three most pressing tasks into Do now, Coming up, and Plan ahead, with a link straight into the timed plan.

Who this is genuinely for, and who it is not

Smart Plan is built for a student carrying three or more courses with real weighted syllabi, where at least one course has a multi-week project or a heavy exam and the deadlines are dense enough that ordering matters. It is at its best when you have scanned your syllabi, because grade weights and class meeting times both feed directly into the scheduling.

It is worth less to you if you are taking one course with two deadlines — the ordering problem you would be paying it to solve does not exist yet. It is also a poor fit if you want a fixed, immovable timetable, because the whole design premise is that the plan is disposable and gets rebuilt. And if you have not entered your class meeting times, it cannot avoid classes it does not know about; the same is true for anything that lives only in your head.

One boundary worth stating plainly: the planner's calendar lookup is read-only and iOS-only. It never creates, edits, or deletes an event on your calendar. Writing your schedule out to your calendar app, and .ics export, are a separate Pro feature you turn on deliberately in settings.

The awkward cases

Not enough hours is the most common one, and it is surfaced rather than hidden. If work due inside the 14-day window cannot fit in your capacity, an amber banner states exactly how much time is unscheduled and names the two real fixes: raise your daily capacity or lower your task estimates.

Overdue work is not dropped. A task past its due date targets its full remaining effort today rather than disappearing from the plan. A task due later today with a due time keeps its sessions before that time; if that time has already passed, it falls back to the normal day window so it stays actionable instead of vanishing.

Bad data is contained rather than fatal. A class meeting with a missing or nonsensical end time is treated as one hour. A far-future imported due date is capped at a 120-day span for pacing, so a typo cannot make today's contribution round to zero. The weekly chart is capped at 104 weeks and folds anything beyond the last bucket into it, so a stray deadline four years out is never silently dropped from the counts.

Calendar access is handled quietly. Automatic refreshes never prompt for permission, only saving your settings can ask. If permission is denied, or you are on the web where the lookup is unavailable, the plan still avoids your classes and the status line says so directly. All-day events are ignored, since otherwise a single all-day entry would block an entire day, and events that cross midnight are split so each day is compared independently.

Finally, the save itself is validated on the server. Sessions must be between 15 and 180 minutes, every task must be one of yours and still incomplete, and the semester must belong to you. If a save fails, the plan is not left half-written — you get an inline error, and a manual rebuild also raises an alert.