Get AI summaries of any video or article — Sign up free
Notion Masterclass: Build a Note Taking System from Scratch thumbnail

Notion Masterclass: Build a Note Taking System from Scratch

Thomas Frank Explains·
6 min read

Based on Thomas Frank Explains's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.

TL;DR

Build the dashboard from one master notes database and one tags database, then generate every section using linked database views with filters.

Briefing

A complete Notion note-taking dashboard can be built from a blank page by using one “master” notes database plus linked database views, filters, and templates—turning Notion into an inbox-to-archive system for both handwritten notes and web clips. The core idea is to capture quickly in an Inbox, then automatically route items out of that Inbox once they’re tagged or identified as web content, while keeping everything sortable and searchable through views like Favorites, Recents, Tags, and a drag-and-drop Noteboard.

The build starts with a full-width, two-column layout and a clear navigation structure: Inbox and Favorites at the top, followed by Recents, Tags, and a full-width Noteboard. The Inbox is designed as a holding area for unprocessed items—notes that have not yet been tagged and (for the “Web Clips” tab) items that do have a URL. This separation matters because it supports two different capture contexts: something created by the user versus something clipped from the internet.

Under the hood, everything runs through a single notes database that holds each note as a row with properties. The tutorial adds key properties: favorite (checkbox), archived (checkbox), created time, edited time, URL (for web clips), and a select “type” (e.g., lecture, book, voice note). A second database called tags stores tag pages with similar favorite and archived checkboxes, plus a relation back to notes. That relation is what enables the Inbox filter logic: notes leave the Inbox once their tag relation is no longer empty.

Linked views then create the dashboard sections. The Inbox view uses advanced filters such as “archived is unchecked,” “tag is empty,” and “URL is empty” (for Notes) or “URL is not empty” (for Web Clips). Favorites is another linked view, filtered to “favorite is checked,” with sorting removed so items can be manually reordered. Recents is filtered to “archived is unchecked” and sorted by edited time descending, with load limits reduced (e.g., 10 pages) to keep columns from becoming unwieldy. An additional Recents tab for voice notes filters by type = voice note.

The Tags area shifts from duplicating note views to building linked views of the tags database itself. It includes an A–Z list view, a Favorites gallery view (card cover, small cards, side peek), and a Noteboard board view that groups notes by tag or by type. Notes can be dragged between groups, mimicking a kanban-style workflow.

The “next level” feature is a tag database template. A self-referential filter automatically updates linked views inside each tag page so that a tag page’s notes, favorites, and web clips always reflect the tag it represents—no manual filter rewiring for each new tag. A button workflow (“New note”) uses Notion’s button steps to create a new page in the notes database and open it in side peek.

Finally, an Archive page provides safe storage by filtering for archived = checked, with table views and a column-freezing feature to keep the archived checkbox visible while scrolling. The tutorial also adds formula-based “sprinkles” like edited-time badges, duration formatting, AI cost formatting, and tag-page formulas such as latest note, latest note date, and note count—plus a base URL formula that can group web clips by source domain. The result is a single-page system that manages notes end-to-end: capture, tag, review, browse by tag, and archive without losing context.

Cornell Notes

The system is built around one master “notes” database and one “tags” database, then uses linked database views with filters and sorting to create an end-to-end dashboard. Inbox views route items automatically: notes appear when tag is empty and URL is empty, while Web Clips appear when URL is not empty. Favorites and Recents are separate linked views—Favorites filters on favorite = checked (with manual ordering), and Recents sorts by edited time descending with a load limit to keep things tidy. Tag pages are generated from a tags database template using a self-referential filter, so each new tag automatically shows its own notes, favorites, and web clips. An Archive page completes the loop by filtering archived = checked, keeping old content out of active views without deleting it.

How does the dashboard ensure that Inbox items “graduate” once they’re processed?

Inbox views use advanced filters tied to properties in the notes database. For the Notes tab, the view shows rows where archived is unchecked, tag is empty, and URL is empty. Once a note gets a tag relation (so tag is no longer empty), it no longer matches the Inbox filter and disappears from Inbox. For the Web Clips tab, the view keeps the same archived constraint but switches to URL is not empty (and tag is empty), so clipped items land in Web Clips until they’re tagged.

Why create a separate tags database instead of just using a tag property on notes?

The tags database enables a relation between tags and notes, which behaves like folders. Each tag page can store its own favorite and archived status, and the relation allows linked views on both sides. In practice, the Inbox filter can check whether a note’s tag relation is empty, while tag pages can show all related notes. This relation is what makes the system feel like a traditional note folder structure inside Notion.

What’s the purpose of duplicating linked views and then tweaking filters rather than building everything from scratch?

Duplicating a linked view preserves the layout, view type, and most configuration, so only the filter/sort changes are needed. The tutorial repeatedly duplicates the Inbox view to create Web Clips, then duplicates again to create Favorites and Recents variants. This reduces setup time and keeps the dashboard consistent, especially when adding properties visibility and sorting rules.

How does the tag template avoid manual reconfiguration for every new tag page?

The tags database template uses a self-referential advanced filter: it filters where tag contains tag template. When the template is applied to a new tag page (e.g., “marketing”), Notion automatically updates that filter to reference the new instance of the page. The linked views inside the tag page (notes, tag favorites, web clips) therefore automatically show the correct related notes without changing filters by hand.

What makes the Favorites area different from Recents in day-to-day use?

Favorites is filtered to favorite = checked and removes automatic sorting so items can be manually reordered (drag-and-drop). Recents is designed for discovery and recency: it includes everything (within constraints like archived unchecked) and sorts by edited time descending. Recents also uses a load limit (e.g., 10) so the dashboard stays fast and readable.

How do formulas and property visibility “sprinkles” improve the system without changing its structure?

Formulas add computed metadata while keeping the same database/view architecture. Examples include an edited-time badge (e.g., “zero days,” “two days”), duration formatting from duration seconds, and AI cost formatting as US dollars. On tag pages, formulas like latest note, latest note date, and note count populate useful summary fields. Property visibility settings then hide helper fields by default to keep the interface clean while still enabling sorting and linking where needed.

Review Questions

  1. If a note has URL filled in but no tag relation yet, which dashboard section should it appear in, and what filters cause that behavior?
  2. Describe how the tags database template’s self-referential filter works and why it matters when creating new tag pages.
  3. What tradeoff does the system make by using load limits in Recents, and how does that affect usability when the database grows?

Key Points

  1. 1

    Build the dashboard from one master notes database and one tags database, then generate every section using linked database views with filters.

  2. 2

    Use Inbox filters to separate user notes from web clips: URL empty for Notes, URL not empty for Web Clips, while tag empty keeps items in the holding area.

  3. 3

    Create a relation between tags and notes so Inbox can detect “untagged” items and tag pages can list their related notes like folders.

  4. 4

    Use Favorites as a manually ordered view by filtering favorite = checked and removing automatic sorting.

  5. 5

    Use Recents as a recency-driven view by sorting on edited time descending and applying a load limit to keep columns readable.

  6. 6

    Generate tag pages from a tags database template with a self-referential filter so each tag automatically shows its own notes, favorites, and web clips.

  7. 7

    Add an Archive page that filters archived = checked to remove items from active views without deleting them, and freeze key columns for usability.

Highlights

Inbox routing is filter-driven: notes leave Inbox automatically once the tag relation is no longer empty, while Web Clips are identified by URL not being empty.
Tag pages are automated with a template plus a self-referential filter, so new tags don’t require manual filter rewiring.
Favorites is intentionally unsorted to support drag-and-drop ordering, while Recents stays sorted by edited time for quick scanning.
The Noteboard groups notes by tag or by type and supports moving notes between groups directly in the board view.
Formula “sprinkles” like latest note, note count, and duration formatting turn raw database rows into a more usable dashboard without changing the core structure.

Topics

Mentioned