<aside> 🎯
Build a Notion-style @-mention menu. Type into an input and get back ranked, selectable results of pages, people, and dates.
This is Notion’s take home exercise for 2026/27 early-career candidates.
</aside>
Notion's @ menu (particularly in the age of AI, where context is everything) is one of our most-used surfaces in the product. Within a few keystrokes, someone expects the right page, person, or date at the top of the list—rendered cleanly and selectable from the keyboard. In this take home, you’ll build a small version of it from a bit of starter code.

For a page mention.

Within our agent chat panel.
To start, try out the @ menu within the product. You can do things like mentioning a page, a person in your workspace, or a date (either exact or relative—for example, @tomorrow).
In this exercise, we’ll provide you with a skeleton of this feature. You’ll extend it, in a way of your choosing. This prompt below is deliberately over-specified. You are not expected to implement everything. We care far more about what you choose to build, how well you build it, and how you reason about what you left out.
A starter repo: a near-blank screen with a large input in the center and a skeleton results list below it. It’s written in React, using TypeScript.
The repository uses Node v22. It’s highly recommend you use nvm for managing your Node version, namely:
brew install nvm # or equivalent
nvm install
nvm use
node --version
# should be v22.13.1
A pages search endpoint that does simple substring matching and returns results on each keystroke. This endpoint lives within the repo itself.
A hosted people search endpoint. We host this for you to query.
GET <https://takehome.notion.dev/people>.GET takehome.notion.dev/people?q=<query>&limit=<n>,{ results: Person[] }. It is a black box on purpose.An intentionally plain rendering of results, so you have a baseline to improve on.
Build out the mention menu. We’ve provided a very light skeleton for you to start with, which will render search results for fake page data as you type. (No people or dates.)
Below is an unordered list of improvements you could make to the mention menu. There is no priority and no single right answer. It’s also not definitive; you may choose to do something outside of this list! Pick up a few tasks that demonstrate your strengths (in terms of both engineering and product thinking); be prepared to justify your choices!
Do not feel the need to re-implement Notion’s @ menu exactly as it is today. You may (and are encouraged) to seek out improvements. Your finished product should be focused and polished.
takehome.notion.dev/people)@today, @thursday, etc.)