Using AI

Using Predecessor Tasks in Notion to Surface the Next Task in "Do Today" the Moment the Previous One Is Done, Compared with Built-in Dependencies

Using Predecessor Tasks in Notion to Surface the Next Task in "Do Today" the Moment the Previous One Is Done, Compared with Built-in Dependencies

Photo: Notion (紹介目的で使用) via notion.com

Good morning, まさきん here.

When you run your household tasks in Notion, errands that have to happen in order are a pain. You cannot start one until the previous step is done, yet both end up side by side in “Do Today.” This time, I tried adding “predecessor tasks” to my Notion tasks, so the next one appears the moment the previous one is finished. Here is how I built it.

*This information is current as of publication. Please check the official websites for the latest terms.

POINT
  • In Notion, you can build “show the next task when the previous one is done” with a self-relation + rollup + formula
  • Notion’s built-in “Dependencies” feature is for drawing arrows on a timeline and shifting dates
  • For removing tasks you cannot start yet from “Do Today,” I found a homemade setup easier to work with
  • The steps come in four stages: add a relation, then a rollup, then a formula, then a filtered view
  • Be careful when having AI create properties via MCP, as it can create duplicate properties

The idea of predecessor tasks

At home, we manage household tasks in a Notion Tasks database. Until now, though, there was no concept of “predecessor tasks.” Every task sat side by side, and I kept the order in my head.

For example, you cannot “fill out the form” until you have “requested the form.” I wanted the database itself to hold this kind of ordering information. What I wanted was just one thing: the instant the previous task is done, the next task shows up on the “Do Today” side. That is all.

I wrote a design page first

Instead of jumping in and adding properties, I first wrote a single design page. I listed the points I was unsure about there and settled them one at a time, question by question. Only after deciding did I start building.

Here are some of the things I went back and forth on. How much should tasks waiting on a predecessor be hidden? What should happen to the predecessor if the successor gets completed first? Should I be notified when a successor becomes ready to start? Should every task get predecessors? Putting these decisions into words up front makes it harder to waver during implementation, I find.

I also wrote about rules not being followed in my post counting 164 tasks. This time, I focused on “building what I decided into the system itself.”

What Notion’s built-in dependencies can do

Notion actually has a built-in feature called “Dependencies.” According to the official help center, you turn it on from the database settings by going to “More settings” and then “Dependencies.”

Once it is on, you can link tasks to each other in a linear chain. The official guide says that when you hover over a task in timeline view, an arrow appears on its right. You drag that arrow to connect it to another task. These dependencies are described as showing up only in timeline view.

Under the hood, it is built on top of a relation property. If there is no relation, you are asked to create one, and by default it is apparently a self-relation called “Dependencies.” In the English interface, it is said to create properties named “Blocked by” and “Blocking.”

For automatic date shifting, you choose from these three options.

You can also turn “Avoid weekends” on or off. If the previous task slips by a week, the following one slips by a week too. It is a feature suited to that kind of use.

Built-in feature vs. homemade setup

What I wanted was not a way to shift dates. I wanted to remove tasks I could not start yet from “Do Today.” So I compared the two.

ItemNotion built-in dependenciesHomemade (relation + rollup + formula)
Where to set it upDatabase settings, More settings, DependenciesAdd the properties yourself
How it looksArrows in timeline viewVisible as a property in any view, such as table or list
Automatic date shiftingThree options, plus an avoid-weekends settingNone (you would have to build it)
Whether the previous task is doneI found no status property described in the official helpCount unfinished tasks with a rollup
Removing from Do TodayI found no such feature described in the official helpCan be removed with a formula and a filter
Best suited forTeam schedules and timeline managementChoosing “what to do next” for individuals or households

I think built-in dependencies are a tool for keeping schedules on track. On the other hand, many of my household tasks have no due date. So I wanted to see “can I start this right now” rather than dates. It is not that one is better, just that they serve different purposes, perhaps.

Overview of the homemade setup

For the homemade version, I added three properties to Tasks and fixed one existing formula. The only new additions were two relation properties and one rollup property.

Property nameTypeRole
Predecessor tasksRelation (self, two-way)What to do before this task
Successor tasksRelation (self, two-way)What to do after this task
Open predecessorsRollupHow many predecessors are not done yet
Ready statusFormula (existing, modified)Adds the “waiting on predecessor” check

A self-relation links pages within the same database. The official help center explains that turning on “Two-way relation” creates two separate properties. “Next task” and “Previous task” were given as examples. When you add to one side, the other side updates automatically.

Steps you can copy

If you are building this in a typical Tasks database, I think the following order is easy to follow. I am assuming your status has a “Done” option.

  1. Add a new property to Tasks and set its type to “Relation”
  2. For the target, choose the same Tasks database you are working in
  3. Turn on “Two-way relation” and name the properties “Predecessor tasks” and “Successor tasks”
  4. Create a formula property that returns 0 if done and 1 if not done (for example, “Unfinished flag”)
  5. Add a rollup that sums the “Unfinished flag” of the “Predecessor tasks”
  6. Name the rollup “Open predecessors”
  7. Create a “Ready status” formula that returns “Waiting on predecessor” if Open predecessors is 1 or more
  8. Add “Ready status is not Waiting on predecessor” to the filter of your “Do Today” view
  9. Do not add this filter to your per-project views

For steps 4 and 5, you can also count using only a formula. The official help center shows an example using .every() and current on a list of related pages. Either a rollup or a formula can count the status of predecessors.

One caution. According to the official help center, you cannot roll up a rollup. This is apparently to avoid circular references. It is safest to count a property that is not itself a rollup.

How the Ready status formula works

Our Tasks database already had a formula called “Ready status.” This time I added “Waiting on predecessor” to it. The idea is simple.

If Open predecessors is greater than 0, return “Waiting on predecessor.” Otherwise, return the existing result as is. Doing it in this order means you do not break your existing rules. An example formula looks like this.

if(prop("Open predecessors") > 0, "Waiting on predecessor", existing check)

Replace the “existing check” part to fit your own Tasks database. I think the trick is to check for waiting on predecessor first.

The display rules I decided on

Here are the display rules I settled on in the design page. Deciding up front what goes on which screen keeps you from getting lost with filters.

ScreenTasks waiting on a predecessor
Do TodayHidden as a rule. Only those due today or earlier appear faded at the bottom
Doable TodayHidden
On mobileHidden
By projectAll shown

I decided not to completely hide those due today or earlier. If something is due and you cannot see it, you will not notice it. Still, they are not the main focus, so they sit faded at the bottom.

To do something similar with Notion views, you can use advanced filters. The official help center says filter groups let you combine AND and OR. Apparently you can nest them up to three levels deep.

Once you start running household errands from your phone, it becomes the tool for coordinating the family. At that point, it is worth reviewing your phone bill once too.

Try the fee simulator and get 100 points, no sign-up required Check Rakuten Mobile pricing

Clicking this opens the Rakuten login page. Once you log in, you’ll see the campaign details.

Rules for completion and notifications

When a successor is completed first

In reality, a successor sometimes gets finished while its predecessor is still open. Like when you went ahead and filled out the form first. In that case, I decided not to automatically mark the predecessor as done.

Instead, it asks me at the moment I complete the successor. There are three choices: “Complete together,” “Skip,” and “Keep.” I do not touch it automatically because only a person can tell whether the predecessor’s actual work is really finished.

No notifications, just a toast

Even when a successor becomes ready to start, I do not send a Telegram notification. This was another point I went back and forth on in the design page. Adding more notifications might bury the important ones.

Instead, my homemade mobile screen (a PWA) shows a toast. When I complete a predecessor, it simply shows “Next: [task name]” at the bottom of the screen. By the way, I named this PWA Kairos. It means “the opportune moment,” which I think fits the feeling of a predecessor finishing and the next task getting its turn.

I have also written about my morning routine in my post on the daily briefing. Apart from notifications, a lot of information is fine to see just when you open the screen.

Predecessors only for major projects

I decided to add predecessor tasks only for major projects. And even then, I link them one by one, question by question. I did not have AI guess and attach them to everything in bulk.

If you attach them in bulk, it is hard to notice when a wrong order slips in. Since tasks waiting on a predecessor disappear from the list, a mistake can hide a task you need. So I felt this was a place worth spending the effort.

Tracing predecessors in order via the API

I also added one function to my own small API. For a given task, it returns its unfinished predecessors in order. It follows the predecessor’s predecessor, and that one’s predecessor, up to a depth of 10.

I also added cycle detection so it stops if it hits a loop. That is the case where A’s predecessor is B and B’s predecessor is A. I tested it with three test tasks, A to B to C. Once testing was done, I deleted the test tasks.

Where I tripped up with MCP and the API

This is where I spent the most time. When I created properties through Notion’s MCP (a connection that lets AI operate Notion), a few unexpected things happened.

Warning
  • Creating a two-way relation with MCP DDL produced duplicate pairs like “Predecessor tasks 1” and “Successor tasks 1”
  • When I tried to fix it by renaming, a “Predecessor tasks 2” appeared as well
  • The rollup ended up attached to the successor side instead of the predecessor side
  • Changing the formula failed with a “Type error”
  • The formula contents could not be read from MCP, so I checked them with the REST API

In the end, I cleaned things up by deleting the extra properties and renaming. I fixed the formula with a PATCH request to Notion’s REST API.

According to the official documentation, updating data source properties lets you add, delete, and rename properties. Sending null as the value deletes that property, and sending a name renames it. Renaming apparently does not change the ID.

Formulas are specified as a string called expression. The docs say an expression that cannot be parsed returns a validation_error. Saved formulas reference properties by ID, so they are said not to break even if you rename things later.

For a two-way relation, set type to dual_property; for one-way, use single_property. The related database also needs to be shared with the integration. If sharing is incomplete, relations can apparently appear empty. Rollup results are also said to be incomplete in that case.

CHECK

If you create properties via AI, I recommend always checking the property list with your own eyes in the Notion interface. It is reassuring to check that no properties with the same name plus a number have multiplied, and which property the rollup got attached to.

What to check before you start

If you are going to build this, checking the following points first should make things go more smoothly.

FAQ

Q. Is Notion’s built-in dependencies feature not enough?

If you are managing schedules, the built-in dependencies may be enough. It has timeline arrows and automatic date shifting. On the other hand, say you want to remove tasks you cannot start from your list. In that case, I found having homemade properties handy.

Q. Which views show the built-in dependencies?

The official guide explains that dependencies are shown only in timeline view. If you want to see predecessors in a table or list, you would display the relation property.

Q. Is a two-way relation required?

It is not required, but it makes things easier. Turning on Two-way relation for a self-relation creates two properties, predecessor and successor. Fill in one, and the other fills in automatically.

Q. Can I build it with just a formula instead of a rollup?

I think you can. The official help center has an example formula that checks a list of related pages with .every(). That said, splitting it into separate properties lets you see the intermediate numbers. So it may be easier to verify.

Q. What happens if I complete a successor while its predecessor is still open?

Nothing happens automatically on the Notion side. In my case, I set it up to ask “Complete together, Skip, or Keep” right then. I do not mark the predecessor as done automatically.

Q. Can I rewrite formulas via the API?

According to the official documentation, a formula definition can be specified as a string called expression. An expression that cannot be parsed returns a validation_error. I fixed a formula that would not go through MCP with a PATCH request to the REST API.

Q. Should every task have predecessors?

Personally, I think major projects alone are enough. Tasks waiting on a predecessor disappear from the list, so attaching them by mistake can hide tasks you need. It might be best to start with things whose order is clear.

Official sources I referred to

Wrapping up

I built “show the next task when the previous one is done” in Notion with homemade properties rather than the built-in feature. I think built-in dependencies are an excellent tool for shifting schedules. But for choosing what to do next at home, a different approach fit better: counting open predecessors and removing tasks from the list.

When you build it, I recommend settling the rules on a design page first. Where things show up. What happens if a successor is finished first. Whether to send notifications. Once those are decided, adding the properties is not much work.

If you create properties via AI, just be sure to leave time at the end to check them in the interface. If your household has lots of errands that need to happen in order, it may be worth a try.

If you run your household from your phone, it is reassuring to take a look at your monthly phone bill too. I wrote about our family’s case in my post taking stock of our mobile lines.

Try the fee simulator and get 100 points, no sign-up required See whether Rakuten Mobile could lower your phone bill

Clicking this opens the Rakuten login page. Once you log in, you’ll see the campaign details.

This article contains affiliate advertising. If you sign up for a product or service through a link on this site, we may receive compensation from the partner company. The site operator is also an employee of Rakuten Group and may receive compensation through an employee referral program. The content and opinions here are based on the operator’s own experience and research regardless of any advertising relationship, but please read with the above in mind. See the Disclaimer & Affiliate Disclosure for details. Disclaimer & Affiliate Disclosure

This article includes machine-translated content. Please check the official Rakuten Mobile multilingual page for exact terms.

If you have concerns about Rakuten Mobile coverage or signal quality, you can consult through the official signal improvement request form .

ABOUT THE AUTHOR
まさきん

Rakuten Group employee · Digital Marketer (holds a Financial Planner qualification)

In his early 40s, part of a dual-income household with four kids. Works as a digital marketer at Rakuten Group, while also using his Financial Planner (FP) qualification to focus on household finances and building assets.

View Profile

Related Articles

RELATED
Gemini (Google AI Pro) Family Sharing Covers Up to 5 Family Members: Setup Steps and Scope Using AI

Gemini (Google AI Pro) Family Sharing Covers Up to 5 Family Members: Setup Steps and Scope

Google AI Pro can be shared with up to 5 family members besides the manager. The Gemini app and storage are shared, while YouTube Premium Lite is for the manager only. Flow limits are shared across the family. I went through the official help to sort out the setup steps and how child accounts are handled.

2026.10.13 · 11 min read
3 Reasons Your AI Subscription Billing Date Does Not Match Your Budget: Claude Upgrades Change It Using AI

3 Reasons Your AI Subscription Billing Date Does Not Match Your Budget: Claude Upgrades Change It

If you upgrade Claude to Max mid-month, your billing cycle resets and that day becomes your new billing date. The yen conversion of dollar charges is set when the data reaches your card company, and statements and budgeting apps lag by a few days. Here are 5 steps to decide the month using the receipt email as your source of truth.

2026.10.13 · 12 min read
Turning Unprocessed freee Accounting Transactions into a Monthly Reconciliation Run: 7:30 on the 5th, 3 Categories, and a Cap of 15 Items Handed to a Human Using AI

Turning Unprocessed freee Accounting Transactions into a Monthly Reconciliation Run: 7:30 on the 5th, 3 Categories, and a Cap of 15 Items Handed to a Human

About 18 unprocessed transactions sat untouched in freee Accounting across 6 weekly checks. Here is my design for a reconciliation run on my home Mac at 7:30 a.m. on the 5th of each month, and where I drew the line: one monthly task for the items that can be confirmed, and one task each, capped at 15, for the ones that need a human decision.

2026.10.12 · 13 min read
Switch to Rakuten Mobile, get up to 14,000 points Try the fee simulator and get 100 points, no sign-up required →
Apply Now →