Creating learning materials like flashcards by hand can be time-consuming and repetitive. Retrieval practice using flashcards is one of the most effective learning methods, but how can you make well-crafted flashcards as quickly as possible to allow yourself or your students to start applying retrieval practice? As our previous blogpost explained, making flashcards is not the part that yields the most effective learning. Weinstein, McDermott and Roediger (2010) showed learning results from self-made flashcards as well as the others flashcards were more effective than rereading the material, but did not differ significantly from each other. Furthermore, manually creating flashcards involves gathering key terms, definitions, and key concepts from source material, like study books, which requires effort. Using our whitepaper’s practical guidance for creating effective flashcards and ChatGPT, we found a way to speed up this process, allowing teachers and students to create high-quality lessons more efficiently.
Skip to prompt creation instructions
Previous solutions
We’ve tackled parts of this challenge before. In the past, we used large language models (LLMs) like ChatGPT to:
- Format Lists: Take an unformatted list and prepare it for upload into the MemoryLab editor (e.g., format “Hello – Hallo” pairs for an uploadable language lesson).
- Generate Lessons from Scratch: Create entire lessons based on:
- The LLM’s general knowledge (e.g., create a cognitive psychology lesson),
- A piece of text (e.g., create a lesson based on a 1000-word article extract),
- A glossary list from a book (e.g., create a lesson based on a given list of terms from textbook margins).
Limitations
These methods have been helpful, but come with some limitations:
- The need for pre-formatted lists: Most of us don’t have a neatly typed list of vocabulary or terms ready for upload. If there’s no such list, it still means copying and pasting terms individually—a task we’re trying to avoid.
- Lack of context and accuracy: Relying solely on ChatGPT’s general knowledge can sometimes lead to misleading or overly generic definitions. For example, if you ask for a definition of “light,” ChatGPT may not know whether you mean light as in “weight” or “visible light.” Or take “validity”—a statistics book might define it very precisely, while a history text may only give a general sense. Without context clues from the book, ChatGPT may provide definitions that miss these nuances.
In short, to efficiently and easily create quality lessons, it’s useful to work from original source material whenever possible. All prompts below have been tested on the premium version of ChatGPT (GPT 4o), but the free version can also be used.
Generate lessons using different source materials
So how can you leverage ChatGPT to create effective flashcards? Start by selecting your source material. You might have:
- 1) A digital book, document or summary
- 2) A physical book
- 3) A vocabulary list photo
Scenario #1: A digital book, document or summary
Follow the steps and copy all the coloured text into a single prompt. For reference here’s a full prompt example:
Show full prompt 📋 Copy
Create a .csv file with 30 rows worth of multiple-choice flashcard items from the text in the attached pdf. Focus on glossary items that students should learn. Here's how you should proceed:
- Extract glossary terms: Look for key terms emphasised throughout the text.
Make sure to create 30 rows of original items. These items should represent quiz questions that a teacher could ask in a classroom.
- Create flashcard items: For each term, write a short, scientifically accurate definition (15 words or less) as the cue, and use the term itself as the correct answer.
CSV Structure: The exact column order should be: ‘cue’, ‘cue image name’, ‘cue audio name’, ‘correct answer’, ‘distractors’, ‘alternative spelling’. Include all columns in the table.
- cue: Write a short phrase of at most 15 words that provides a concise and scientifically accurate definition of the glossary term, acting as an experienced teacher of Clinical Neuropsychology.
- correct answer: The term itself.
- distractors: Make a list of 3 fake distractor answers that are separated with the ‘||’ characters.
- Leave the columns cue image name, cue audio name, and alternative spelling empty.
- Please ensure the CSV file is formatted correctly and includes items from the entire chapter, not just from a single section.
- Each row must contain one flashcard item.
Here is an example for a flashcard item:
- correct answer: Pragmatiek
- cue: Relatie tussen taaluitdrukkingen en specifieke situaties
- distractors: Semantiek || Fonologie || Morfologie
Here are some things you should NOT do:
- Do not use the exact answer or its root word in the cue: For example, instead of saying "Samenwerking tussen verschillende disciplines" with the correct answer "Multidisciplinaire samenwerking," rephrase the cue to use a synonym or description that conveys the meaning without directly using the root word (e.g., "Samenwerking tussen verschillende vakgebieden"). Similarly, avoid using cues like "Stoornis waarbij het moeilijk is om taken te organiseren" when the correct answer is "Organisatiestoornis." Instead, rephrase the cue using a synonym like "Problemen bij het structureren van taken."
- Do not use the same answer twice in one lesson.
Here are things to watch out for when generating your output:
1. Check for Special Characters in Strings
If any glossary terms or distractor answers contain characters like quotes, new lines, or special characters, it may break the string formatting. Make sure to escape these characters, like so:
Single Quotes: Use \' inside strings enclosed in single quotes, or " for enclosing strings.
New Lines: Use \\n for a line break within a string.
2. Ensure Proper String Closure
Make sure that every string in the code has a corresponding starting and ending quote. You could automate the check for unmatched quotes using a script or a linter.
3. Break Down Large Input into Smaller Chunks
To handle large queries or files, consider processing smaller sections of the input text. This helps in catching errors early.
4. Verify Special Cases Like Empty Strings
Ensure that empty strings or missing values don’t lead to errors, especially when creating fields like distractors or alternative spellings. Ensure fields are always either filled or left blank with "" in CSV format.
5: Skip Data Previews
Directly generate the file without previewing any of the data until the file is ready for download.
6: Precompute Data
If the data transformations or computations take time, do those without showing intermediate results and just focus on getting the CSV output.
Step 1: Get a single book chapter or summary
Extract a chapter from the book PDF and clean up irrelevant pages. This prevents ChatGPT from mixing content across chapters.
Step 2: Describe the task
Describe to the model what you want it to do; creating a .csv file with flashcard items, what type of input it will get (a summary or book chapter), and how it should perform its task:
📋 Copy
Create a .csv file with 30 rows worth of multiple-choice flashcard items from the [chapter of a book/summary] in the attached pdf. Focus on glossary items that students should learn. Here's how you should proceed:
- Extract glossary terms: Look for key terms emphasised throughout the text.
Make sure to create 30 rows of original items. These items should represent quiz questions that a teacher could ask in a classroom.
- Create flashcard items: For each term, write a short, scientifically accurate definition (15 words or less) as the cue, and use the term itself as the correct answer.
Furthermore you could specify some details on the specific input you’re giving. For example, sometimes key terms are italicised or definitions in brackets and you want the LLM to certainly use those:
📋 Copy
[Sometimes key terms are italicised or definitions in brackets. Just these italicised and bracketed bits of text might not yield a list of 30 items. Therefore, also come up with pieces of relevant information from the text yourself based on what the author emphasises, like important concepts or definitions.]
Step 3: Explain the expected CSV output
We want the LLM to output a MemoryLab importable lesson file. Therefore we need to explain what that looks like.
📋 Copy
CSV Structure: The exact column order should be: ‘cue’, ‘cue image name’, ‘cue audio name’, ‘correct answer’, ‘distractors’, ‘alternative spelling’. Include all columns in the table.
- cue: Write a short phrase of at most 15 words that provides a concise and scientifically accurate definition of the glossary term, acting as an experienced teacher of Clinical Neuropsychology.
- correct answer: The term itself.
- distractors: Make a list of 3 fake distractor answers that are separated with the ‘||’ characters.
- Leave the columns cue image name, cue audio name, and alternative spelling empty.
- Please ensure the CSV file is formatted correctly and includes items from the entire chapter, not just from a single section.
- Each row must contain one flashcard item.
Step 4: Give an example of your expected output
Make sure to give the model examples on what your output should look like. It is a good idea to insert your own example data here. The LLM generates much better data then. The model is able to generate distractor multiple choice answers well. It uses terms from the book that a student could reasonably expect to need to differentiate between, like the example below:
📋 Copy
Here is an example for a flashcard item:
- correct answer: Pragmatiek
- cue: Relatie tussen taaluitdrukkingen en specifieke situaties
- distractors: Semantiek || Fonologie || Morfologie
Step 5: Warn the LLM for common errors
Guide ChatGPT to avoid these common errors:
- Avoid using the exact answer word in the cue
📋 Copy
Here are some things you should NOT do:
- Do not use the exact answer or its root word in the cue: For example, instead of saying "Samenwerking tussen verschillende disciplines" with the correct answer "Multidisciplinaire samenwerking," rephrase the cue to use a synonym or description that conveys the meaning without directly using the root word (e.g., "Samenwerking tussen verschillende vakgebieden"). Similarly, avoid using cues like "Stoornis waarbij het moeilijk is om taken te organiseren" when the correct answer is "Organisatiestoornis." Instead, rephrase the cue using a synonym like "Problemen bij het structureren van taken."
- Don’t repeat terms in one lesson.
📋 Copy
- Do not use the same answer twice in one lesson.
Step 6: Warn the LLM for file generation problems it usually has
ChatGPT often gets stuck generating files. Below are some technical things to prevent ChatGPT from getting stuck generating the file:
📋 CopyHere are things to watch out for when generating your output:
1. Check for Special Characters in Strings
If any glossary terms or distractor answers contain characters like quotes, new lines, or special characters, it may break the string formatting. Make sure to escape these characters, like so:
Single Quotes: Use \' inside strings enclosed in single quotes, or " for enclosing strings.
New Lines: Use \\n for a line break within a string.
2. Ensure Proper String Closure
Make sure that every string in the code has a corresponding starting and ending quote. You could automate the check for unmatched quotes using a script or a linter.
3. Break Down Large Input into Smaller Chunks
To handle large queries or files, consider processing smaller sections of the input text. This helps in catching errors early.
4. Verify Special Cases Like Empty Strings
Ensure that empty strings or missing values don’t lead to errors, especially when creating fields like distractors or alternative spellings. Ensure fields are always either filled or left blank with "" in CSV format.
5: Skip Data Previews
Directly generate the file without previewing any of the data until the file is ready for download.
6: Precompute Data
If the data transformations or computations take time, do those without showing intermediate results and just focus on getting the CSV output.
Does ChatGPT still get stuck? Try the following:
- If ChatGPT gets stuck you can also ask it to not generate the file but output a copyable comma-separated list like the csv. This also circumvents the need for the premium version that can output files, but does require you to copy the text to a .txt file and change the filename extension from .txt to .csv.
- Furthermore, if the LLM runs into issues, opening a new chat and inputting the same query can sometimes lead to better results. Also, I used to input the same prompt each chapter that I generated a lesson of to make sure the LLM does not ‘forget the prompt instructions’. It can have a tendency to neglect previously known instructions.
Step 7: Input the prompt and check output for common problems
After you’ve modified and copied all the parts above to set up the full query, input it like this. Check the file that ChatGPT gave back and look for the following list of things. You can copy these texts and ask the LLM to come up with fixes. Give the PDF as input again so that it knows the correct context.
- Questions where the answer is already given in the question: For example:
- cue: ‘Spontaan herstel van hersenfuncties zonder behandeling’
- answer: ‘Spontaan herstel’
- revised cue: ‘Natuurlijke proces waarbij hersenfuncties na een letsel verbeteren zonder interventie’
- Duplicate answers: If you see any duplicate correct answers in the file, that is, the same answer in multiple rows, copy them and ask the LLM to merge the flashcard items into one item. The cue should still be 15 words or less.
- Distractors that do not fit the question: Find unfitting distractors, and come up with better, more fitting distractors. That is, make sure distractors are similar enough to the answer and written in a similar manner. For example:
- cue: ‘Hersengebied verantwoordelijk voor motorische beweging’
- answer: ‘Motorische cortex’
- distractors: ‘Neuroplasticiteit || Synaptogenese || Gedragscompensatie’
- revised distractors: ‘Basale ganglia || Pariëtaalkwab || Cerebellum’
- Distractors too similar to the answer: Manually find distractors that too closely resemble the correct answer. Some distractor answers are so close to the actual answer that they could be considered correct. For example:
- ‘Statistische maat voor de sterkte en richting van een relatie tussen twee variabelen’ had the correct answer ‘Correlatiecoefficient’ and a distractor ‘Regressiecoefficient’.
Step 8: Import the CSV as an Excel file and import into MemoryLab
Import the .csv files into Excel. Then you can move on to https://my.memorylab.app, https://mijn.slimstampen.nl, or any other MemoryLab domain and import the Excel file and create an open answer or multiple choice lesson.
Scenario #2: A physical book
If you only have a physical copy of the book, you can still generate effective flashcards with a few extra steps. Scan (or photograph) the relevant pages and use optical character recognition (OCR) to turn them into machine-readable text (e.g., using Adobe Acrobat Pro). Then, follow the same steps as above to generate flashcards.
Show full prompt 📋 Copy
Create a .csv file with 30 rows worth of multiple-choice flashcard items from the text in the attached pdf. Focus on glossary items that students should learn. Here's how you should proceed:
- Extract glossary terms: Look for key terms emphasised throughout the text.
Make sure to create 30 rows of original items. These items should represent quiz questions that a teacher could ask in a classroom.
- Create flashcard items: For each term, write a short, scientifically accurate definition (15 words or less) as the cue, and use the term itself as the correct answer.
CSV Structure: The exact column order should be: ‘cue’, ‘cue image name’, ‘cue audio name’, ‘correct answer’, ‘distractors’, ‘alternative spelling’. Include all columns in the table.
- cue: Write a short phrase of at most 15 words that provides a concise and scientifically accurate definition of the glossary term, acting as an experienced teacher of Clinical Neuropsychology.
- correct answer: The term itself.
- distractors: Make a list of 3 fake distractor answers that are separated with the ‘||’ characters.
- Leave the columns cue image name, cue audio name, and alternative spelling empty.
- Please ensure the CSV file is formatted correctly and includes items from the entire chapter, not just from a single section.
- Each row must contain one flashcard item.
Here is an example for a flashcard item:
- correct answer: Pragmatiek
- cue: Relatie tussen taaluitdrukkingen en specifieke situaties
- distractors: Semantiek || Fonologie || Morfologie
Here are some things you should NOT do:
- Do not use the exact answer or its root word in the cue: For example, instead of saying "Samenwerking tussen verschillende disciplines" with the correct answer "Multidisciplinaire samenwerking," rephrase the cue to use a synonym or description that conveys the meaning without directly using the root word (e.g., "Samenwerking tussen verschillende vakgebieden"). Similarly, avoid using cues like "Stoornis waarbij het moeilijk is om taken te organiseren" when the correct answer is "Organisatiestoornis." Instead, rephrase the cue using a synonym like "Problemen bij het structureren van taken."
- Do not use the same answer twice in one lesson.
Here are things to watch out for when generating your output:
1. Check for Special Characters in Strings
If any glossary terms or distractor answers contain characters like quotes, new lines, or special characters, it may break the string formatting. Make sure to escape these characters, like so:
Single Quotes: Use \' inside strings enclosed in single quotes, or " for enclosing strings.
New Lines: Use \\n for a line break within a string.
2. Ensure Proper String Closure
Make sure that every string in the code has a corresponding starting and ending quote. You could automate the check for unmatched quotes using a script or a linter.
3. Break Down Large Input into Smaller Chunks
To handle large queries or files, consider processing smaller sections of the input text. This helps in catching errors early.
4. Verify Special Cases Like Empty Strings
Ensure that empty strings or missing values don’t lead to errors, especially when creating fields like distractors or alternative spellings. Ensure fields are always either filled or left blank with "" in CSV format.
5: Skip Data Previews
Directly generate the file without previewing any of the data until the file is ready for download.
6: Precompute Data
If the data transformations or computations take time, do those without showing intermediate results and just focus on getting the CSV output.
Scenario #3: A vocabulary list photo
For quick generation from a vocabulary list, take a photo of the list. Then, give ChatGPT a prompt to create a CSV file where each word pair forms a flashcard item.
Show full prompt 📋 Copy
Create a .csv file with multiple-choice flashcard items based on all the vocabulary items in this photo.
CSV Structure: The exact column order should be: ‘cue’, ‘cue image name’, ‘cue audio name’, ‘correct answer’, ‘distractors’, ‘alternative spelling’. Include all columns in the table.
- cue: The pieces of vocabulary text in the left column
- correct answer: The piece of vocabulary text in the right hand column
- distractors: Make a list of 3 fake distractor answers that are separated with the ‘||’ characters.
- Leave the columns cue image name, cue audio name, and alternative spelling empty.
- Each row must contain one flashcard item.
Here is an example for a flashcard item:
- correct answer: to realise
- cue: beseffen
- distractors: to acquire || to know || to memorise
Here are things to watch out for when generating your output:
1. Check for Special Characters in Strings
If any glossary terms or distractor answers contain characters like quotes, new lines, or special characters, it may break the string formatting. Make sure to escape these characters, like so:
Single Quotes: Use \' inside strings enclosed in single quotes, or " for enclosing strings.
New Lines: Use \\n for a line break within a string.
2. Ensure Proper String Closure
Make sure that every string in the code has a corresponding starting and ending quote. You could automate the check for unmatched quotes using a script or a linter.
3. Break Down Large Input into Smaller Chunks
To handle large queries or files, consider processing smaller sections of the input text. This helps in catching errors early.
4. Verify Special Cases Like Empty Strings
Ensure that empty strings or missing values don’t lead to errors, especially when creating fields like distractors or alternative spellings. Ensure fields are always either filled or left blank with "" in CSV format.
5: Skip Data Previews
Directly generate the file without previewing any of the data until the file is ready for download.
6: Precompute Data
If the data transformations or computations take time, do those without showing intermediate results and just focus on getting the CSV output.
Step 1: Take a picture of your vocabulary list
To skip over retyping this list we can simply ask the LLM to read from a picture that you make of that list. See for example the following list of items from a high school book:
Step 2: Describe the task
📋 Copy
Create a .csv file with multiple-choice flashcard items based on all the vocabulary items in this photo.
Step 3: Explaining the CSV output
We want the LLM to output a MemoryLab importable lesson file. Therefore we need to explain what that looks like.
📋 Copy
CSV Structure: The exact column order should be: ‘cue’, ‘cue image name’, ‘cue audio name’, ‘correct answer’, ‘distractors’, ‘alternative spelling’. Include all columns in the table.
- cue: The pieces of vocabulary text in the left column
- correct answer: The piece of vocabulary text in the right hand column
- distractors: Make a list of 3 fake distractor answers that are separated with the ‘||’ characters.
- Leave the columns cue image name, cue audio name, and alternative spelling empty.
- Each row must contain one flashcard item.
Step 4: Give an example of your output
Make sure to give the model examples on what your output should look like.
📋 Copy
Here is an example for a flashcard item:
- correct answer: to realise
- cue: beseffen
- distractors: to acquire || to know || to memorise
In theory we could extend step 3 and ask ChatGPT to provide alternative spellings of answers and answers that would also be considered correct. In that case we could provide an example with an alternative correct answer and an alternative spelling:
📋 Copy
- correct answer: to realise || to appreciate
- cue: beseffen
- distractors: to acquire || to know || to memorise
- alternative spelling: to realize
Step 5 and 6: Warn the LLM for file generation problems it usually has
Use the same input as in step 6 previously to warn ChatGPT for generation errors.
Step 7 and 8: Input the full prompt, check the output and import into MemoryLab
Step 7 can be reduced to simply checking whether the output has the expected output and does not contain any errors.
Conclusion
While ChatGPT can generate a large part of your MemoryLab flashcards, human review remains essential. This hybrid approach—combining AI with expert oversight—ensures accurate, high-quality lessons while saving time. Whether using digital summaries, physical textbooks, or even a quick photo, this method can make lesson creation more efficient and adaptable.