How to Build a Learning Tracker in Notion That Actually Teaches You Things
Most Notion learning trackers are glorified course lists.
You add a course, set the status to In Progress, update the progress percentage occasionally, and call it a system. The problem is that tracking progress through a course is not the same as retaining what the course teaches. You can watch every video, mark it complete, and remember almost nothing three weeks later.
This guide builds something more complete. Not just a tracker for what you're learning, but a system for how you learn — with spaced repetition scheduling that tells you when to review something, active recall templates that force retrieval rather than passive re-reading, and a dashboard that surfaces the right material at the right moment without you having to think about what to study next.
It's more involved than a simple database. It's also significantly more useful.
What You're Building
Three interconnected databases:
Skills & Topics Hub — the subjects you're developing, with visual progress tracking
Resource Library — the courses, books, articles, and documentation feeding into those skills
Notes & Synthesis Log — your active recall notes with automatic spaced repetition scheduling
A dashboard pulling all three together into one workspace with filtered views for capturing, studying, and reviewing.
Step 1: Base Page Setup
Create a blank page in Notion and name it Learning Tracker.
At the top, type /callout to insert a callout block. Add the icon ✦ and label it Learning Tracker Controller. This serves as your workspace header — a fixed reference point at the top of the page.
Press Enter and type three dashes --- to insert a thin divider beneath the header.
Below the divider, you'll set up a two-column layout. Type two lines of placeholder text: "Left Column" and "Right Column." Hover over "Left Column," click and hold its six-dot drag handle, and drag it to the left edge of "Right Column" until a vertical blue guide line appears. Release. This creates a 30% / 70% split — the left column for navigation and capture, the right column for your main working views.
Leave the placeholder text for now. You'll replace it with linked database views in Step 7.
Step 2: Create Your Database Directory
Before building the databases, create a hidden directory page to store the source databases. Below the column layout, type /heading 1. Type "Database Directory". Below it, create three separate databases using /table → Table view → New database:
Skills & Topics Hub
Resource Library
Notes & Synthesis Log
Step 3: Configure Database Properties
Navigate into each database inside the Database Directory and set up the properties exactly as listed.
Skills & Topics Hub
Properties You Need:
- Title (Default)
- Status (Select)
Status Options (You can customize):
- Not Started
- In Progress
- Mastered
The Progress Bar property comes later via formula — don't add it manually.
Resource Library
Properties You Need:
- Status (Status)
- Type (Select)
- URL (URL)
Status Options (You can customize):
- To Start (Not Started Category)
- In Progess (In Progress Category)
- Completed (Complete Category)
Type Options (You can customize):
- Video
- Article
- Book
- Course
- Documentation
Use Notion's native Status property type (not Select) for the Status column — it has built-in category groupings that the formula and filtering logic depends on.
Notes & Synthesis Log
Properties You Need:
- Title (Default)
- Last Reviewed (Date)
- Retention Score (Select)
Retention Score Options (You can customize):
- Again
- Hard
- Good
- Easy
The Title field naming convention matters here. Every entry in Notes & Synthesis Log should be phrased as a question you'd ask yourself during review — not "React useEffect" but "What does useEffect do and when does it run?" This framing turns passive browsing into active retrieval every time you open the database.
Step 4: Build the Bi-Directional Relations
Relations connect the three databases so that a skill knows which resources feed into it, which notes synthesize it, and a resource knows which notes were taken from it. Build them in this order.
In Skills & Topics Hub:
Add a Relation property → search for Resource Library → toggle on "Show on Resource Library."
Name in Skills & Topics Hub: Resources
Name in Resource Library: Skill / Topic
Add a second Relation property → search for Notes & Synthesis Log → toggle on "Show on Notes & Synthesis Log."
Name in Skills & Topics Hub: Notes
Name in Notes & Synthesis Log: Skill / Topic
In Resource Library:
Add a Relation property → search for Notes & Synthesis Log → toggle on "Show on Notes & Synthesis Log."
Name in Resource Library: Notes & Logs
Name in Notes & Synthesis Log: Resource Link
When complete, each database entry is connected across all three:
A skill → knows its resources and its notes
A resource → knows its skill and its notes
A note → knows its skill and its resource
This three-way connection is what makes the system function as a knowledge graph rather than three separate lists.
Step 5: Add the Formulas
Two formulas power the system's intelligence. Both use Notion Formulas 2.0 syntax.
Formula 1: Progress Bar in Skills & Topics Hub
This formula calculates what percentage of a skill's linked resources are completed and displays it as a color-coded visual bar without requiring any rollup properties.
Add a Formula property to Skills & Topics Hub. Name it Progress Bar. Open the formula editor and paste:
lets(
resources, prop("Resources"),
totalCount, resources.length(),
totalValue, resources.map(
if(current.prop("Status") == "Completed", 1,
if(current.prop("Status") == "In progress", 0.5, 0))
).sum(),
ratio, if(totalCount > 0, totalValue / totalCount, 0),
filledSegments, round(ratio * 10),
emptySegments, 10 - filledSegments,
progressBar, "■".repeat(filledSegments).style("purple", "b") + "□".repeat(emptySegments).style("gray"),
if(
totalCount > 0,
progressBar + " " + round(ratio * 100) + "%",
"No Resources Linked".style("gray", "i")
)
)
Formula 2: Next Review Date in Notes & Synthesis Log'
This formula implements spaced repetition scheduling. Based on your last Retention Score, it calculates when you should next review a note — automatically.
Add a Formula property to Notes & Synthesis Log. Name it Next Review Date. Open the formula editor and paste:
lets(
last, prop("Last Reviewed"),
score, prop("Retention Score"),
base, if(empty(last), now(), last),
interval,
if(empty(score), 0,
if(score == "Again", 0,
if(score == "Hard", 1,
if(score == "Good", 3,
if(score == "Easy", 7,
0))))),
dateAdd(base, interval, "days")
)
How to use it:
After reviewing a note, update Last Reviewed to today and set Retention Score to how well you remembered it. The Next Review Date recalculates automatically. Notes you rated Easy disappear from your review queue for a week. Notes you rated Again reappear immediately.
This is a simplified spaced repetition system — not as sophisticated as Anki's algorithm, but significantly more effective than reviewing everything at random or reviewing nothing at all.
Step 6: Create the Active Recall Template
Active recall is the practice of retrieving information from memory rather than passively re-reading it. The template enforces this by hiding answers inside toggle blocks — you read the question, attempt the answer mentally, then reveal the answer to check.
In Notes & Synthesis Log, click the dropdown arrow next to the blue New button → select + New Template → name it ✦ Active Recall Note.
Inside the template canvas, build this structure:
Line 1: Type /toggle to create a toggle block. Title it: Click to Reveal Core Concept Answer
Inside the toggle (click to open it), write the answer, explanation, or synthesis. For code-related notes, type /code to insert a code block with syntax highlighting. For inline references, wrap terms in backticks.
The answer lives inside the toggle. When you review the note, you read the title (the question), attempt recall, then click the toggle to verify. This is the retrieval practice that makes the learning stick.
Line 2: Below the toggle, type --- for a divider.
Line 3: Type ## Synthesis Log as a Heading 2.
Under the Synthesis Log heading, write a plain-language explanation of the concept in your own words. Not a copy of the source material — your own synthesis. If you can't explain it in your own words, you don't understand it yet. This section exposes that gap before you move on.
Click back to exit the template editor. Now every new note created in Notes & Synthesis Log can use this template with one click.
Step 7: Assemble the Dashboard
Return to your top-level Learning Tracker page. Delete the placeholder column text and replace it with linked database views.
Left Column (30% width) — Navigation and Capture
View 1: Quick Inbox Capture
Type /list → select List view → choose Notes & Synthesis Log as the data source.
Add two filters:
Resource Link → is empty
Skill / Topic → is empty
This view shows only notes that haven't been linked to a skill or resource yet. Use it as a capture inbox — write notes quickly here without worrying about categorization, then triage them into the right skill and resource later.
View 2: Skills & Taxonomy Roadmap
Type /board → select Board view → choose Skills & Topics Hub as the data source → group by Status.
Click the three dots on the database block → Properties → click the eye icon to make Progress Bar visible on the cards.
The board shows your skills organized by Not Started, In Progress, and Mastered, with each card displaying its visual progress bar. At a glance you can see which skills are active and how far along each one's resource list is.
Right Column (70% width) — Active Work
View 3: Active Research Feed
Type /gallery → select Gallery view → choose Resource Library as the data source.
In layout options: set Card preview to None, card size to Small.
Add a filter: Status is In Progress.
Show properties: Type and Skill / Topic.
This view shows only the resources you're currently working through — nothing queued, nothing completed. A small gallery of active items gives you a clear read on whether you have too many resources open at once (more than three usually means context switching is happening).
View 4: Today's Active Recall Queue
Type /board → select Board view → choose Notes & Synthesis Log as the data source.
Add a filter: Next Review Date is on or before Today.
Group by: Retention Score. Sort ascending by Next Review Date.
This is your daily study queue. Every note whose Next Review Date has arrived appears here automatically. The Retention Score grouping shows which notes keep returning as Again or Hard — those are the concepts that need more attention. Notes rated Easy move to a 7-day interval and disappear from the queue until next week.
Open the board each morning. Work through the cards. Update Last Reviewed and Retention Score for each one. The queue rebuilds itself overnight based on the scores you set.
Step 8: Connect to Notion Calendar
Notion Calendar lets you see your review schedule as actual calendar events — useful for planning study sessions alongside your regular work.
Open Notion Calendar (calendar.notion.so or the desktop app).
Go to Settings → Notion workspaces → Add Notion workspace to authenticate.
In the left sidebar, hover over your workspace name → click ••• → select Add Notion database.
Search for and select Notes & Synthesis Log.
How the System Works Day to Day
When you start a new resource:
Add it to Resource Library with Status = To Start. Link it to the relevant skill in Skills & Topics Hub. The skill's Progress Bar stays at 0% until you start completing resources.
While working through the resource:
Change Status to In Progress. Take notes in Notes & Synthesis Log using the Active Recall template. Phrase every note title as a question. Link each note to both the resource and the skill.
After a study session:
Open Today's Active Recall Queue. Review each due note — read the question, recall the answer, click the toggle to verify. Update Last Reviewed to today. Set Retention Score honestly. The Next Review Date recalculates.
When a resource is complete:
Change Status to Completed. The Progress Bar in Skills & Topics Hub updates automatically. When all resources for a skill are complete, the bar fills. Change the skill Status to Mastered.
Weekly:
Check Quick Inbox Capture for unlinked notes and triage them. Check the Skills Roadmap for skills that have stalled. Open Active Research Feed and confirm you don't have more than three resources In Progress simultaneously.
Why This Works Better Than a Simple Progress Tracker
The standard learning tracker tells you how far through a course you are. This system tells you how much of what you've covered you actually remember.
The spaced repetition schedule means concepts you struggle with come back sooner. Concepts you know well come back less often. Over time the review queue adapts to the shape of your actual knowledge gaps rather than reviewing everything at a fixed interval.
The active recall templates mean every review session is a retrieval practice event, not a re-reading session. Retrieval practice produces significantly better long-term retention than passive review. The toggle structure enforces it without requiring willpower.
The relational architecture means your skills, resources, and notes are never disconnected. A skill knows its resources. A note knows where it came from. Nothing lives in isolation.
If you want a pre-built version of this system without building all the formulas and relations from scratch, click here.
What's your current system for retaining what you learn from courses? Drop it in the comments.










