---
title: "Requirements"
description: "Capture, scope, and connect requirements in a spreadsheet-style table, one flat list per module."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.heizen.work/llms.txt
> Use this file to discover all available pages before exploring further.

# Requirements

Requirements is where the team writes down what the product must do and why.
Requirements live in **modules** and are edited inline like a spreadsheet, as
one flat list per module.

> **Beta**
>
> Requirements is in beta, so the page shows a **Beta** tag next to its
> heading. Check AI suggestions before you rely on them.

## Modules

Open **Product → Requirements** to see one card per module. Each card shows how
many requirements it holds, how many are in each status, and how many the
client has approved.

- Choose **New module** to add a broad product area, such as Billing.
- Use the **⋯** menu on a card to rename or delete a module. Deleting a module
  deletes its requirements.
- Choose a card to open its table, or **All requirements** to see every module
  at once.

## Requirement IDs

Every requirement gets a number that never changes. The prefix shows its type:

| Prefix | Type                       |
| ------ | -------------------------- |
| `BR`   | Business requirement — why |
| `FR`   | Functional requirement     |
| `NFR`  | Non-functional requirement |

Numbers are shared across types, so `BR-1`, `FR-2`, and `NFR-3` are three
different requirements.

## The table

A module's table is a flat list of every requirement in it, business
requirements included. In **All modules**, rows are grouped by module; the
groups start collapsed. Choose a module to expand it, or use **Expand all**.
Switch modules from the module picker without leaving the table.

| Column      | What it holds                                        |
| ----------- | ---------------------------------------------------- |
| ID          | The requirement ID                                   |
| Requirement | The title                                            |
| Scope       | The phase it belongs to, such as Phase 1 or Backlog  |
| Persona     | Who it is for                                        |
| Status      | Draft, Ready, PM approved, or Client approved        |
| Attention   | What needs a look, most urgent first (see below)     |
| Effort      | Low, Medium, High, or Very high                      |
| Delivers    | The business requirement it delivers                 |
| Depends on  | Requirements that must exist first                   |
| Needed by   | Requirements that depend on this one                 |
| Other links | Related, conflicting, or duplicate requirements      |
| Value       | Business value (hidden by default)                   |
| Priority    | MoSCoW priority (hidden by default)                  |

Use **Columns** to show or hide columns. Drag a header to reorder columns and
drag its edge to resize.

### Attention

The **Attention** column flags what needs a look. Point at a badge to see why;
when there are more than fit, **+N** lists the rest.

| Badge | Meaning |
| --- | --- |
| **Change waiting**, **Removal waiting**, **Open question** | A proposal about this requirement is waiting. Select it to open it in **To review**. |
| **Changed since sign-off** | Edited after its scope was signed off. |
| **Link to check** | A linked requirement changed since the link was confirmed. |
| **Conflict**, **Possible duplicate** | It has a conflicts-with or duplicates link. |
| **No description**, **No criteria**, **Incomplete** | The description or acceptance criteria are missing. |

Use the filter icon on Attention to show only the requirements that need one or
more of these.

## Edit inline

Double-click a cell, or select it and press **Enter**, to edit it.

- **Requirement** is typed directly.
- **Scope** and **Persona** open a picker. Type a name that does not exist and
  choose **Create** to add it. Manage scopes and their sign-off with
  **Scopes** at the top of the Requirements page (see
  [Scopes](/studio/product/scopes)). To rename or delete personas, choose
  **Personas** there too; each shows how many requirements use it, and
  deleting one removes it from those requirements.
- **Status**, **Effort**, **Value**, and **Priority** open a list of choices.
- **Delivers** sets the business requirement a requirement delivers. It can't
  be set on a business requirement.
- **Depends on**, **Needed by**, and **Other links** open a tagger. Search by
  ID or title to add a link, or select **×** on a chip to remove it. In
  **Other links**, choose the link type first.

Point at an ID chip to see the requirement's title and status. When a cell has more links than fit, it shows **+N**; point at it to see the rest, or widen the column.

To add a requirement, press **/** anywhere in the table to jump to the add
row of the module you are in, type the title and press **Enter**. Select the
`FR` badge, or press **/** again while the row is still empty, to cycle through
`NFR` and `BR` first.

Changing the wording or criteria of an approved requirement creates a new
version and moves it back to **Ready**, because the approval covered the old
wording. Edits to Draft or Ready requirements update the current version. A requirement
with a **Conflicts** link cannot move past Draft until the link is removed.

When Helix changes a requirement's wording or criteria, it always saves a new
version, shown in **History** as **Helix for** the person who asked, so you can
see exactly what it changed. Helix keeps a Draft or Ready status as it is and
moves an approved requirement back to **Ready**. Helix can set Draft or Ready,
but only people can approve a requirement.

## Export to Excel

Choose **Export** in the table toolbar to download what is shown as an Excel
file. The current module and filters apply. Each module gets its own sheet,
with every requirement's description, expected output, acceptance criteria,
technical notes and criteria, planning values, personas, data fields and links.
Business requirements are highlighted, each followed by the requirements that
deliver it. A **Data dictionary** sheet lists every data field with its allowed
values and rules, then the scopes and the personas.

## Import from meetings, wiki, and files

Choose **Import** on the [To review](/studio/product/proposals) page. Pick any
mix of meetings, wiki pages, and files, using the search box and **Select all**
on each tab, then choose **Find requirements**. They are read for new
requirements, changes to existing ones, things to drop and open questions,
which come back as [proposals](/studio/product/proposals) for you to review.
Nothing changes until you accept a proposal.

Only what someone asks for becomes a proposal. When the team demos or explains
what the product already does, that walkthrough isn't proposed as a
requirement; a request made during it, such as "can it also export to CSV?",
is. Project logistics, such as credentials or test accounts the team needs,
and ideas only floated without anyone asking for them are not proposed either.

Each source is read on its own first, then compared with what the project
already has, so something that already exists, is already waiting for review,
or was left out as not needed is not proposed again. A file must finish
processing before it can be read. When a wiki page or file is imported again,
only the sections edited since the last import are proposed again. A meeting
that was already imported is skipped, because a recorded meeting doesn't
change.

Tick **Read imported sources again** to read the chosen sources in full, even
if they are unchanged. Use it after leaving out poor suggestions, for example
to get fresh proposals from a meeting. Proposals you left out as **Not needed**
still stay out.

A project's sources are read one at a time, oldest first: a meeting by when it
took place, a wiki page by when it was last edited, a file by when it was
added. An older source never overrules a newer one. If an old meeting drops
something a later source asked for, it is not proposed for removal; if it
changes a requirement a later source shaped, the change is proposed at Low
confidence with a note to check it still applies.

Each source shows how it was last imported:

| Label                    | Meaning                                                        |
| ------------------------ | -------------------------------------------------------------- |
| No label                 | Never imported.                                                |
| Imported 12 Mar · 3 proposals | Imported, and unchanged since. Point at it to see what else was found, such as how many points were already covered. |
| **Changed since import** | Edited after it was imported. Import it again to catch up.    |
| **Queued** / **Reading…** | Being read now. It can't be picked again until it finishes.  |
| **Failed**               | Reading it failed. The reason is shown under its name.        |

Sources that still need importing are listed first. Choose **To import** to
hide the ones that are imported and unchanged. While sources are being read the
**Import** button shows a spinner, and a red dot means an import failed.

## Requirement details

Select a requirement's ID, the panel icon at the end of its row (it appears
when you point at the row), or any ID chip, to open the requirement beside the
table. While the panel
is open, select another row to switch to it. Drag the divider to resize the panel. The link
in the address bar opens the same requirement for anyone on the project.

- **Details** shows the Business, Functional, and Technical sections. Select
  any field, including the title, to edit it in place. **Enter** or clicking
  away saves (**⌘ Enter** in longer text), and **Esc** cancels. Use **Add
  criterion** to add acceptance criteria and **Error case** to mark a negative
  case.
- **Connections** lists every linked requirement, grouped by link type. A
  dashed border means one side changed since the link was last confirmed.
- **If this changes** shows which requirements a change would affect, one
  column per step. Choose **1 step**, **2 steps**, or **3 steps** to look
  further out; each option shows how many requirements it reaches, and steps
  that add nothing new are greyed out.

A change spreads to:

| Link                                         | Affected | Keeps spreading |
| -------------------------------------------- | -------- | --------------- |
| Requirements that depend on this one         | Yes      | Yes             |
| Requirements that deliver this business requirement | Yes | Yes          |
| The business requirement this one delivers   | Yes      | No              |
| Related, conflicting, or duplicate requirements | Yes   | No              |
| Requirements this one depends on             | No       | —               |

Press **Esc** to close the panel.

## Data fields

The **Data fields** tab, next to **Details** in the panel, lists the data a requirement captures, shows or
changes, with the rules each value must follow. See
[Data dictionary](/studio/product/data-dictionary).

## Delete a requirement

Select the red bin icon in the panel header or on the full requirement page,
then **Delete requirement**. Its history and links are deleted with it, and
this cannot be undone. Deleting a business requirement clears **Delivers** on
the requirements that delivered it. IDs are never reused. A
requirement that was signed off with a [scope](/studio/product/scopes) can't be
deleted, and neither can a module that holds one; move it to **Not in scope**
instead, so the sign-off record stays complete.

## Full requirement page

Select the expand icon in the panel header to open the requirement on its own
page. **Overview** sums it up in one place, and its links jump to the
**Business**, **Functional**, **Technical**, **Connections**, and **If this
changes** tabs, where every field is edited in place. **History** lists each
version with what changed, removed text struck through and added text below
it.

Requirements suggested from a source show **Where it came from**: the exact
quote, who said it, and the meeting timestamp or document section.

## Select several requirements

Tick the checkbox at the start of a row, or focus a row and press **Space**.
**Shift**-click a second checkbox to select everything in between, or tick
the header checkbox to select every loaded row.

While rows are selected, the toolbar changes to bulk actions:

- **Status** sets the same status on every selected requirement.
- **Scope** moves them to a scope, or removes their scope.
- **Delete** deletes every selected requirement after you confirm.

Press **Esc** or select **×** to clear the selection.

## Reorder and move

Drag a row by the handle next to its ID to change its position in its module.
Dragging a selected row moves every selected row with it. Requirements can
only move within their own module.

From the keyboard, focus a row and press **Alt+↑** or **Alt+↓** to move it one
place. Screen readers announce the new position.

Reordering is turned off while a column is sorted. Clear the sort to reorder.

## Search, sort, and filter

- Search by title or by ID, such as `FR-12`.
- Select a column header to sort. Rows stay inside their module.
- Use the filter icon on Scope, Persona, Status, Attention, Effort, Value, or Priority to
  filter. Modules with no matching rows are hidden. Choose **Clear filters** to
  reset.

Source: https://docs.heizen.work/studio/product/requirements/index.mdx
