How to Remember and Not Forget: Implementing and Automating the Spaced Repetition System
Hi! My name is Dima, and I’m a Backend Developer at Doubletapp. I’d like to share my experience in automating the process of learning and retaining a large amount of information.
The Problem I Faced
Recently, I encountered a problem with retaining large amounts of information. When studying materials, especially in long courses or self-learning, knowledge tends to slip away over time. As a result, a lot of time gets wasted.
This issue is particularly relevant for IT professionals since technology evolves rapidly. To stay competitive, it’s crucial to continuously learn new tools and disciplines.
A Possible Solution
While searching for effective learning techniques, I came across Spaced Repetition. This is a method based on the principle that knowledge is better retained when review intervals are spaced out over time.
Spaced Repetition utilizes the forgetting curve, discovered by German psychologist Hermann Ebbinghaus. This curve illustrates how quickly information fades from memory. The method essentially flattens the forgetting curve, ensuring long-term retention of information.
To apply Spaced Repetition, follow this basic algorithm:
- Learn new material.
- Review the material after e^i days, where i is the repetition number.
Ready-Made Tools
When searching for existing tools that implement Spaced Repetition, I found several popular solutions. However, after testing them, I realized that none fully met my requirements. Here’s a brief overview of each, along with their pros and cons:
As we can see, all Spaced Repetition tools have their strengths and weaknesses. Some are too complex, others require significant financial investment, and some lack flexibility or personalization. Given these limitations, it might be worth considering the development of a custom solution or improving existing tools to meet specific needs.
Notion + ActivePieces + ChatGPT
The idea is to create a dashboard that displays notes (flashcards) that need to be reviewed. After each review session, the system will send a follow-up message with self-check questions to reinforce the material.
To implement this, we will use the following tools:
- Notion — Dashboard and note-taking system
- ActivePieces — No-code (almost) automation for review flow
- ChatGPT — LLM for generating questions and answers based on notes
Let’s go through each component.
Notion
Notion is a versatile application for note-taking, project management, and knowledge organization. It includes databases, Kanban boards, wikis, calendars, and reminders — making it ideal for keeping study notes.
Notion offers an API for automating various processes. Before setting that up, let’s first build the dashboard:
- Create a new page.
2. Add a Table View and a database to store study notes.
3. Create an Empty View, where flashcards due for review today will be displayed.
4. Choose a Gallery format for better visualization.
5. Add attributes to each flashcard:
6. Apply a filter in the previously created View to show only the notes that need review today.
To add a new note:
- Create a flashcard in the database.
- Fill in the description of the note.
- Set the Start Date to the current date.
- Set Level = 1.
Each time the Level is updated, the Next Date will automatically adjust.
Dashboard ready! Now, let’s move on to automating the review process.
ActivePieces
Since all programmers are lazy, we’ll use a No-Code solution. I chose ActivePieces, a tool for automating business processes with pre-built action templates. It allows you to implement simple tasks with minimal time investment.
ActivePieces offers two usage options:
- SaaS
- Self-hosted
I opted for Self-hosted since it doesn’t have monthly execution limits for flows.
Installing ActivePieces is extremely simple. The official installation guide can be found here.
Let’s set up a flow. ActivePieces allows you to export flows in JSON format, so here’s the link to the preconfigured flow.
First, we set up the following integrations:
- Telegram Bot
- Notion
- ChatGPT
In the Connections tab, we enter the necessary tokens.
Flow steps in detail:
- Trigger: Updated Topic — Activates when a study note is modified.
- Check the “Repeated” checkbox status.
- If the status is True, continue the flow. Otherwise, stop execution.
- Remove the True status for the “Repeated” checkbox.
- Increment the “Level” value.
- Update the “Level” in Notion.
- Retrieve note content via the Notion API. Notion API doesn’t return plain text, so we must iterate through objects and concatenate the text manually.
- Put the text together.
- Ask ChatGPT to generate questions and answers based on the study note.
- Send the generated questions and answers via Telegram Bot.
As a result, whenever a study note is reviewed (by checking “Repeated”), the Telegram bot will send a message with a list of questions and answers related to the note.
User Experience
Here’s my experience using this system — both the positive and negative aspects.
Pros
- Improved Memory Retention. I used to study the old-fashioned way — reading textbooks, taking notes, and reviewing them before exams. However, after a few days, most of the information would vanish from my mind. The Spaced Repetition System (SRS) ensures that material is reviewed precisely when the brain starts forgetting it. This reinforcement method truly works! Now, I can remember even complex terms and dates that used to fade after just a couple of days.
- Time Efficiency. The system automatically determines what and when to review, significantly reducing wasted time. Previously, I would spend hours reviewing material I already knew. Now, if I have mastered something well, the system schedules the next review far in the future, allowing me to focus on difficult topics.
- Organization and Discipline. SRS introduced structure into my learning process. I no longer struggle with deciding how and when to review materials.
Cons
- Not Everything Fits into SRS. SRS works great for memorizing facts, definitions, formulas, and vocabulary. However, it is less effective for understanding complex concepts or deeply analyzing theoretical material. It’s not the best tool for creative or conceptual learning.
- ChatGPT Query Costs. Unfortunately, ActivePieces doesn’t support alternative LLM integrations for generating quiz questions. This means relying on ChatGPT, which can be costly over time.
Potential Applications
This solution can be used in various scenarios where knowledge retention is crucial. Some examples:
- Exam Preparation — Students often cram vast amounts of information in a short time. Using Spaced Repetition throughout the semester can ease the workload (even though we all love last-minute stress).
- Self-education — Regular reviews help maintain and reinforce knowledge, preventing gradual forgetting.
- Business & Career — Professionals can use SRS to remember new skills, strategies, and industry knowledge for career growth.
Conclusion
Overall, my experience with the Spaced Repetition System has been positive. It helped me structure my learning process and greatly improved my ability to retain information. Yes, SRS requires discipline and consistency, which can sometimes be challenging. However, if you stick to the plan, it truly makes learning more effective and manageable.
Read our other stories:
- Frontend Application Architecture in React (No FSD Needed)
- Has AI already taken over the world?
- Doubletapp Meeting Notes
- How to communicate with a knowledge base in natural language: using LLM to create such a system and evaluating its performance
- University International Sports Festival: Website for the festival
- Mobile Application for Exams (NDA)
- IT-Regatta Identity
- Branding for the Data Science Kazakhstan Community
- Agency Growth Day: Event Website for Alto
- How We Implement JWT Authentication
- MOBILE APP TESTING — PROCESS DETAILS
- DNS for beginners: what is it, how does it work, and what is it for?
- Cross-platform Mobile App Development — Pros and Cons
- Stages of Design Process
- Storing Resources Wisely: How to Organize Resources in a Multi-Module Project
- They Will Make You Hate It: Getting to Know VAST and VPAID, or How to Integrate Ads into a Web Video Player
- The Role of QA in Product Security Testing
- Overview of Monitoring System with Prometheus and Grafana
- “External” navigation in a multi-module project in Kotlin
- Parsing responses to BLE commands in Swift using the example of GoPro
- What Is Happening With The Mobile App Market
- Yandex Travel
- Case Ural Music Night
- Player’s Health Protect
- DJU Drone Club
- Case Alibra School
- Case Praktika
- Case Watchmen
- Case Adventure Aide
- Neural Network Optimization: Ocean in a Drop
- Case Elixir Gallery
- Forgive us, John Connor, or How We Taught a Neural Network to Accurately Recognize Gunshots
- Case Bus Factor
- CI/CD for iOS-projects: device or cloud? What’s better, Doubletapp’s take
- How to set up Gitlab CI/CD with Fastlane for iOS-project on a Mac mini
- The story about the contest from telegram
- What should be done before starting the site? Checklist from Doubletapp
- How to Generate PDF Documents in Python
- How to manage Gradle dependencies in an Android project properly
- The History of the Doubletapp Company