Get AI summaries of any video or article — Sign up free
Build With Me: A Family Tree In Notion thumbnail

Build With Me: A Family Tree In Notion

Red Gregory·
5 min read

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

TL;DR

Model people as pages and use self-relations for both spouse and children so parent-child links populate automatically.

Briefing

A practical Notion setup for building a searchable family tree hinges on modeling people as pages, then wiring parent-child relationships into a timeline and a location “atlas.” Instead of treating genealogy as a static chart, the system uses relational properties so each person can automatically connect to birth/death years, places, and historical context—turning a family line into a living database.

The build starts with a “timeline” database organized by broad date ranges (e.g., 1850–1899, 1900–1949) and finer “decade cards” within each range. A separate “atlas” database classifies places using select properties for country, U.S. state, and city/region. People then get linked to this atlas through location fields: where someone was born, where they lived (residents), and where they died (buried/died). Those location relations feed into filtered views like “deaths from family tree” and “births from family tree,” enabling map-style exploration (including optional Google Maps embeds).

The family tree itself is structured around parent-child relations and generation tracking. A “generation” property uses multi-select values to label where someone sits in the direct line (for example, 32a/32b moving toward the present). Spouse relationships are created by relating the people table to itself, with the important nuance that spouses are added as marriage partners (not as part of the ancestral generation chain). Children are handled through a second self-relation: a “children” property syncs both ways, and a “parents” property is derived so that when children are added, their parents populate automatically.

To connect people to the timeline, the system introduces a “lifespan” date property plus separate “year born” and “year died” relations that point into the decade cards. This allows births and deaths to appear in the correct decade buckets. The transcript also details a formula-driven “age” field that produces different outputs depending on what’s known: “unknown” when both birth and death are missing; “age” when only a birth date exists (treating the person as still alive); “age died” when a death date exists; and an “approximate age died” mode when only years are available. Special handling is included for cases like “year died = unknown,” so the formula doesn’t mislabel living people.

Finally, the design emphasizes keeping the database manageable by limiting generation tags to the direct line. Star emojis mark the main ancestral path, while siblings and collateral relatives can be included without cluttering the generation views. There’s also an open problem: generating a clean “siblings” list via rollups is tricky because rolling up through parents can mix children from both mother and father; a workable approach likely requires separating parent roles by mother vs. father or adding more structure. Overall, the system matters because it turns genealogy into a queryable dataset—one that can be filtered by decade, place, and lineage rather than locked into a single diagram.

Cornell Notes

The setup builds a Notion family tree by treating each person as a page and using self-relations for spouse and parent-child links. People are connected to a separate timeline made of decade cards, and to an “atlas” database that standardizes locations by country, U.S. state, and city/region. Birth and death data flow into the decade cards through relations, while a formula-based “age” property outputs “unknown,” “age,” “age died,” or “approximate age died” depending on which dates are known. Limiting generation tags to the direct ancestral line keeps the views readable, while other relatives can be tracked without breaking the timeline connections.

How do spouse and children relationships work in this Notion family tree model?

Spouse is a self-relation on the people table. When a spouse (e.g., Sarah Bond) is added, it creates a new row for that person, but the spouse is treated as a marriage partner rather than part of the ancestral generation chain. Children are handled with another self-relation: a “children” property syncs both ways, and a “parents” property is derived so that when children are assigned to a couple, the parents populate automatically for each child.

What’s the purpose of the “generation” multi-select property, and how does it keep the tree readable?

Generation is a multi-select that labels each person’s position in the direct line (example pattern: 32a/32b, then 31a/31b as you move forward). The farthest ancestor gets the earliest generation label, and the child gets the next label. Generation tags are intended only for the direct line; spouses and collateral relatives can be included, but without generation tags so generation-based views don’t become cluttered.

How does the system connect people to time without relying on a traditional calendar?

A timeline database is built using broad date ranges (like 1850–1899) and within them “decade cards.” People’s “year born” and “year died” relations point into these decade cards, so births and deaths can be grouped by decade even for centuries-old dates where Notion’s calendar-style date browsing becomes less useful.

How does the “age” formula decide what to display?

The formula branches based on which fields are empty or populated. If both birth and death are unknown, it returns “unknown.” If only a birth date exists (death date missing), it calculates age as the difference between today and the birth date and formats it as text. If a death date exists, it returns “age died” based on the difference between death and birth. If lifespan is empty but year-born and year-died relations exist, it computes an approximate age died using year differences (converted from relation page values to numbers).

Why is generating siblings via rollups described as difficult?

A rollup that finds siblings by rolling up through “parents” can accidentally include children from both parents’ sides, because the rollup may gather all children associated with both mother and father together. The transcript suggests a fix would involve separating parents by mother vs. father (or otherwise structuring parent roles) so the rollup only compares the correct parent pair.

Review Questions

  1. If a person has an exact birth date but no death date, what should the “age” property output in this system, and how is it computed?
  2. What two separate databases are used to support time and place filtering, and what kinds of fields connect the family tree to each?
  3. Why does the design recommend limiting “generation” tags to the direct ancestral line rather than applying them to every relative?

Key Points

  1. 1

    Model people as pages and use self-relations for both spouse and children so parent-child links populate automatically.

  2. 2

    Create a timeline database using decade cards inside broader date-range groups to make centuries-old dates navigable.

  3. 3

    Standardize locations with an “atlas” database (country, U.S. state, city/region) and link people’s birth/residence/death fields to it.

  4. 4

    Use relations from “year born” and “year died” into decade cards so births and deaths appear in the correct time buckets.

  5. 5

    Implement a formula-driven “age” field with explicit branches for unknown dates, living assumptions, death dates, and approximate year-only cases.

  6. 6

    Keep generation tracking restricted to the direct line to prevent generation views from becoming noisy.

  7. 7

    Treat sibling rollups as a structural problem: comparing children correctly may require separating mother vs. father relationships.

Highlights

The timeline uses decade cards linked to people’s birth/death years, enabling decade-level filtering even when Notion’s calendar view isn’t practical for old dates.
A formula-based “age” property adapts to missing data, returning “unknown,” calculating current age when death is unknown, and producing “age died” or “approximate age died” depending on what’s available.
The atlas approach turns free-text locations into structured selects (country/state/city/region), which then powers map-style and grouped views for births and deaths.
Generation labels (like 32a/32b down to 15a/15b) are designed for the direct line only, with star markers used to track the main ancestry path.

Topics

  • Notion Family Tree
  • Relational Database
  • Timeline Decade Cards
  • Atlas Locations
  • Formula Age Calculation

Mentioned

  • John Chu
  • Sarah Bond
  • Daniel Chu
  • Janju
  • Anne Gates
  • Benjamin Chu
  • Richard Chu