# Many Requirement Documents: Upload, Queue and Review Together

> Most projects are described by more than one document: a BRD, a rules workbook, a set of user stories, meeting notes, an email thread.

Source: https://totalshiftleft.ai/help-center/product-documentation/requirements-multiple-documents

> **Applies to:** All editions (requirements review is basic on Free; full on Professional and Enterprise) · Web app and Desktop app · A role that can edit the project

## Overview

Most projects are described by more than one document: a BRD, a rules workbook, a set of user stories, meeting notes, an email thread. Shift-Left Studio lets you add all of them to one project at once and turns them into a single list of requirements you can review together.

When you drop several files onto the Requirement Documents tab, Studio uploads them, reads them, and extracts their requirements in one action. Documents are extracted one at a time per project, in the order you added them, so each new document can recognize rules that an earlier one already stated. Every requirement remembers exactly where it came from — the section and page of a Word or PDF file, or the sheet, row, and column of a spreadsheet — along with your own identifier, such as `BR-014`.

This article covers the capabilities that are new for multi-document projects. For the basics of a single document (Extract text, AI Parse, the review panel, approving and editing requirements, and choosing endpoints), see [Importing and Reviewing Requirements](/help-center/product-documentation/importing-and-reviewing-requirements).

## Key concepts

| Term | What it means |
|---|---|
| **Extract automatically** | A setting in the page header. When it is on, every document you upload is queued for requirement extraction immediately. It is on by default and is remembered per browser. |
| Extraction queue | Documents in one project are extracted one after another, never in parallel. A document waiting its turn shows its place in line. |
| Document kind | What kind of document a file is (**BRD**, **API module**, **Generic**, or **Auto-detect**). You set it on each document's row. |
| Source | Where a requirement was found: document, section or heading, page, or sheet, row, and column. The original sentence is kept too. |
| Your own id | An identifier your document uses, such as `BR-014` or a Jira key. Studio records it only when the document clearly labels the requirement with it. |
| Already in another document | A requirement that a document restates from a document added earlier. It is counted once. |

## Before you begin

- An AI provider must be configured for your workspace. Extraction uses AI calls; Studio shows an estimate before you start.
- Supported document types: PDF, Word (.docx and Word 97–2003 .doc), Excel, CSV, HTML, Markdown, and plain text. Each file can be up to 50 MB.
- API specifications (OpenAPI/Swagger, WSDL, GraphQL) do not belong here. Import them from **Setup → API Specs**.

## Step 1 — Add your documents

1. Open your project's requirements and select the **Requirement Documents** tab.
2. Check that **Extract automatically** is ticked in the header if you want extraction to start as soon as files arrive. Untick it to upload now and extract later.
3. Do one of the following:
   - Click **Choose requirement files** and select several files at once.
   - Drag files from a folder window and drop them onto the document list. The list shows **Drop to upload** while you drag.
4. Watch the **Upload results** panel. Each file gets a line:
   - A check mark for a file that was stored. **(already existed — reused)** means the identical file was already in the project.
   - A cross with a reason for a file that was refused, for example **(too large — skipped)**, or a message that the file is RTF rather than a Word document, or that it looks like an API specification.
5. If extraction was queued, the panel says how many documents were queued. Click **Dismiss** to close it.

> **Note:** Refusals are per file. If one file in a selection of ten is refused, the other nine are still stored and extracted.

> **Tip:** A dropped folder is skipped. Open the folder and drag the files themselves.

### Adding requirements without a file

Click **Add without a file** in the header to choose one of three options:

| Option | Use it for |
|---|---|
| **Paste requirement text** | Rules from an email, a chat, or a document you cannot upload (up to 200 KB). It becomes a document like any upload. |
| **Import from a web page** | A wiki or specification page. The page must be reachable without signing in. |
| **Write one requirement** | A single rule typed by hand. It belongs to no document and is listed on the **Traceability** tab, marked as written by hand. |

## Step 2 — Set each document's kind (optional)

Studio detects the kind of each document. If a document is read poorly, tell Studio what it is.

1. In the **Type** column of the document's row, open the small drop-down below the file type.
2. Choose **Auto-detect**, **BRD**, **API module**, or **Generic**.
3. The choice is used the next time the document is extracted. To apply it now, extract the document again (see Step 3).

> **Note:** Backlog exports (Jira or Azure DevOps CSV) are recognized automatically and are split per ticket, so there is no backlog option to select.

## Step 3 — Extract documents in bulk

The bar above the document list summarizes the whole set, for example "5 documents · 2 extracted · 1 extracting · 2 waiting".

1. To extract everything that has not produced requirements yet, click **Extract N not yet extracted**. Documents that are already extracted are left alone.
2. To extract specific documents, tick them in the selection column and click **Extract selected (N)**. Use **Clear selection (N)** to start over.
3. Before you click, read the estimate beside the button, for example "about 12–18 AI calls". A document that has not been read yet is listed as "not read yet (priced once read)".
4. After you click, a confirmation says how many documents were queued.

When every document is extracted, the button is replaced by the message **Every document is extracted. Tick one to extract it again.**

### When a document already has reviewed requirements

Extracting a document again replaces what was found before. If someone has already approved or reviewed requirements from it, Studio does not start silently. Instead it shows a warning with two choices:

- **Replace reviewed requirements…** opens a confirmation. Click **Replace and extract** to continue. Review decisions carry over only to requirements that come back identical.
- **Leave them as they are** keeps the existing requirements and does not extract.

Any other document that could not start is listed under **Not started** with the reason. Click **Dismiss** to clear the list.

## Step 4 — Follow progress

Each document in progress shows where it is in the **Status** column:

| What you see | Meaning |
|---|---|
| **Waiting to start** | Next in line for this project. |
| **Waiting — N ahead** | N documents will be extracted before this one. |
| **Reading the file** | Text is being read from the file. |
| **Extracting requirements (part 3 of 7)** | A long document is split into parts; this shows how far it has got. |
| **Parsed** with counts | Finished. The counts below the status show, for example, "12 approved · 8 pending · 3 already in BRD.docx". |
| **Failed** with a reason | Extraction stopped. The reason and a hint appear under the status. |

You can leave the page while documents extract. Progress continues on the server, and the list shows the current state when you return. Click the refresh icon to update the list manually.

> **Note:** If the server restarts, documents that were waiting are put back in the queue automatically. A document that was in the middle of extraction is marked **Failed** with the reason "Extraction was interrupted — the server restarted while this document was being read". Extract it again; requirements from any previous extraction were kept.

## Step 5 — Review requirements from all documents together

1. Once at least one document has been extracted, click **Review all requirements** on the batch bar. (Click **Hide all requirements** to close it.)
2. The review list now covers every document in the project. Each row names its document and where in it the requirement was found.
3. Use the **All documents** filter to narrow the list to one document. Each option shows the number of requirements from that document.
4. Use the search box (**Search title, field, entity, REQ id or your own id…**) to find a requirement by its title, a field, the Studio id (REQ-…), or your document's own id such as `BR-014`.
5. Approve, reject, or edit requirements as you would for a single document. **Select all (N)** and the bulk actions apply to exactly what the current filters show.

> **Tip:** The project-wide view always loads the full filtered set, so the counts and **Select all (N)** are accurate even for large projects.

## Understanding where each requirement came from

Each requirement row can carry these markers:

| Marker | Example | Meaning |
|---|---|---|
| Your own id | `BR-014` | The id your document uses. Recorded only from an id column in a spreadsheet, a backlog key, or a label at the start of the sentence or heading ("BR-014: …"). Dates, version numbers, and similar tokens in the middle of text are never treated as ids. |
| Source | `Rules.xlsx › Rules › row 14 › Requirement` or `BRD.docx › 4.2 Refunds › p. 12` | Where the requirement was found. Hover over it to read the original sentence. The document name appears only in the project-wide view. |
| **Same rule as another document** | | Another document states the same rule. It is counted, and tested, once — under the other document's requirement. |
| Also in … | "Also in Meeting notes.md" | This is the counted requirement, and other documents state it too. |

Studio finds a location by searching the document for the quoted sentence. If the sentence cannot be found — or it appears in several spreadsheet rows — no location is shown rather than a guessed one.

On the document list, a parsed document can also show:

- **N already in X** — rules this document restates from an earlier document. Hover to see which documents. Only the later of two documents carries this note.
- **N disagree** — rules another document states with a different value. These are not used to generate tests until you settle them. See [Duplicates and Conflicts Across Requirement Documents](/help-center/product-documentation/requirements-cross-document-duplicates-and-conflicts).

## Step 6 — Delete documents

1. To delete one document, click its delete icon. To delete several, tick them and click **Delete selected (N)**.
2. Read the confirmation. For a single document, it lists what the deletion removes, such as requirements only this document states and the tests linked to them, and requirements that are kept because another document also states them.
3. Click **Delete**.

| Document state | What happens |
|---|---|
| Waiting in the queue | It is removed from the queue and deleted. |
| Being extracted right now | Deletion is refused with "This document is being extracted right now. Delete it when that finishes." This prevents requirements from being saved for a document that no longer exists. |
| Parsed | Deleted with its requirements. Requirements that another document also states remain, counted from that other document. |

## Troubleshooting

| Symptom | Why it happens | What to do |
|---|---|---|
| A file shows "This file is RTF, not a Word document" | The file was saved as Rich Text with a .doc extension. | Open it in Word, use **Save As → Word Document (.docx)**, and upload again. |
| A file is refused as an API specification | Specifications are imported separately so their endpoints are created. | Import it from **Setup → API Specs**. |
| A document stays at **Waiting — N ahead** | Documents in one project are extracted one at a time, so it waits for the others. | Wait. Large documents ahead of it take longer. |
| A document shows **Failed** after a restart | Its extraction was interrupted. | Select it and click **Extract selected (1)**. |
| **Review all requirements** is not shown | No document has produced requirements yet. | Extract at least one document. |
| A requirement has no source location | Its sentence was not found in the document text, or was found in several rows. | Hover over the requirement to read the quoted text and check it against the document. |
| Extraction does not start for a document with reviewed work | Re-extracting would replace reviewed requirements. | Choose **Replace reviewed requirements…** only if you intend to replace them. |

## Best practices

- Add documents in order of importance. Later documents are compared with earlier ones, so the most authoritative source should be in the project first.
- Keep **Extract automatically** on unless you need to check AI costs first; the estimate on the batch bar is shown either way.
- Use your organization's requirement ids (for example, `BR-014:` at the start of each rule, or an id column in a workbook). They make search and traceability much easier.
- Use the project-wide review with the document filter rather than opening each document separately.
- Do not re-extract a document just to pick up a new document kind if its requirements are already reviewed; decide whether the change is worth a fresh review.

## FAQ

**How many files can I upload at once?**
Select as many as you need. Studio sends them in groups automatically. Each file can be up to 50 MB.

**Can two projects extract at the same time?**
Yes. The one-at-a-time rule applies within a project, so that each document can be compared with the ones before it.

**Does re-uploading the same file create a duplicate?**
No. An identical file is reused and marked **(already existed — reused)**.

## Related articles

- [Importing and Reviewing Requirements](/help-center/product-documentation/importing-and-reviewing-requirements)
- [Coverage and Extraction Fidelity](/help-center/product-documentation/coverage-and-fidelity)
- [Requirements Traceability Matrix](/help-center/product-documentation/requirements-traceability-matrix)
- [Duplicates and Conflicts Across Requirement Documents](/help-center/product-documentation/requirements-cross-document-duplicates-and-conflicts)
- [Reading Excel Workbooks Sheet by Sheet](/help-center/product-documentation/requirements-excel-workbooks)
- [Requirement Document Versions](/help-center/product-documentation/requirements-document-versions)
- [Requirement Gaps and Use-Case Journeys](/help-center/product-documentation/requirements-gaps-and-use-case-journeys)

## For administrators (self-hosted installations)

| Setting | Default | What switching it does |
|---|---|---|
| `RIE_PARSE_QUEUE_ENABLED` | `true` | `false` stops the per-project queue; documents are then extracted independently and may miss cross-document duplicates. |
| `RIE_PARSE_PROJECT_CONCURRENCY` | `2` | How many projects can extract a document at the same time. |

