Deadline/exam date feature

  1. Reddit - Dive into anything

  2. Reddit - Dive into anything

  3. Reddit - Dive into anything

  4. Reddit - Dive into anything

  5. Reddit - Dive into anything

  6. Reddit - Dive into anything

  7. Reddit - Dive into anything

  8. Reddit - Dive into anything

  9. Reddit - Dive into anything

  10. Reddit - Dive into anything

  11. Reddit - Dive into anything

One of the most commonly requested scheduling-related features is setting a deadline such that all cards are guaranteed to be reviewed at least once before that deadline. I’m actually quite surprised that Anki doesn’t have that, considering that it’s so often requested by students.

The user would choose a future date in a calendar (similarly to “Ignore cards reviewed before” with FSRS), and Anki would make sure that all cards in the selected preset have intervals such that the cards will show up before that date. For example, if the deadline is in 30 days, Anki would make sure that all cards have intervals <30. Then this number would be adjusted every day, kinda like a dynamic max. interval (actually, not “kinda”, but literally like max. interval that gets adjusted once per day). When 29 days are left, all cards would have intervals <29, etc.

There is a major issue, however: this would mean that on the day immediately before the deadline day, the user could potentially end up with an enormous amount of due cards. So the naive approach isn’t great.

@Danika_Dakika @sorata @rossgb @A_Blokee just pinging you guys cause maybe you have some good ideas
@L.M.Sherlock perhaps you have some ideas how this could be implemented?

4 Likes

It’s a bit of a tricky one because I’m not sure that it is well defined / that everyone wants the same thing from a “deadline mode”.

You could argue that setting DR as high as you can tolerate/keep up with should be enough. You can also use filtered decks to force a once-over of all cards if you want.

Disorganised thoughts if you are going with a special “deadline mode”:

  • You probably want all the “extra” reviews to happen after the normal ones and to be prioritised by their normal due date. You still want kind of optimal time usage if they fail to do all reviews.

  • Maybe you don’t actually reschedule cards, you treat it as a special kind of “custom study”. A “cram for deadline” mode with “seen at least x times since date, then R Ascending”

  • You might want to account for re-learning time. If you rescheduled a card to the day before an exam and then forget it, did it really help if you don’t have the time to relearn and strengthen it?

  • Can we do some kind of burndown chart showing if the user is on-pace to do well in their exam?

  • Should a “deadline mode” be more fancy than just rescheduling?
    e.g. We ask for target workload, minimum mean R, minimum S, deadline then run simulations and tell a user “at your pace you should do n new cards a day, suspend these cards, and choose this DR to get the optimal results on date”

5 Likes

How about something like if the interval is larger than the deadline, scheduling as if there were a higher desired retention

I quickly programmed it into the simulator with the learn_span as the deadline:


Maybe not as great an effect as I’d like but you can see the slight rebound in memorised near the end there.

50 vs 100 days (83% DR):

Much more pronounced with a lower DR:


Still a huge buildup but maybe better than the naive approach.

3 Likes

A possibly slightly controversial thought:

Would it also be a good idea to make sure the workload peaks some time before the deadline and then drops lower than normal for the last few days if we predict your retention will be good on deadline day?

Showing 3x normal reviews just before the deadline might be really difficult to manage and make you so stressed you do worse.

People always have the option to manually cram if they really want to.

Yes, users ask for that frequently … but that doesn’t make it a good idea, does it? I only skimmed your link dump [which if you at least put them in a bulleted list, we won’t have to scroll past screenfuls of empty previews], but you somehow missed all the times I’ve explained why it doesn’t make sense to use the max interval for this.

Setting a ridiculously low max interval doesn’t accomplish anything.

For one, it doesn’t just hold the challenging cards down under that ceiling, it holds the easier cards down too. You want Anki to give those easier cards longer intervals to get them out of the way of the cards that actually need your attention.

But also – it doesn’t work. Unless you’re going to keep lowering your max interval every day, cards will still be scheduled after your exam. And if you are going to keep lowering it, forcing all of your cards to have shorter and shorter intervals … you can see how that’s the opposite of what spaced repetition is trying to do.

My bad, fixed.

Regarding the core idea, I think the right implementation would be beneficial. We don’t need to show a card tons of times, we just need to make sure that a card is reviewed at least once before the deadline.

Here’s a better idea than dynamic max. interval: record not only the date of the deadline, but also the date when the user activated the “deadline mode”. Now we have two dates, and we need to make sure that every card is reviewed at least once (not including the initial, first review when the card is new). So the logic would be like this:

  1. If a card’s second/third/nth review is scheduled before the deadline, don’t change intervals.

  2. If it’s scheduled after the deadline, assign it an interval randomly chosen from the [0.75 * (days_until_deadline - 1), (days_until_deadline - 1)] range instead. The randomness is just to prevent all cards from piling up on the same day. For example, if the deadline is in 30 days and the card’s interval is supposed to be 40 days, choose an interval from [22, 29] instead.

  3. If a card has already been reviewed before the deadline (again, excluding the first review when it’s new), don’t change scheduling. Take the example above, but a bit different: suppose the deadline is in 30 days and the interval is 40 days. However, this card has already been reviewed between the user enabling “deadline mode” and the deadline date. So the interval remains 40 days.

This ensures that every card learned after enabling the “deadline mode” will be reviewed at least once, but not necessarily more. And if a card has been reviewed before the deadline, then it is “free” in the sense that its intervals are no longer affected by the “deadline mode”, since it has achieved what we wanted it to.
Later we can also make the minimum number of reviews before the deadline adjustable.

@A_Blokee would you simulate this, please?

1 Like

I hope this is the correct implementation at least?
I hard-coded deadline mode to start at day 50 (meaning from day 50 you’re going to see every card(?)).
(blue 60 days (10 days in deadline mode) orange 70 days etc)


Causes my reviews to skyrocket (Really as expected reviewing every card I have in 10 days XD).

With a long learn_span it can get become a little more bearable, but as Ross said, I don’t expect people to want to do 600 Anki reviews the day before their exam:
(increments of 100 starting at 150)


Seems correct to me.

The results are surprising. I thought for sure this would alleviate the issue of exploding workload as the deadline approaches. Maybe not entirely get rid of it, but at least make it clearly better than the “max. interval that gets adjusted once per day” approach.

2 Likes

(ping me in discord, I don’t always see emails from here)

I’m personally not sure it’s a good goal (and as you have already seen, the reviews aren’t manageable). A good goal would be what Luc identified (I’ve talked about this before actually):

I think you need, high memorised count near the deadline, and probably also high stability near the deadline (@sound might say).

Then the task becomes, how to schedule cards in such a way that we are able to accomplish this. And without flooding the user with excessive reviews.

That will become repetition without spaced ^^

I think that’s why stability is an important metric to look at (see my reply above). If you have high enough stability for cards, you might still perform well after a retrieval failure.

Can you please elaborate? I don’t know what that is sadly.

“Don’t study too much just before the exams” is an advice we often get.

Spitballing here, maybe allow the user to input how many reviews they want to do just before the exams. And schedule cards with that limitation.

I don’t mean something silly like setting it to 99% when you have thousands of cards.

I meant that you might normally have DR=80% and spend 30 mins a day, but would be comfortable doing up to 60 mins
In the run-up to an exam you play around and find that DR=90% and rescheduling all cards gets you about 60mins of daily work, so switch to that for the revision period.

One possible way of doing it (which probably doesn’t work because of how S behaves):

In our example imagine that our goal is for 90% of our cards to have a stability greater than 14 days by the deadline.

x is the date, starting when you turn on deadline mode and ending on the deadline date.

y is the number of cards with a stability below 14 days (including new).

You draw an “ideal progress” line from your initial state (top left) to the goal state (bottom right).

Each day you plot your actual state on another line. If you go above the first line you are not making progress fast enough and need to speed up to meet the deadline.

Here is the deadline implementation except the “Deadline DR” is 95% instead of 90%

I’m going to use parameters for a preset with less leeches and use 500 new cards.

Each has a regular desired retention decreasing by 5% each time starting at 95% (1-0.05x)
(with 95% the Deadline DR will do nothing)

30 days, 50 new a day

365 days, 10 new a day

My method actually seems to converge well in my opinion, that no matter the regular DR, on exam day you will have the same memorised card count. While also saving yourself huge 95% DR effort with the earlier days.

I think a very useful add-on to do this is maybe Exam Notifier. It’s developed by Anking, Glutanimate, and abdo, and is often used by medical students.

Add-on: Exam Notifier / add-on code: 236593452 likle:42
Github: exam-notifier

> Exam Notifier provides users with notifications that a card will appear after an upcoming exam date. This feature allows the user to determine how to answer the card (i.e. Again, Hard, Good, Easy) or determine if rescheduling the card is deemed necessary.

Good morning !
I started using Anki months ago ,and in our system we take an exam every months for different topics ,and i found it hard to remember that amount of informations in this short period
,
So i suggest adding a “DEADLINE” to anki features, it’s going to be so useful when it comes to near exams, to make sure the material is covered (i really need it🙂)
Thank you.

1 Like

anotherone-dj-khaled

I think the day when the deadline feature is implemented will be celebrated by the entire community :laughing:

1 Like

These add-ons are a bit similar to that.
add-on: Exam Notifier
add-on: Countdown To Events and Exams

2 Likes

Settings for using Anki to prepare for a large exam

4 Likes

I wonder what would happen if you vary the DR even more. Let’s say, for a 2-month deadline, you start with 70 and increase DR by a percentage every 2 days or so.

1 Like