> ## Documentation Index
> Fetch the complete documentation index at: https://help.stralos.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Work items

> Building estimate scope and cost components

Work items are the main scope lines in an estimate. Each work item carries quantity, unit, status, and pricing components.

On the desktop, the column header row and each section heading stay visible as you scroll the work items list. The section heading pins just below the column header so you can always see which section a row belongs to.

## Loading state

While work items are loading, the panel shows a spinner and the message **Loading work items…** instead of an empty grid. If you open a deep link that includes a `?wi=` parameter, Stralos waits until the work-item list is ready before opening the detail pane, so the pane is never shown empty while the item cannot yet be validated.

## Pricing grid columns

The pricing grid shows nine columns: **Estimate item**, **Quantity**, **Unit**, **Max / total duration**, **Cost rate**, **Sell rate**, **Total cost**, **Shared Costs**, and **Sell price**. All of these can be shown or hidden.

Select the gear icon in the column header row (at the far right, in the row-menu position) to open the **List columns** panel. Tick or untick any column. Your choices are remembered per browser.

Default state:

| Column | Default |
| - | - |
| Estimate item | On |
| Quantity | On |
| Unit | On |
| Max / total duration | Off |
| Cost rate | On |
| Sell rate | On |
| Total cost | On |
| Shared Costs | Off |
| Sell price | On |

**Max / total duration** is off by default. Turn it on to see a duration summary for each work item alongside the other columns. See [Duration](#duration) for what the values mean.

**Shared Costs** is off by default. Turn it on to see each work item's attributed share of the Shared Costs pool. See [Shared Costs](#shared-costs) for how the pool works.

## Sections

Work items are organised into sections. Sections can be nested: a section can contain subsections, each of which groups its own set of work items.

### Shared Costs

A Shared Costs section holds overhead costs that should be recovered across the rest of an estimate instead of billed as separate schedule lines.

Select **Add Shared Costs** in the work-items toolbar. Stralos creates the single allowed **Shared Costs** section, numbers it **S**, seeds one **Shared Costs item**, and surfaces the section first in the list. Once the pool exists, the add button is hidden. Add or delete pool items through the ordinary work-item actions. Adding items to the Shared Costs section is allowed even when the SOQ is locked, because the pool is not part of the contracted schedule.

When both the pool and the non-pool top-level work items have cost, Stralos distributes the pool proportionally across those non-pool rows. Each share is already included in the recipient's **Cost** and **Price**; the pool rows then contribute zero, so the same cost is not counted twice. Sub-items do not receive a separate share because their cost is already rolled into their top-level parent.

The pool badge shows its current state:

* **Spread across items**: the pool has been distributed. The pool subtotal is zero because its cost is inside the recipient rows.
* **Not spread yet**: there is no positive pool cost, no positive non-pool base, or no eligible recipient. In this state the pool rows remain ordinary costed lines and are included in the estimate total.

To inspect each recipient's attributed share, use the pricing-grid column settings to show **Shared Costs**. Select the gear icon in the column header and tick **Shared Costs**. It is off by default, remembered per browser and per view, displays a dash for zero share, and is a breakdown of **Cost**, not an amount to add again. See [Pricing grid columns](#pricing-grid-columns) for the full column visibility controls.

When you open a recipient work item's detail pane, a **SPREAD** row appears at the top of the build-up showing the item's attributed share as **Cost rate** and **Total cost**. This row is a breakdown only: Stralos already includes the share in the item's total cost, so it is not added again. It makes the build-up balance: without it, the component rows would sum to less than **Total cost** with nothing to explain the gap. The row only appears when the share is greater than zero.

### Adding a section

To add a new top-level section, select **Add section** in the work items panel header. This always creates a section at the top level: use it to start a new estimate with no sections, or to add a sibling section that sits at the same level as existing top-level sections.

To add a subsection inside an existing section, open the section action menu and select **Add subsection**. A new section editor opens inline. Enter the title and select **Save section**. If you try to save without a title, the editor shows **Enter a section title.** inline and does not submit to the server.

A new subsection is inserted at the end of its parent's subtree (after any existing child sections), so it appears directly above the next sibling section at the same level. Stralos shifts existing sections down one slot only when the chosen position is already occupied; if there is a gap, no other sections are moved.

Section titles must be unique among sections at the same level under the same parent. Sections at different levels can share a title, for example a top-level **3 Drainage** and a subsection **4.3 Drainage**. If you add or rename a section with a title already used at that level, Stralos shows **There's already a section called "…" at this level. Please choose a different name.**

### Section numbers

Stralos assigns section numbers from the outline structure. A top-level section receives a whole number such as **2**; its children receive dotted numbers such as **2.1** and **2.2**. Numbers update automatically when sections are moved or reordered.

When you edit a section, the **Number** field sets the reference shown beside the section and in exports. The **Order** field controls where the section sits in the list: a lower value comes first. Changing the order does not change the number.

In an SOQ estimate, a section that contains locked rows cannot be moved or renumbered. Stralos prevents adding a subsection when doing so would require renumbering a locked section.

### Moving a section

Use the move action from the section action menu to reparent a section. Stralos renumbers all affected sections and their work items after the move. A move is refused if it would shift an SOQ-locked section.

## Work item fields

* Item number and name.
* Section, where the estimate is grouped into sections.
* Quantity and unit.
* Productivity and duration, where useful.
* Status, such as draft or reviewed.
* Total cost and total price.
* Pricing source, such as internal rates.
* Markup (%), which overrides the estimate default for measured and provisional-quantity items. Leave blank to inherit the default; set 0% to price those item kinds at cost.

### Item numbers

Stralos assigns item numbers automatically. The number reflects the item's section and position within that section, for example, the third item in section 2 is numbered **2.3**. You cannot type or change an item number directly.

When you create a new item, the **Item number** field in the editor shows **Assigned automatically**. The number appears once the item is saved.

When you move an item to a different unfrozen section, Stralos renumbers the item for its new position. Items that remain in the affected sections are also renumbered to close the gap or make room. In an SOQ-frozen section, existing numbers stay unchanged and row reordering does not renumber them. The work items list reloads after a section move so all applicable numbers update at once.

When you add a new row to an SOQ-frozen section, Stralos assigns it a number that does not displace any existing contractual reference:

* If the new row sits between two locked rows, it receives a nested number (for example, **2.1.1** between **2.1** and **2.2**).
* If the new row is appended after the last locked row, it receives the next sibling number (for example, **2.2** after the last locked row is **2.1**). Stralos preserves the schedule's zero-padding, so a section whose last locked number is **3.09** assigns **3.10** to the next added row.

**Schedule of quantities (SOQ) items:** When an estimate uses an imported schedule of quantities, item numbers come from the client's schedule and are kept exactly as written. These numbers are frozen and shown with a **from SOQ** badge in the editor. They do not change when work-item rows are reordered within the section; the section itself cannot be moved or renumbered while it contains a locked row.

In the desktop pricing grid, the **from SOQ** badge appears after the unit rather than in the quantity column, so the quantity column shows only the number. In the compact work-items list (without pricing columns), the badge sits beside the quantity.

The **Name** field is required. Stralos validates this in the browser and shows an inline error if you try to save with an empty name, rather than sending the form to the server. Names can be up to 500 characters; the field stops accepting input at that limit.

### Calculated quantity

A work item's quantity can be linked to a formula derived from one or more sources: calculator readings, takeoff measurements, or rate-item component sums. When a link is set, Stralos recalculates the quantity automatically whenever the underlying sources change.

#### Setting up a calculated quantity

To link a quantity:

1. In the work items grid, open the row action menu (**⋯**) for the work item and select **Calculate quantity…**. Alternatively, open the detail pane and select the link icon beside the **Item qty** label.
2. The **Calculate quantity** sheet opens to the right, keeping the estimate list visible.
3. Under **Sources**, tick one or more candidate readings. Each source must share the work item's unit; sources in a different unit are listed as greyed-out with the reason.
4. Optionally enter a **Multiplier** or **Allowance** to adjust the sum (for example, a multiplier of 0.9 to apply a 10% reduction, or a negative allowance to take a fixed amount off). Leave these fields blank to use the sum as-is.
5. Optionally choose a **Rounding** step. See [Rounding](#rounding).
6. A **Result** section shows a preview of the calculated value at three decimal places.
7. Select **Save link** to apply. Stralos stores the formula, runs it on the server, and replaces the quantity field with the calculated value.

Candidate sources are filtered to match the work item's unit. Rate-item rows that Stralos cannot include are shown greyed-out with the reason, for example rows priced per unit of the item, rows inside an activity, rows copied from an activity, or rows already counted through another calculator source.

#### How a linked quantity appears

When a quantity is linked, the quantity cell and the detail pane show a teal **ƒ** chip alongside the quantity. The value is displayed at two decimal places. Hover over the value to see the stored three decimal place figure.

The quantity field is read-only while a link is active. Click the chip or the quantity cell to open the Calculate quantity sheet and edit or remove the link.

A formula tooltip shows the full expression, for example, `= Trench A · Length + Trench B · Length × 0.9`.

#### SOQ-locked items with a linked quantity

An SOQ-locked item can have a linked quantity. The calculated value is shown alongside the scheduled (contracted) value in the detail pane. When the calculated figure differs from the schedule, Stralos shows the variance at two decimal places and its percentage. When the difference is zero at two decimal places, Stralos shows **Matches schedule** (neutral) regardless of any sub-cent difference in the stored figures.

Unlocking the SOQ on an estimate that has linked quantities shows a note in the unlock confirmation: the linked quantities will replace their scheduled values and stay editable if you re-lock.

#### Stale links

When a source a formula depended on is removed or becomes unavailable, for example, a calculator layer is deleted, the chip turns amber and shows **ƒ!**. The quantity keeps its last calculated value. A tooltip on the chip names each unavailable source.

Select the chip to open the **Calculate quantity** sheet with the removed source highlighted. Update or remove the source to resolve the stale link.

#### Unlinking a quantity

To remove the formula and restore manual editing:

1. Open the **Calculate quantity** sheet by clicking the **ƒ** chip or selecting **Calculate quantity…** from the row action menu.
2. Select **Unlink** in the sheet footer.

After unlinking, the quantity field becomes editable and retains the last calculated value as its starting point.

#### Activity allocations after a recalculation

When a linked quantity is recalculated, Stralos also updates a top-level activity whose allocation exactly matched the previous item quantity, provided the allocation unit matches. This is the same follow-on rule as for manual quantity changes. Stralos announces any allocation changes in the work items panel after the refetch. If an allocation cannot be updated (for example, the quantity is zero or the allocation is invalid), Stralos names the affected activity in the announcement without changing the recalculated quantity.

Deliberately split allocations are left unchanged. For example, activities allocated 300 m and 200 m on a 500 m item do not become 600 m when the item changes to 600 m. Only an activity allocated the full previous 500 m follows.

The item saves before its followers. If one of those activity updates fails, the new item quantity remains saved and Stralos warns with the affected activity names so you can correct their allocations. An SOQ-locked quantity is refused before either write.

This follow-on also applies when a linked quantity changes through re-resolution. The affected activities are updated in the same operation as the linked quantity write.

## Locking and unlocking the SOQ

A new estimate always starts unlocked. The SOQ lock engages in two ways: accepting an imported schedule of quantities for the first time, or selecting **Lock SOQ** manually.

When an estimate uses an imported schedule of quantities, a **Lock SOQ** / **Unlock SOQ** button appears at the top of the work items panel. The locked or unlocked state is saved to the estimate and is the same for all estimators working on it.

**While the SOQ is locked:**

* Imported item quantities are read-only and show a **from SOQ** badge.
* Imported item names are read-only.
* Row reordering within a section is disabled for imported lines. The drag grip is hidden and **Move up** / **Move down** do not appear in the row action menu.
* Section moves are disabled for all sections. Section action menus are hidden.
* The row action menu shows only **Add sub-item**. **Duplicate**, **Find similar estimate items**, **Departures and clarifications…**, and **Delete** are not available while locked.
* **Add section** and quick-add rows in ordinary schedule sections are hidden. You can still create **Shared Costs** or add items to its pool because it is outside the contracted schedule. The **Import** button also remains available.

**When you unlock the SOQ:**

Stralos shows a confirmation dialog before writing the change. The dialog explains what becomes editable: quantities, names, the order of items, and section position. Selecting **Unlock SOQ** in the dialog applies the change. Imported item numbers remain protected from automatic renumbering and have no direct edit control.

Moving a section while the SOQ is unlocked renumbers only auto-assigned items inside it. Imported contractual item numbers remain frozen in every lock mode. Review the resulting outline before continuing.

**Locking the SOQ** takes effect immediately and requires no confirmation. Once locked, all imported quantities, names, and move affordances return to their read-only state.

## Markup

On markup-basis estimates, each work item has an optional **Markup %** field. For measured and provisional-quantity items, leaving it blank inherits the default in **Estimate settings**; entering a value applies that percentage to this item only. Provisional-sum prices come from their allowance, so markup is not added to them.

The marked-up price for an item is its cost multiplied by one plus the effective markup fraction. Day-rate lines are the exception: their cost is added after the markup, unmarked, because a day rate already includes margin. This value appears in the **Price** column of the pricing review grid and feeds into the estimate's tender build.

For margin-basis estimates, use [Tender Submission → Margin](https://help.stralos.app/guides/estimators/tender-submission.md#markup-and-margin). The work-item percentage field currently saves markup even when labelled **Margin %**.

## Reusing past work items

When you type into any **Name** field (the inline quick-add row, a new-item editor, or a rename field), Stralos searches your company's past work items from the last three months and shows matching names as suggestions. Only items with a reusable build-up appear as suggestions: at least one hand-entered or resource line. Items with no build-up, or whose build-up is only calculator lines, are not offered because there is nothing to copy. Selecting a suggestion puts the name in the field. In the quick-add and new-item creation flows, selecting any suggestion also shows two build-up import choices; the rename field only changes the name and never imports a build-up.

### Create-time build-up import

When you select a past work item from the name suggestions and then save the new work item, the two checkboxes control what happens to the source item's build-up:

* **Import activities and rates from this work item**: copies the eligible build-up rows onto the new item, including hand-entered rows. Generated rows and instance trees whose unit does not match are excluded. Both checkboxes are ticked by default.
* **Update rates to current rates**: for copied rows already bound to a library resource, attempts to use the current matching price during import. A refreshed line is stored as an automatic price choice, so it keeps following project rate changes. A row keeps its historical price, pinned, when there is no current match, the match is ambiguous, the matched resource has no available price, or the price belongs to another project; Stralos reports this in the import result. Untick this if you want the copied build-up to keep its saved prices. This checkbox is disabled unless the import checkbox is also ticked.

The new item is created first. If the build-up import fails, the item still exists with its name intact so you can retry or add components manually.

### Reusing a past build-up

To bring a past item's build-up onto a work item that already exists, select **Reuse a past build-up** beside **Rates & activities** in the detail pane. You can also select **Find similar estimate items** from a work item's row or card action menu (**⋯**). Both open the **Reuse a past build-up** side sheet, which has three tabs: **Similar**, **Current Project**, and **Search**. The button is disabled on a submitted estimate.

Each tab lists items as cards. Each card shows the item's name, its quantity, cost, and the date it was last updated, which tells you how old its prices are. The build-up starts collapsed: select **Show build-up (N lines)** to see its lines in build-up order, each with its rate group badge, quantity, and rate. Day-rate lines are labelled **Day/Card rate**.

Lines made by a calculator are shown but labelled **From a calculator, not copied**. They have no tick box and aren't counted in the line total.

Every other line in an open build-up has a tick box, and every line starts ticked. Untick the lines you don't want:

* Ticking or unticking an activity ticks or unticks every line inside it.
* Ticking a line inside an unticked activity ticks the activity too. Unticking an activity's last line unticks the activity, so an empty activity is never copied.
* Lines inside a fixed-price package have no tick box of their own. They follow the package.

Each card has two actions, which use only the ticked lines:

* **Add to build-up** adds the lines to the current build-up. When you have unticked some lines, the button names how many it adds, for example **Add 3 lines to build-up**.
* **Replace build-up** first asks you to confirm, then replaces the current build-up lines with the ticked lines. The removed lines are kept for history.

All tabs share one **Update rates to current rates** tick box, ticked by default. Leave it ticked to re-price copied lines against current rates. A refreshed line is stored as an automatic price choice. A line keeps its saved price, pinned, when there is no current match, the match is ambiguous, the matched resource has no available price, or the price belongs to another project. Untick the box to copy the build-up at the values it was saved with.

A copied line whose schedule revision isn't in this project's day-rate set keeps its rate and shows a note in the build-up (see [Notes on a line](https://help.stralos.app/guides/estimators/day-rates-in-the-build-up.md#notes-on-a-line)). If part of the build-up could not be copied, for example activity instances whose unit doesn't match, Stralos shows a warning notification for each problem, titled by the kind of line affected, such as **Some activity instances were not copied**.

#### Similar tab

The **Similar** tab lists past work items whose names closely match the current item's name, each with its match percentage.

If there are no matches, the tab says so and suggests the **Search** tab. Matches only include past items with a reusable build-up, so an item imported from a schedule of quantities but never priced is not offered, and neither is an item whose build-up is only calculator lines. If your company is new to Stralos, this is expected.

#### Current Project tab

The **Current Project** tab lists this project's own estimate items in schedule order, grouped by section, each with its item number. Use it to reuse a build-up from another item in the same project.

Only items with a reusable build-up are listed, and the item you're working on is left out. Search by item number or name. If the project has more than one estimate, choose another estimate to list its items.

#### Search tab

1. Select the **Search** tab. It lists the most recently worked-on items with a reusable build-up in the period straight away.
2. Choose a **Period**: last 3, 6, or 12 months, or all time.
3. Optionally choose one or more **Clients** to search only their projects. The list shows the clients with work in the chosen period.
4. Type in **Search** to narrow the list by name.
5. Open a card's build-up, tick the lines you want, and select **Add to build-up** or **Replace build-up**.

The tab shows 10 results at first. Select **Show more** to list more, or refine the search when the count says there are more matches than can be listed.

#### Import errors

If the import fails, the sheet stays open and shows a message. When the message says the build-up was read back and is unchanged, the import did not apply and you can safely retry.

If the message says the item could not be read back to confirm, do not retry immediately. Reload the estimate and check the build-up: importing twice copies every line a second time and doubles the cost. The retry button is hidden in this case to prevent accidental duplication.

## Importing work items

Select **Import** in the Estimate schedule toolbar to open the import drawer. The drawer lets you bring in work items from a file, from another project, or from a company template.

### Importing from a file

Select **File** in the **Import from** selector. Add one or more files using the drop zone or the file picker. Stralos accepts PDF, images (PNG, JPEG, TIFF), Word (.docx), Excel (.xlsx), and CSV files. AutoCAD drawings (.dwg, .dxf) must be uploaded on the project Documents page instead.

If the file is already in the project's Documents, select **Choose from project documents** instead of uploading a second copy. Stralos processes the chosen file in place.

Select **Import** to upload the files. Stralos sends them through the AI analysis pipeline for Work Items. The uploaded files also appear on the project Documents page alongside any other project documents.

The import drawer stays open and watches the files it uploaded. When a file finishes processing, a suggestions sheet opens over the panel. Suggestions are grouped by the section each will land in. Each suggested estimate item appears as a row with its item number, section, description, quantity, unit, kind, confidence, and source page. Tick the rows you want to import and untick any you want to dismiss, then select **Import selected**. Edits you make to a row's description, quantity, or unit are saved as overrides. Rows are imported one at a time in schedule order.

Each row's **Unit** is a unit picker. Common shorthand such as `m3`, `cu.m`, or `LS` resolves to its catalogue unit. A unit Stralos doesn't recognise is listed under **Legacy**, and importing that row shows **Please choose a unit from the list** until you pick a catalogue unit.

A numbered heading in the document, such as **4.1 Stormwater**, becomes a section numbered **4.1** and titled **Stormwater**. If its parent section, such as **4 Utilities**, is not in the estimate yet, Stralos creates it too, even when the parent heading has no rows of its own. Two headings with the same title stay separate sections when their numbers differ, or when an unnumbered title appears more than once in the document.

Closing the sheet without importing leaves every suggestion pending. You can still access them from the project Documents page at any time.

### Importing from a project

Select **Project** in the **Import from** selector to copy work items from another project in your company.

1. Choose a **Source project** from the list. Stralos loads a preview showing the number of work items, sections, and calculators in that project, and the number of work items currently in this estimate.
2. Under **What to import**, choose **The whole schedule** or **Choose sections and lines**. See [Choosing sections and lines](#choosing-sections-and-lines).
3. For the whole schedule, choose how to handle the existing scope under **Current estimate items**:
   * **Append imported estimate items**: adds the imported work items alongside any existing ones.
   * **Remove current estimate items and replace**: removes all current work items and their build-ups before importing. Stralos asks you to confirm before proceeding.
4. To import the full build-up (rates, activities, and calculators), leave **Import work-item details (rates and activities)** ticked. Untick it to import names, sections, quantities, units, and notes only.
5. For the whole schedule, when importing details, set the **Calculators** option:
   * **Import calculators and their rate lines**: copies the calculators and keeps them editable.
   * **Import calculator rate lines only**: keeps the calculated quantities as ordinary rate lines without calculator links.
6. Set the **Pricing** option:
   * **Update to latest pricing**: re-resolves imported rate lines against current prices.
   * **Keep pricing from source project**: preserves the source project's prices.
7. Review **Source price overrides**. This lists project rates and manual price overrides from the source project. Ticked overrides are kept on the imported lines, including when other rates are updated. Untick an override to revert that line to current destination pricing. Use **Keep all** or **Discard all** to set every override at once.
8. Select **Import estimate items** to confirm.

After a successful import, the drawer shows how many work items and calculators were imported, how many previous work items were removed (on a replace), and how many rate lines were updated to current pricing.

If the import does not receive a confirmed response, for example after a network interruption, the drawer records the unconfirmed state and shows a **Retry same import** button on the next open. Retrying resubmits the same request without importing twice.

#### Choosing sections and lines

**Choose sections and lines** shows the source project's sections and work items as a tree. Tick a section to bring everything in it, subsections included, or tick single lines. Chosen sections and lines are always added to this estimate; nothing is replaced.

Stralos then asks any questions it needs answered before you can import:

* **A section title already used at the same level.** Choose **Add to "…"** to put the incoming items in the existing section, or **Make a new section** and give it a name no sibling section has.
* **Lines chosen without their section.** Choose **An existing section** and pick one, or **A new section** and name it.
* **Calculators.** When importing details and the chosen lines use calculators, choose **Yes, bring in the calculators** or **No, keep the quantities as typed numbers**.

### Importing from a template

Select **Template** in the **Import from** selector to add sections and lines from one of your company's templates. See [Saving work items as a template](#saving-work-items-as-a-template).

1. Use **Find a template** to search by name or description, and tick one or more templates.
2. Set the **Pricing** option: **Use latest prices** re-resolves the lines against current prices, and **Keep the template's prices** keeps the prices saved with the template.
3. Review **Template price overrides**, as for a project import.
4. Select **Import estimate items** to confirm.

A template is always added to the estimate; nothing is replaced. Stralos asks the same placement questions as when you choose sections and lines from a project.

The person who saved a template, and any admin, can **Rename** or **Delete** it from the template list. Estimates that already used a deleted template keep their items.

#### When a section title already exists

When you import the whole schedule and append it, Stralos refuses the import if any source section would sit beside an existing section with the same title at the same level. Nothing is written, and the message names every clashing section. Select **Choose sections instead** to switch to **Choose sections and lines** with every section and every line without a section already ticked. Stralos then asks where each clashing section goes, so you can add it to the existing section or make a new one.

### What is not copied

* Source document links, takeoff measurements, and AI suggestion provenance.
* Takeoff links on calculator inputs. A calculator input that read a takeoff measurement in the source comes in as a typed value.

The destination estimate's margin and tax settings apply to all imported lines.

If the source or destination changes between previewing the import and confirming it, Stralos refuses the write. Preview again before retrying.

## Saving work items as a template

A template is a snapshot of chosen sections and lines that anyone in your company can add to another estimate, for example a standard P\&G build-up. You can save one from any estimate, including a submitted one.

1. Select **Save as template** in the Estimate schedule toolbar. You can also select it from a section's action menu (**⋯**), or from the bulk action bar with items ticked.
2. Enter a **Template name** (up to 120 characters) and an optional **Description**.
3. Tick the sections and lines to save. Ticking a section includes everything in it.
4. Select **Save template**.

If the name is already used, Stralos asks **Replace the existing template?** The person who saved it, or an admin, can replace it. Estimates that already used the old template keep their items.

A template keeps quantities as typed numbers. Takeoff links, documents, and subcontract quotes stay with the project.

## Sub-items

An SOQ line sometimes represents two distinct jobs bundled under one contractual reference. You can split such a line into sub-items: the parent keeps its contractual identity (number, name, quantity, and section), and the sub-items carry the real build-up.

### Adding a sub-item

Select **Add sub-item** from a parent work item's action menu (**⋯**). An indented editor labelled **Sub-item of** the parent's name opens beneath the row. Sub-items are indented more deeply than SOQ rows so internal splits remain visually distinct from the schedule structure. Enter the sub-item's name, quantity, and unit, then select **Save sub-item** or press Enter.

Stralos creates the sub-item inside the same section as the parent. When the parent has a usable item number and the generated value fits the 80-character limit, the sub-item receives a number of the form `<parent number><letter>`: for example, **3.2a** as the first sub-item of item **3.2**, **3.2b** as the second, and so on. Suffixes run a through z, then aa, ab, and continue from there. Otherwise, the sub-item has no item number.

Only SOQ-sourced work items (those with a **from SOQ** badge) can be split. A sub-item cannot itself be split.

Sub-items stay in their parent's section and move with the parent. They cannot be moved or reordered independently. The SOQ lock state does not affect whether you can add a sub-item to an eligible parent.

### How totals work

A sub-item's total rolls up into its parent. The parent's **Total cost** and **Total price** are its own build-up plus the totals of all its sub-items.

Open the parent's detail pane to see a **Sub-items** group after its own build-up. A reconciliation line shows **Own build-up + sub-items = total**, so you can see why the parent's total is larger than its component build-up alone.

Section headers show separate work-item and sub-item counts. Section subtotals, navigation totals, estimate summary totals, and the overall tender total count only top-level work items because each parent's total already includes its sub-items. This prevents double-counting. Creating an empty sub-item does not transfer any of the parent's build-up. Moving an equivalent priced scope from the parent to its child leaves the estimate total unchanged; adding new priced scope to a child increases the rolled parent and estimate totals.

### Deleting a sub-item

Delete a sub-item the same way as any other work item. Stralos removes the sub-item and recalculates the parent's total immediately.

## Duplicating a work item

Select **Duplicate** from a work item's action menu (the **⋯** menu on the row or card). Stralos creates the copy and updates estimate totals in one operation.

The copy:

* Uses the original name with **(copy)** appended.
* Includes internal build-up components and their pricing overrides.
* Preserves activity instances: each instance container is copied with its allocation, activity count, production rate, profile, scope label, and chain label intact. Child rows are re-parented onto the copied container and retain their charge basis.
* Clears its source document, page, excerpt, and AI suggestion provenance.

## Unit display

Units use compact notation throughout the estimate workspace: the work-items grid, mobile cards, takeoff measurements, and pricing review. For example, **square metre** appears as **m²** and **cubic metre** as **m³**. An alias spelling such as `lm` displays as its catalogue symbol, **m**.

The work-item editor keeps the full unit label visible and shows compact notation alongside it when available.

When you open the unit picker, each option shows the full name followed by its symbol in brackets, for example, **Tonne (t)** or **Cubic metre (m³)**. The committed field still shows only the compact symbol. The picker includes **Provisional Sum (PS)** under the Count group, for allowances covering work not yet fully defined. The stock units **Length (len)** and **Roll Length (roll)** appear under the Length group, and **Sheet (sheet)** and **Roll Area (roll)** under the Area group. Use them for pipe, timber, roll, and sheet materials priced per whole unit. See [Whole stock units](https://help.stralos.app/guides/estimators/pricing-review.md#whole-stock-units) for how these affect pricing.

Selecting **PS** converts the work item into a provisional sum. If the item already has build-up lines or sub-items, Stralos shows a confirmation dialog before proceeding. The dialog describes what will be deleted and lists the affected elements, including build-up lines with their calculator links and project rates, sub-items, any quantity link, and the item's quantity if it is not already 1. Select **Cancel** in the dialog to revert the unit cell without making any change. Confirming removes those elements and converts the item. The allowance starts at the item's current price so the estimate total does not change at conversion.

A provisional sum's quantity is always **1** and is shown as read-only. Enter the allowance in **Cost rate**. If that column is hidden, the input moves to **Total cost**, then **Sell price**; exactly one input appears. No build-up count badge or **Build up** button appears on a provisional sum. Open its detail pane from **⋯**. The item has no build-up, no margin, and no sub-items; **Calculate quantity** and **Add sub-item** are not available on a provisional sum row.

To revert a provisional sum back to a measured item, change its unit to any unit other than **PS**.

You can type a legacy or alias spelling directly into the unit field, for example `m3`, `cu m`, `t`, or `tonne`. Stralos matches what you typed against the unit catalogue using the same alias table it applies when saving imported work items. Leaving the field on an alias that names a known unit writes that unit. If what you typed does not match any catalogue entry, the field stays open showing **No unit matches** and the field is marked invalid, preventing a save. Typing again clears the invalid state.

Stralos normalises legacy unit spellings to catalogue codes when a work item is
saved. Common document abbreviations such as `cu.m`, `sq.m`, `m`, `ea`, `ls`,
`ps`, and `m3` resolve to their catalogue equivalents (`cubic_metre`,
`square_metre`, `metre`, `each`, `lump_sum`, `provisional_sum`, `cubic_metre`)
at the point of write. The editor shows the standard symbol, **m³**, **m²**,
**LS**, or **PS**, for example, so the Unit column reads consistently with work
items entered directly in Stralos. Units that do not match a catalogue entry are
retained after trimming and collapsing repeated whitespace; no other spelling is
guessed.

## Rate-only items

A rate-only item is a schedule line the client prices by rate alone, such as "Extra over for rock excavation, rate only, \$/m³". It keeps its quantity and unit for display, but its **Total cost** and **Sell price** read **Rate only** and it counts in no estimate total. It carries an **RO** badge.

To make an item rate only, select **Make rate only** from its row action menu (**⋯**). Only measured and provisional-quantity items can be made rate only, and not sub-items. If the item's quantity was linked, the link is removed and the quantity stays as it was, for display only.

A rate-only item is priced in one of two ways:

* **Typed sell rate**: while the item has no build-up lines, type the rate into its **Sell rate** cell. No margin is added to it.
* **Build-up for one unit**: once the item has build-up lines, its sell rate is the build-up priced for one unit, and the **Sell rate** cell shows that figure.

To count the item in the totals again, select **Make measured** from its row action menu and confirm. The item counts at the quantity it shows, so check the quantity afterwards.

## Duration

A work item carries no production rate of its own. Production belongs to the activities inside it, so duration in the work-items grid is derived from the item's activity instances. An item with no instances shows a dash.

The optional **Max / total duration** column shows two figures separated by a slash, for example, **4 / 7 days**:

* The first figure is the **elapsed duration**: the slowest crew. Activities with the same crew label run one after another. Activities with different labels, and activities with no label, run side by side.
* The second figure is the **total duration**: the sum of every top-level activity instance's duration.

When the first figure is smaller, some activities run side by side. A dash appears when the item has no activities with a computable duration.

While the column is shown, each section heading also shows a roll-up such as **4 / 31 days**. The first figure is the longest single item in the section, because items run side by side. The second is the sum of every item's activity days. The column is off by default.

The elapsed duration also appears as **Activity duration** in the detail pane header strip and in the build-up summary. Its tooltip gives both figures, for example **Longest crew: 30 days. All activities added together: 91.7 days.** When the two differ, the build-up summary also shows **All activities added together**. See [Activity instances](#activity-instances) for how individual instance durations are calculated.

> [!NOTE]
>
> The work item has no **Units/day** field. Set the production rate on the activity: its allocation and production rate give the instance its duration, and that is what the column and the summary strip show.

## Components

Components are the cost build-up underneath a work item. A component can reference:

* A rate item.
* A specific rate option.
* An activity.
* A line from one of the project's day-rate schedules. See [Adding day rates to a build-up](https://help.stralos.app/guides/estimators/day-rates-in-the-build-up.md).
* An assembly from the library, inside an activity. See [Assemblies](#assemblies).
* A manual line with quantity, unit cost, resource count, multiplier, or calculator details.

Component costs are calculated from quantity, estimate quantity, resource count, unit cost, and multiplier. Material components with a cubic-metre unit can specify a density and pricing unit to convert to a tonne basis when the rate is priced by weight. On a bulk materials or disposal line measured in m³ and priced per tonne (or the other way round), the **Charged qty** cell's tooltip states the measured quantity and density, for example **Measured 6.25 m³, priced per tonne at 1.70 t/m³**.

A line priced in whole stock lengths, rolls, or sheets shows the charged metres or m² in **Charged qty**, with the number of whole units on a second line below, for example **42 m** over **7 lengths**.

### Disposal line substance

A disposal line you added yourself, not one made by a calculator, has a substance picker below its rate. Choose the excavated material being carted away. Stralos then shows the substance's loose density in t/m³ beside it. If the list of substances can't be loaded, select **Retry substances**. A calculator's disposal lines take their substance from the calculator.

### Deleting a component

Select **Delete** from a component row's action menu (**⋯**) to remove it. The row disappears immediately and an **Undo** notification appears at the bottom of the panel. Select **Undo** within the notification window to restore the component. Once the undo window closes, the component is removed from the estimate item. It is kept for history.

### Undoing an edit

After you save a typed change to a work item's name or quantity in the schedule, or to a build-up line's name, quantity, or rate, a notification offers **Undo**. Select it to write the previous value back. Only your last change can be undone: a newer edit replaces the notification. Other changes, such as units, statuses, rate picks, and margins, offer no **Undo**. A submitted estimate offers no undo for edits or deletes.

When adding or editing a rate item or activity component, the editor shows two adjacent numeric fields: **Quantity** (how much of the rate's unit each resource uses) and **Count** (how many of them, charged once for each). The calculated total cost section labels the formula as **Quantity × Count × Unit cost** so the relationship between the fields is clear. When a labour multiplier is set, the section shows **Quantity × Count × Unit cost × Labour multiplier** instead.

Count accepts fractional values. A count of 0.2 represents one-fifth of a resource, for example, 0.2 of a crew shared across multiple items. Fractional counts below 1 are priced at their entered value, not rounded up to 1.

### Top-level component charge

A rate row added directly to a work item (not inside an activity container) is charged **once for the whole work item** by default. The entered quantity is the total for the job, regardless of how many units the work item carries.

To price a row per work-item unit instead (for example, 0.3 m³ of material per metre of pipe), choose **Per estimate item unit** in the row's **Unit / Basis** picker instead of **Whole estimate item**. This is an explicit opt-out and applies only to parentless, non-activity rows.

Rows that sit inside an activity container are not affected by this setting; their charge basis is resolved through the activity instance as described below.

Rows copied from an activity are also excluded from the whole-item default, because their quantities are already derived per unit.

### Build-up groups

Expanded build-ups group rows under nine headings, in this order:

1. **Activities**: rows that reference a library activity.
2. **Labour**: labour rate items and manual labour lines.
3. **Plant & Vehicles**: plant, vehicle, and equipment lines.
4. **Bulk Materials**: bulk materials such as aggregate and topsoil.
5. **Materials**: all other material lines.
6. **Subcontractors**: subcontract rows identified by the rate-group taxonomy.
7. **Day/Card rates**: lines picked from the project's day-rate schedules.
8. **Disposal**: disposal rows identified by the rate-group taxonomy.
9. **Other**: rows the classifier cannot place in any of the above groups.

Empty groups are hidden. When pricing is visible, each displayed group shows its own subtotal.

The six rate-group headings from Labour through Disposal use the names configured under **Settings → Rate group names**. Changing a name does not reclassify a row or alter pricing. **Activities**, **Day/Card rates**, and **Other** are structural headings and are not customisable.

**Other** is never hidden, even when it contains only one row. Rows that land there remain visible so you can review and correct their classification; they are never silently folded into a neighbouring group.

The group a row belongs to is decided first by its stored rate-group (the authoritative taxonomy), then by its category text when the rate-group is absent, `null`, or unrecognised. This means a row whose category text reads "Labour" but whose rate-group is `plant_vehicles` appears under **Plant & Vehicles**.

Each rate-group badge on an individual build-up row is a filled chip in the group's assigned colour. It shows the group's letter: **L** Labour, **P** Plant & Vehicles, **M** Materials, **B** Bulk Materials, **D** Disposal, **S** Subcontractors. Hover over the chip to see the group's name, which screen readers also announce. **Day/Card rates** and **Other** rows have no letter, so their chip shows the name. The text colour is chosen automatically so it meets contrast requirements against whatever fill colour is set. Stralos uses a distinct colour for each of the six rate groups so you can identify a row's group at a glance. Groups with no assigned colour show a neutral grey chip. A custom colour chosen under [Settings → Resource groups](https://help.stralos.app/guides/admins/organisation-settings.md#resource-group-colours) overrides the theme default for that group's badge.

### Build-up layout

On a desktop or tablet, the detail pane's header shows the item's **Status**, **Item qty**, **Item unit**, **Duration**, cost per unit (for example **Cost / m²**), and **Total cost**, each labelled above its value.

Each activity has a tinted heading band with a drag grip, an **Activity** badge, its name, what its materials work out to per day, and **Add calculation**. Below it, a fields row shows **Activity count**, **Activity qty**, **Activity unit**, **Production rate**, **Production unit**, and **Duration**. See [Activity instances](#activity-instances).

Resource lines sit under a header of **Resource**, **Selection**, **Count**, **Qty**, **Unit / Basis**, **Charged qty**, and **Unit cost**, then any optional money columns and **Total cost**. **Count** is how many of the resource you need, for example 2 excavators, and **Qty** is for each one. The supplier and site sit on a grey line under the resource name.

The settings control (cog) at the top of the build-up chooses what the money columns show and which optional columns appear:

* **Show**: **Cost** or **Sell**. With **Sell**, every money heading reads as sell, for example **Total sell**.
* **Daily cost**: the line's cost for one period of its activity. Off by default. When every activity runs per week or per month, the heading reads **Weekly cost** or **Monthly cost**. A mix of periods reads **Cost per period**, and each cell's tooltip says which.
* **Cost / unit**: the line total divided by the work-item quantity, headed with the item's unit, for example **Cost / m²**. Summed down the build-up, it reconciles to the item's cost per unit. On by default.
* **Cost share (%)**: the line total as a share of the work item's total cost. Off by default.

Cost per unit and **Cost share (%)** show a dash when their denominator is zero or not positive. Your choices are remembered on this browser.

The **Shared Costs** column in the work-items pricing grid also has a resize grip. Drag the grip to adjust its width. The width is saved alongside the column's show/hide state and restored the next time you open the view.

### Material output per day

When a work item has activities and material lines, the build-up says what the materials work out to per day, so you can sanity-check a production rate. A material line is a **Materials**, **Bulk Materials**, or **Disposal** line in a quantity unit such as t, m³, or m², not a time unit.

* In each activity's heading band, **Daily outputs:** lists that activity's material lines divided by its duration in days.
* A caption for the whole item divides all its material lines by the item's total activity duration.

Lines with the same name and unit are added together first. No caption appears when the duration is zero or not known.

### Per-line hours per day

Eligible hourly build-up lines show an **h/day** override. Use it when that resource's working day differs from the estimate default. Leave it blank to inherit the default shown in the placeholder.

Day-based lines use the derived duration directly and do not have an h/day override.

### Weekly and monthly rate conversions

A build-up line priced from a weekly or monthly rate converts the activity's working days into weeks or months. The conversion comes from the project's **Days per week** and **Days per month** settings, which default to 5 and 20. See [Project settings](https://help.stralos.app/guides/estimators/project-settings.md).

To change the conversion for one line:

1. Expand the build-up and select the **Weekly conversion** or **Monthly conversion** button below the line.
2. Enter the number of days. Days per week can be more than 0 and up to 7; days per month can be more than 0 and up to 31. Both accept up to 2 decimal places.
3. Select **Apply**.

The panel shows a **Project default** or **Rate override** badge, and a worked calculation of the days, the converted weeks or months, and the line cost.

When you open an estimate, Stralos checks the project's **Days per week** and **Days per month**. If they've changed since the estimate was last priced, Stralos re-prices it and reloads the work items.

The conversion is saved on the line's rate when you choose the rate. A later change to the project setting does not update existing lines. Select **Use project default** to apply the current project setting to a line. Disposal and quarry material rates do not offer this control.

### New lines sit in an activity

Resources go into activities. When an item has no activity yet, its build-up shows **Activity 1** with an add row: **Add a resource and this activity is saved with it.** Once the item has an activity, however it was added, **Activity 1** goes.

When a line is added at the top level of a build-up, for example from the line editor, Stralos creates it inside a new manual activity named after the line, in the same save. The line's cost does not change:

* A line priced per hour, day, week, or month takes its duration from its own quantity, as described in [Adding a time-based labour or plant rate](#adding-a-time-based-labour-or-plant-rate).
* Any other line goes into a one-day activity and is charged once for the whole activity.

You can then change the activity's duration and labels like any other activity. Lines that already sat directly on the item stay where they are. A line you add inside an existing activity is not wrapped again.

### Moving a line between activities

To move a build-up line into another activity on the same work item, either:

* Drag the grip beside the line's name onto the activity.
* Open the line's action menu (**⋯**), select **Move to activity…**, and choose the activity.

The line goes to the end of that activity. When you move a time-based line into an activity priced on a production rate, its quantity follows that activity's days and crew. Any other move keeps the line's total quantity. A notification says what changed and shows the item's total before and after.

Calculator lines and companion charges cannot be moved, and a submitted estimate shows no grip or move action. A line moved into an assembly loses its charge basis and is priced per assembly. A line moved out of an assembly keeps the total it contributed inside it, so the item's cost doesn't change. You can move a line into or out of a library activity. If Stralos refuses a move, for example out of a fixed-price package, the notification gives the reason.

### Moving materials into a new crew activity

When you add a new activity with labour, plant, or other time-based lines from the add row, Stralos looks for blocks of materials on the same work item that could sit with that crew: a calculator's materials in their own activity, or a block of materials you added by hand. If it finds any, it asks whether to move them in. With several blocks, each has a tick box, all ticked to start.

* Select **Move them in** to move the ticked blocks into the new activity. The lines keep their quantities and prices, and an emptied block is removed. A calculator's lines stay linked to the calculator. For a hand-added block, select **Undo** in the notification to put it back.
* Select **Keep separate** to leave them where they are. Stralos remembers the choice for that block on this item, in this browser.

Adding a material, or adding labour or plant to an existing activity, never shows the prompt.

### Reordering activities

When a work item has more than one top-level activity, drag the grip on an activity's heading above or below another to change the order. You can also select **Move up** or **Move down** in the activity's action menu (**⋯**). Nested activities can't be reordered on their own.

### Adding a time-based labour or plant rate

When you add a labour or plant/vehicle rate that is priced per hour, day, week, or month as a new top-level component, Stralos automatically wraps it in an activity container. A standalone time-based rate has no production rate to anchor its quantity, so the container and nested rate row are created atomically.

This applies when the rate's group is **Labour** or **Plant & Vehicles** and its unit is exactly one of: hour, day, week, or month (and common abbreviations such as hr, wk, mth). Compound units such as `m/day` or `hrs per day` are not treated as time-based and are added as ordinary components.

The **Quantity** you enter is treated as the total duration in the rate's own time unit, for example, 16 for 16 hours or 2 for 2 weeks.

**Hourly rates** are wrapped in a day-based container. Stralos converts the total hours into days using the estimate's **Hours per day** setting (8 by default). The child resource row carries `hoursPerDay` hours per day, so entering one full working day's worth of hours (equal to the estimate's hours per day) produces a one-day container. The production rate is set in work-item units per day. Total cost is unchanged: the same number of hours priced at the same hourly rate gives the same result.

**Rates priced per day** are wrapped in a day-based container (1 day per day). Week and month rates are wrapped in a container whose base unit matches the rate's own time unit.

> [!NOTE]
>
> This section is about **cost** rates priced per day, such as plant hire from the Resource library, added as a **Resource**. They are marked up like any other cost. A line from a day-rate schedule is different: it's a sell rate that already includes overheads and margin, so it's added as a **Day/Card rate** and takes no markup. A Flat day-rate line priced per hour, day, week, or month is wrapped in the same kind of container. See [Adding day rates to a build-up](https://help.stralos.app/guides/estimators/day-rates-in-the-build-up.md).

An hourly rate starts at the estimate's default labour hours, for example **8**, and a day, week, or month rate starts at **1**. Change the quantity on the line after adding it. Stralos derives the container's production rate so that allocation divided by production rate reproduces that duration exactly.

If you save a duration of zero, Stralos creates a structural container holding a zero-quantity rate row. You can edit the allocation and rate on the container later to fill it in.

The resulting build-up looks the same as if you had added an activity and then added the rate beneath it. You can edit the container's allocation, production rate, and labels in the usual way.

### Adding a day-rate line

To price a build-up line at an agreed day rate from a client or company day-rate schedule, set the line type to **Day/Card rate** and pick the line from the project's day-rate set. A day-rate line takes no markup or margin. See [Adding day rates to a build-up](https://help.stralos.app/guides/estimators/day-rates-in-the-build-up.md).

### Searching in the add row

The item's own add row, at the foot of the build-up, adds activities only. Search for a saved activity, or type a new name to add an empty activity with that name. Select **Add activity** beside it to open the [Add activity sheet](#add-activity-sheet). On a smaller screen, where the build-up shows as cards, the item's add row also takes resources and day/card rates, and puts them in a new activity.

An activity's add row has a type selector, which starts on **All types**, and an **Add resource** button that opens the [Add resource sheet](#add-resource-sheet). **All types** searches resources, activities, the project's own rates, and the project's day/card rates in one list. Choose **Resource**, **Project rate**, **Activity**, **Assembly**, or **Day/Card rate** to search only that type. **Project rate** finds the rates that exist only on this project, not in the Resource library.

Each result starts with its type: **Item**, **Project rate**, **Activity**, **Assembly**, or **Day/Card rate**. An item or project rate also shows its rate group letter: **L** Labour, **P** Plant & Vehicles, **M** Materials, **B** Bulk Materials, **D** Disposal, **S** Subcontractors. The second line shows the item's code, suppliers, category, and unit. The calculator's **Choose rate** list and a line's price source list use the same letters.

To swap the rate on an existing line for one of the project's rates, open the line's action menu (**⋯**) and select **Replace with project rate…**. Search the project's rates, choose one, and select **Replace rate**. The line keeps its quantity, charge basis, and place in its activity. If the chosen rate is in a different unit, the sheet says so before you replace it, so you can check the quantity.

### Browse resources sheet

On a smaller screen, where the build-up shows as cards, each add row that takes resources has a **Browse resources** icon beside the name field. Select it to open the **Browse resources** sheet for that row: the activity the row adds to, or the work item itself. On a wider screen, use an activity's **Add resource** button and the [Add resource sheet](#add-resource-sheet) instead.

The sheet lists your Resource library, one resource per line, with the rate group letter, name, unit, starting price, and suppliers. Search resource names, supplier descriptions, and supplier codes, then filter by category, supplier, and unit. **Clear filters** resets them, and a count line shows how many resources match. The sheet lists the first 200 matches; narrow the filters to see the rest.

A resource priced by step lists its steps beneath it, each with its price. Select a step to add the resource with that step already picked. A resource priced by rate table lists its rows beneath it for reference; add the resource, then choose the row on the line in the build-up.

Select **Add** on a resource to add it the same way as picking it in the add row. The sheet stays open and marks each added resource as **Added**, so you can add several. Everything you add from the work item's own row while the sheet is open goes into the same new activity. Select **Done** when you have finished.

If the resource you need doesn't exist, select **Make a new resource** in the sheet's footer. The rate editor opens with your search text filled in. When you save it, Stralos adds it to the row, and the sheet comes back with a notice saying so.

### Add activity sheet

**Add activity** at the foot of the build-up opens the **Add activity** sheet. It has two modes:

* **Select existing**: your saved activities as a searchable list. Selecting one adds it to the build-up straight away. Each row shows the activity's name, code, resource count, and price. If an activity has no production rate, enter one in the row before adding.
* **Create new**: enter an **Activity name**, then pick what goes in it from the **All**, **Activities**, **Assemblies**, **Resources**, and **Day/Card rates** tabs. Picks are held in **Selected** until you select **Add activity**, which adds the new activity with everything in it.

Each tab shows how many items match. The **Resources** tab also filters by category, supplier, and unit, and **Day/Card rates** by schedule and unit.

To add a resource that isn't in your rates, type its name under **Manual resource** (**Not in your rates? Type its name, e.g. Traffic management**) and select **Add manual resource**. Set its unit and cost in **Selected**, or price it later in the build-up.

In **Selected**, each pick shows its type letter (**A** activity, **S** assembly, **C** day/card rate, **R** resource, or a pencil for a manual resource), with its count, quantity, unit, and basis. Resources have a unit cost; an activity's cost is worked out from its resources, and it has a production rate and **Production unit**. A resource's unit can only change to another unit it's priced in. A missing or zero figure is named in **Selected**, for example **Please enter a quantity above zero.**, and must be fixed before adding. If some picks fail, the sheet stays open so you can try again.

If you close the sheet while picks are waiting, it asks, for example **You have 2 picks that aren't added yet. Leave without adding them?** Select **Keep picking** to go back, or **Leave** to close without adding them.

### Add resource sheet

An activity's **Add resource** button opens **Add to \{activity}**, the same sheet without the mode switch. It opens on **Resources** and offers activities, assemblies, resources, and day/card rates. Select **Add to activity** to add the held picks. An assembly's own sheet offers only materials and assemblies, and saves with **Add to assembly**.

### Adding an activity

When you add a library activity, Stralos first asks the server for a no-write expansion plan. A straightforward project-margin activity with no optional items, warnings, unpriced lines, or fixed charges is inserted immediately. Other plans open **Add activity — {name}** so you can review them before confirming.

The added build-up is a snapshot. Later edits to the library activity do not change an existing estimate. Changing the activity heading's quantity rescales the lines beneath it. Stralos prevents you from changing its source or type while those lines remain. Nested activities expand through three levels.

#### When review opens

The review opens when the plan has any of the following:

* A fixed-price activity, whether its package sell is published or not.
* Optional components or sub-activities.
* A warning, such as an unavailable pinned source, unpublished package price, incomplete optional subtree, or the activity depth limit.
* A line without a rate-library link that cannot be priced.
* A rate option with a selectable once-per-engagement fixed charge.
* The activity has calculators attached in the activity library.

Fixed-price activities and packages come from legacy fixed-price activities, which the activity library marks **Fixed price (legacy)**. New fixed prices go in Day/Card rates.

#### What to review

The modal can show:

* **Add attached calculation(s) to Estimate Calculations**: a checkbox shown when the activity has calculators attached in the activity library. Tick it to copy those calculators into the estimate's Calculations alongside the inserted build-up. The checkbox is ticked by default; untick it if you don't want the copies. If the activity is already in the build-up, the checkbox is disabled. If the copy fails after the activity has been inserted, Stralos shows an error and keeps the modal open so you can retry without inserting the activity again.
* **Included**: every priced line that will be inserted, including quantity, unit cost, and any pinned source. An unavailable pin is flagged.
* **Optional items**: ungrouped items use checkboxes. Mutually exclusive items are grouped as **choose one** choices and include **None**. Where optional items come from more than one nested activity, each group names its source activity. Exclusivity is scoped by source activity and group, so identically named groups from different activities do not compete. Changing a choice refreshes the complete plan and package sell.
* **Fixed charges**: supplier charges that become separate build-up lines and are charged once. Each charge shows its flat total amount (for example, \$250.00 charged once per engagement) rather than a rate. For charges whose amount comes from a quantity-1 rate, the derivation is shown beneath the amount (for example, **1 hr · charged once per engagement**). Manual charges are preserved. Review unavailable saved choices carefully; the modal identifies when confirming will remove one. When you tick a fixed charge on a fixed-price activity, the modal discloses how it affects the package: the charge is added to cost inside the fixed package price, so the package sell price does not change but the package margin falls by the charge amount. On a cost build-up activity, a ticked charge becomes a separate cost line with project margins applied.
* **Review before adding**: warnings and lines under **Not priced or inserted**. Those lines will not appear in the build-up, so add them manually when they should be charged.
* **Quantity and pricing summary**: quantity and unit, followed by either **Cost build-up · project margins apply** or, for a fixed-price activity, the fixed package rate, selected add-ons, effective unit price, and **Package price**.

Select **Add to build-up** to confirm, or **Back** to return without writing anything. In some cases Stralos can identify fixed charges only after an unpinned source resolves during insertion. The modal then says the activity is already in the build-up and changes the confirmation action to **Apply fixed charges**; finishing does not insert the activity again.

If the activity changes after the plan loads, the write is rejected safely. Stralos replaces the old plan with the current one and requires you to review it again before adding.

#### Package nesting constraint

A published fixed-price package cannot be nested beneath a production-instance activity. The modal explains the constraint and disables **Add to build-up**. Add the package at the work-item level, or choose an unpublished or project-margin activity.

#### Quick-add and follow-up notices

When an activity entered through the persistent quick-add row needs pre-write review, the row stays populated while the modal is open. **Back** returns to the row with the entry intact. It clears only after the activity is added successfully.

Items without a rate-library link cannot be priced and are not added. After a write with an expansion warning, a persistent notice above the work-items grid names skipped lines and shows both the skipped count and the money excluded from the estimate. Review it before selecting **Dismiss activity notes**.

#### Lines requiring a price choice

When you insert an activity, each unpinned component line is priced using the project's default option at insert time, following the same preference ladder as any other component (project overrides, rate rules, pricing location, then cheapest eligible option). Source pins set in the library activity are not carried through as a hard pin on the inserted line.

If the project has no eligible option for a line, Stralos inserts it without a price and shows **Needs a price choice**. The line contributes no cost until resolved. A project rule, project price override, or eligible project default can resolve the line; the flag clears when the server confirms resolution or you make an explicit selection. Automatic re-resolution alone does not clear an outstanding flag.

The closed rate selector shows no price on an unresolved line. Open the pricing panel to select an option, type a unit cost, or re-link the rate item. **Use an option** may suggest a single matching live option for you to confirm.

Stralos will not let you submit a tender while any live line still needs a price choice. The submit action shows an error naming each line that requires a decision.

### Activity instances

When the selected activity has a time-based unit (day or hour), Stralos expands the component editor to show a **Crew allocation** section. This creates an activity instance: a container that records how much of the work item a specific crew or machine does, and at what rate.

Fields in the **Crew allocation** section:

* **Allocated quantity**: how much of this work item this crew handles. The quantity is measured in the instance's allocation unit, which defaults to the work item's unit. When you add a new activity, the field prefills with the remaining unallocated quantity, the work item quantity minus the sum of existing activity allocations in the same unit. When all quantity is already accounted for, or when the work item has no quantity, it prefills with 1. Required.
* **Allocation unit**: the unit the allocated quantity and production rate are measured in. Creation derives it from the work item; a selected profile fills the rate automatically only when its output unit matches. After creating the instance, set this to a different unit when the crew's output is counted in another measure, for example, 10 each on a 500 m trench item. The allocation unit cannot be cleared once set, but it can be replaced with another unit.
* **Production profile**: an optional profile from the activity library. Selecting a unit-equal profile fills in the production rate automatically.
* **Production rate**: the crew's output per base unit of the activity, measured in the allocation unit (for example, 40 m/day or 2 ea/day). Required when no unit-equal profile is selected.
* **Scope label**: an optional label that groups instances for the allocation check. Instances with the same scope label must together account for the full work item quantity; Stralos warns when they do not.
* **Crew / chain label**: an optional label for the crew doing this instance. Instances with the same label run one after another, so their durations add up. Instances with different labels, or no label, run side by side. The work item's **Activity duration** is its slowest crew.

You can add multiple activity instances to the same work item. Use this when the scope is divided between separate crews or machines (for example, two drainage crews working different stretches of a trench).

#### Instance containers in the build-up

In the expanded build-up, each activity instance appears as a collapsible activity with its heading band and fields row (see [Build-up layout](#build-up-layout)). The band shows the activity's name, an **Activity** badge (or **Package** for a fixed-price package), its production profile when it has one, and its subtotal. An orange **⚠** warning appears when the instance's scope label group does not account for the full work item quantity.

Expand the activity to see the resource lines that belong to it. Each line shows its rate group badge, **Count**, and **Qty**. The charged quantity is worked out from that **Qty** and the line's basis.

Resources inside an activity are ordered by rate group, then by name, then by the date they were added. This is the same order used for direct (top-level) resources. They stay inside their owning activity regardless of how they are ordered.

#### Activity count

**Activity count** is how many times the whole activity repeats, for example eight manholes. Every line in the activity except a **Fixed** one is charged for each repeat, and the activity's duration grows to match, because the repeats run one after another. Leave it at 1 when there's only one. It can be at most 10,000; a larger number shows **Count can be at most 10,000. Please enter a smaller number.**

#### Activity qty and Activity unit

**Activity qty** is how much of the work item this activity handles. **Activity unit** is the unit that quantity and the production rate are measured in. It starts as the work item's unit. Choose another unit when the crew's output is counted differently, for example a "Manholes" activity measured in each (ea) on a 500 m trench item. The duration is always the quantity divided by the production rate, so it stays consistent.

On an older-style activity that hasn't been converted yet, choosing an **Activity unit** asks for the activity's current rate and total so Stralos can convert it. A fixed-price package keeps its unit.

#### Production unit

**Production unit** sets the period a day, week, or month activity runs per: **Per day**, **Per week**, or **Per month**. Hour activities keep their hours.

Switching keeps every figure as it is and only changes the period, so 1 m/day becomes 1 m/week. Check the production rate after switching. A week or month activity's duration shows weeks or months with working days, for example **2 weeks (10 days)**. The project's **Days per week** and **Days per month** settings convert between them.

When you switch to per week or per month, Stralos also moves any **Per day** line whose unit is that period, such as a weekly hire line, to **Per week** or **Per month**. Without this, a weekly hire would be charged every working day.

If a line is measured in weeks or months but charged **Per day**, the build-up warns you, for example **This line is in weeks but charged every day. If it is hired by the week, please choose Per week.**

#### Unit and basis

Each editable line in an activity has a **Unit / Basis** picker. Closed, it reads the unit and basis together, for example **hr / day**, **m³ / activity**, or **ea / fixed**. Open it to choose the unit (only units the resource is priced in) and the basis. A managed fixed charge, with the **Fixed charge** badge, shows its unit and basis as read-only.

The basis decides how the line's **Qty** is charged:

* **Per day**: for each working day of the activity. Inside an hour activity this option reads **Per hour** and charges for each hour. Inside a week or month activity it still charges per working day. Lines inside an activity are never multiplied by the work-item quantity.
* **Per week** or **Per month**: for each week or month the activity runs. Weeks and months are the activity's working days divided by the project's **Days per week** or **Days per month**. Use these for things hired by the week or month, such as a site office or temporary fencing.
* **Per activity count**: once for each repeat of the activity (its **Activity count**), however long it runs. Use this for items that come with each repeat, such as one frame and lid per manhole.
* **Fixed**: once, whatever the **Activity count**. Use this for one-offs, such as mobilisation or a permit.
* **Per activity qty**: for each unit of the **Activity qty**, times the **Activity count**. Use this for materials that scale with the work, such as a fitting kit per valve or marker tape per metre of trench.

Every basis except **Fixed** is charged for each repeat of the activity. Every basis, **Fixed** included, is multiplied by the line's own **Count**. For **Per activity count**, **Fixed**, and **Per activity qty**, the daily cost is **—** and the full cost is in **Total cost**.

A non-time resource added inside an activity starts on **Per activity count**. A line added inside a week or month activity that is charged once per period starts on **Per week** or **Per month**. Hourly and day-based lines start on **Per day**.

> [!NOTE]
>
> When you switch an hourly line from **Per day** to **Per activity count** or **Fixed**, its **Qty** is still hours per day, the same number entered at the start. Those bases don't multiply by duration, so retype the quantity as the total hours for each repeat, or for the whole activity. **Charged qty** updates to show the basis-aware figure.

#### Instance duration summary

A work item's duration is computed from its activity instances. It appears:

* On the collapsed work item row, in the **Duration** column.
* In a summary strip inside the expanded build-up.

The summary shows the item's **Activity duration**, its slowest crew, and lists each crew with its duration. When more than one crew runs side by side, it also shows **All activities added together**.

If a scope label group does not sum to the item quantity, an orange warning appears in the summary strip identifying the label, how much was allocated, and the item quantity.

#### Nesting activities

You can add an activity beneath an existing activity container on the same work item. A nested activity is itself a full instance: it has its own allocation, production rate, and optional labels, and its resource rows are priced in the same way as any other instance.

Use the persistent **Add to {activity}…** row beneath the parent container. Choose an
activity from the library or create a manual activity, then complete its allocation and
production-rate fields. The new container appears indented beneath its parent.

Nested activities use the same fields as top-level instances. Scope and chain labels
are evaluated across the whole work item, regardless of nesting: matching scope labels
share an allocation group, and matching chain labels share a duration chain. Use the
nested container's own **Add to {activity}…** row to add another activity or a resource
beneath it.

To remove a nested activity, delete its container. Its resource rows and any further nesting beneath it are removed at the same time.

#### Assemblies

An assembly is a set of materials that's used together as a unit, such as a manhole riser set or a fitting kit. Assemblies are kept in the library under **Rates & resources → Activities & Assemblies**. An assembly holds only materials, bulk materials, and disposal lines, and it adds cost, not time.

To add one, use the add row inside an activity and choose **Assembly** as the type (or search under **All types**), or use the **Assemblies** tab of the activity's [Add resource sheet](#add-resource-sheet). Then set how many. An assembly can only go inside an activity, never at the top level of a work item, and an activity can't go inside an assembly. An assembly can hold further assemblies.

In the build-up, an assembly shows like a nested activity, with an **Assembly** tag, its name, an editable quantity, and its cost. It has no **Count**, production rate, or duration. Its lines are stored per one assembly and have no charge basis to choose. Each line is charged for the assembly's quantity, any outer assemblies' quantities, and the activity's **Count**. Changing an assembly's quantity doesn't change the per-assembly quantities of its lines.

An activity that has only materials under it is still an ordinary activity. Stralos shows **This activity only has materials. Please check it has the labour or plant it needs.** under its heading as a reminder.

#### Editing an activity instance

To change a container's allocation, rate, profile, or labels, select **Edit** from its action menu (**⋯**). The **Edit activity instance** panel opens on the right and lets you update:

* **Allocated quantity**
* **Allocation unit**
* **Production profile**
* **Production rate**
* **Scope label**
* **Crew / chain label**

Stralos validates the inputs and shows an inline error if the production rate is missing or the allocated quantity is not greater than zero. Server-side errors (such as an allocation or rate that the server cannot accept) appear in the panel so you can correct and retry without losing your inputs.

You cannot change the source activity after creating an instance. Delete and
re-insert the instance to use a different activity. A day, week, or month
activity can switch period with its **Production unit** (see
[Production unit](#production-unit)); an hour activity's period can't be changed. A work item's
unit is locked while it has an instance that is measured in that same unit.
Changing an instance's allocation unit to something other than the work item's
unit removes that lock, so the work item's unit can then be changed freely.
To remove an instance, delete its activity container; its child rows are removed
at the same time.

### Saving an activity to the library

Company admins and members can copy an activity subtree into the activity library. Open the activity container's action menu (**⋯**) and select **Save to activity library…**. A **Save activity to library** panel opens at the edge of the screen. The build-up the activity is being copied from stays visible beside the panel so you can refer to it while filling in the form. Enter the **Activity name** and select **Save to library**. The saved activity uses the activity container's own unit as its basis, which is preserved from the container regardless of the work item's unit.

The saved activity is a snapshot and the estimate is not changed. Stralos copies ordinary build-up lines at their base unit costs, and includes the contents of nested activities. Multiplier, working-day, calculator, and pricing-override settings do not affect pricing in the activity library.

If any build-up lines under the activity are priced by hand, with no rate library link, the panel lists them and the **Save to library** button is disabled. A saved activity prices from the rate library, so a manual line would be dropped silently every time the activity is re-used in another estimate. You must add each listed line to the rate library before saving.

To add a manual line to the rate library from the Save to library panel, select **Add rate** beside the line name. A build-up line that is priced by hand also shows an **Add rate** control in its pricing field. Both open the Resource library's own editor in a side sheet, titled **Add a rate from this line**. The Save to library panel steps aside while the editor is open, so only one sheet is open at a time.

1. Check the rate name, which starts as the line's name, and choose a category.
2. On an estimate that belongs to a project, choose **Where should this rate go?**: **Rates library** or **This project only**. A project-only rate has no advanced pricing or validity dates.
3. Select **Next**, then complete the price. Choose your company or a supplier and a location, or **All locations**. The unit and cost start from the line; the unit is kept only when the category allows it.
4. Save the price. Nothing is written until you do, so **Cancel** leaves no half-finished rate behind.

Stralos links the line to the new rate at the rate's own unit and cost, and the work item refreshes without a page reload. If the new price has no single cost, the line keeps its own cost. For the Save to library panel, repeat for each listed line, then save the activity to the library.

If your company has no pricing locations yet, ask an admin to add a location in **Global settings**. You can also choose your company's **All locations** target when the price is not site-specific.

Stralos warns about exclusions, inputs that become inert, or an empty activity. It also performs a best-effort duplicate check and may warn when it finds another activity with the same name and unit; that warning does not block the save. Retrying an unchanged save returns the activity already created instead of making a duplicate.

After a successful save, the panel stays open as a receipt and its title changes to **Saved to activity library**. A green confirmation message shows the activity name, unit, and number of lines saved. Any warnings about what the library could and could not carry appear inline in a neutral box so you can review them without losing focus. The footer changes to a single **Done** button. Select **Done** to close the panel. The estimate is not changed.

### Calculators

When a build-up line comes from a project-level calculator, the work item row, mobile card, and detail-pane build-up all show the calculator's name as a link. Select the link to open the **Calculations** tab in the detail pane on the **Layer destinations** view for that work item.

### Adding a project calculator

Select **Calculations** in the work item build-up header, then choose **New calculation…** and pick a calculator type (**Trench**, **Pit / Structures**, or **Volume**).

If the work item already has activities with labour, plant, or other time-based lines, Stralos first asks **Where should this calculation's materials go?** Choose one of those activities, or **In their own block** to keep the materials separate. When there's only one such activity, it's chosen to start with. If the item has none, the workbench opens straight away.

Stralos opens the calculator workbench: a full-page editor with its own address. The workbench opens on a local draft with the work item set as the default destination. Nothing is saved to the server until you press **Save**.

On a submitted estimate the workbench is read-only: every field shows its saved value as text, and **Save**, **Remove calculator**, and **Add a measurement** are disabled and say why. See [Frozen tender](https://help.stralos.app/guides/estimators/estimate-workspace.md#frozen-tender).

When you press **Save**, Stralos creates the calculator, records the default destination, runs the engine over your geometry, and adds the generated rows to the build-up. Calculators created this way also appear on the **Calculators** tab, where you can manage all project calculators in one place.

If you leave the workbench without pressing **Save**, Stralos asks **Discard changes?** before navigating away. Confirming discards the draft; no calculator is created and no data is left behind. The same guard appears if you reload the page with unsaved changes.

A work item can receive layers from any number of project calculators.

#### Calculator lines sit in an activity

When you send a calculator's lines to a work item itself rather than to an activity in it, Stralos adds a manual activity named after the calculator to that item and places the lines inside it. This applies to a new default destination and to a new layer destination. Lines it sends to the same work item in one save share that activity.

The lines are charged once for the whole activity, so their cost is the same as if they sat directly on the item. The activity starts as one day of production. You can change its duration and labels like any other activity. Calculator lines that already sat directly on a work item stay where they are.

### Linking calculator inputs to takeoff

Calculator inputs, such as the **Length** on a trench calculation or the **Area** on a volume calculation in **Area × D** mode, can be linked to a takeoff measurement total. When a link is active, the field reads the total from the linked measurement and updates when that measurement changes.

You can link inputs on both new (unsaved) and saved calculations:

* **New calculation**: select **Link length to takeoff** (or **Link area to takeoff** for a volume in **Area × D** mode) on the workbench while the calculation has not yet been saved. The link is held locally and the field shows the measurement total straight away. The link is not sent to the server until you press **Save**, which creates the calculation and records the link in the same operation. Leaving without saving discards the link along with the rest of the draft.
* **Saved calculation**: the same link option is available on the workbench for an existing calculation. Selecting a measurement saves the link immediately and re-runs the engine.

**Volume calculator in Area × D mode**: if you switch a volume calculator from **L × W × D** to **Area × D** before saving, the area input becomes linkable. Stralos holds the link in the draft and saves the calculation in **Area × D** mode with the link applied when you press **Save**.

### Calculations tab

The **Calculations** tab appears in the work item detail pane when you open a work item. It has two views: **Measurements** and **Layer destinations**. Open it by selecting **Calculations** beside **Rates & activities** in the detail pane, or by selecting **Calculations** from the work item's **⋯** action menu.

On a submitted estimate you can switch between both views and read them, but **Add a measurement** and **Remove** are disabled and layer destinations cannot be changed.

#### Measurements view

The **Measurements** view is the default. It lets you price a reading from a stored calculation by linking it to a rate item. Examples of measurements a calculator can produce: the total trench length, the saw-cut length, the top-face area for asphalt, or the pipe run length.

Each existing measurement assignment is listed by calculator name. A measurement that is already priced shows which build-up line it feeds. A measurement can feed exactly one destination.

To add a measurement:

1. Open the **Calculations** tab from the work item detail pane.
2. Select **Add a measurement…** to open the measurements sheet.
3. In the sheet, expand a calculator by clicking anywhere on its header row. Select one reading from the list. Selecting another reading replaces the first: only one reading can be selected at a time.
4. Optionally choose a rate item from the picker beside the selected reading.
5. Select **Add measurement** to save. The sheet saves the link and, if a rate was chosen, writes the rate onto the generated build-up row before closing.

When you choose a rate item beside a reading, Stralos checks whether the rate's unit matches the measurement's dimension. A mismatch (for example, a sheet rate on a length reading, or a cubic-metre rate on an area reading) shows a warning below the rate picker. Whole-unit stock rates (priced per **len**, **roll**, or **sheet**) matched to their corresponding measurement dimension do not produce a warning: a pipe priced per **len** against a metre reading, or a geotextile roll priced per **Roll Area** against an m² reading, are both correct pairings and price without issue.

Stralos adds one measurement per save. If you select **Add measurement** again before the previous save has returned, the second action is ignored. Select the next measurement after the sheet closes.

If the reading states no quantity when you add it, Stralos adds the link but cannot place the rate on a build-up row. The sheet explains what happened. The link is real: you can choose the rate directly on the build-up row once the calculation produces a value.

If a measurement's reading drops to zero, for example, after removing all pipe runs, Stralos removes the corresponding build-up line and its rate link automatically. To restore it, open the **Calculations** tab again and add the measurement after the reading has a positive value.

A build-up row whose quantity is set by a calculation shows the text **Set by \<calculation name> — edit the calculation** instead of an editable quantity field. The rate on that row remains editable. Saving the calculation later updates the quantity; the rate link is preserved.

#### Layer destinations view

The **Layer destinations** view shows the assignment editor for every calculator in the estimate, including calculators with no layers currently feeding the work item. Calculators are listed as collapsible accordions. Click anywhere on a calculator's header row to expand or collapse it. Expand a calculator to see its layers grouped under **Excavation** and **Reinstatement** headings.

Each calculator accordion header shows the calculator name, its type, and a count of how many destinations it currently feeds. An **Open calculator** button sits on the same line as the destination count. Select it to open that calculator's full-page workbench without leaving the work item.

Each layer row shows:

* **Name**: the label you gave the layer in the calculator workbench.
* **Substance**: the excavated material from the saved configuration, if applicable.
* **Material**: the fill, backfill, or disposal material for that layer, if applicable.
* **m²**, **m³**, **t**: the layer's area, in-situ volume, and tonnage as the calculator last computed them. A dash means the calculator did not produce a value for that measure. When some of an excavated layer is reused as fill, its **m³** and **t** drop by the reused amount but its **m²** still shows the layer's full plan area.
* **Destination**: a picker to control where the layer's quantities land.

Use the view to control where each calculator layer's quantities land:

* For each layer, choose the destination work item and, where the layer allows it, the activity component within that item.
* Excavation layers can be split across multiple destinations as a percentage of the in-situ volume. Reinstatement, backfill, and pipe-run layers go to one destination only.
* The allocation total under a split layer is advisory while you type. Stralos confirms or refuses at save time and shows the server's own message if a split is rejected.
* Re-pointing a layer moves its rows to the new destination. The rate and pricing on those rows are not changed.

When you press **Save destinations**, Stralos saves every calculator with unsaved edits in a single pass. If the server returns a refusal for one calculator, Stralos keeps that calculator's edits on screen and still saves the others. Warnings, for example, that a layer has been only partially allocated, remain visible for review. Saving does not close the work item detail pane.

### Layer assignment from within the calculator

Every layer row in the calculator workbench shows a **Used by** column. Use it to assign or reassign that layer to a work item without leaving the calculator.

Each layer is in one of three states:

* **Unassigned**: the layer is not feeding any work item. A placeholder indicates this state, and a picker lets you select a destination.
* **Fed**: the layer feeds one work item. The destination appears in a picker and can be changed.
* **Split**: the layer is partitioned across several work items. The cell shows the destinations and percentages (for example, **A-1 60% · A-2 40%**) and offers a **Split…** button that opens the existing partition editor.

Saving a layer assignment does not leave the calculator workbench and does not touch the geometry you have open. It is a separate register write that updates immediately in the cell.

For pit and volume calculators, the bulk excavation total has no layer row and cannot be assigned. Price the dig from the excavation layers, or from the **Excavation volume** measurement.

See [Activities](https://help.stralos.app/guides/reference/activities.md#trench-calculator) for trench calculator fields and generated-row behaviour.

### Linked quantities column

The **Calculators** tab shows a **Linked quantities** column when the server reports how many work-item quantities each calculator drives. The value is shown as **ƒ n uses** in teal when the count is one or more, and as **—** when the calculator feeds no linked quantities.

### Renaming a calculator

To rename a calculator, open the **Calculators** tab in the estimate workspace. Each row shows a pencil icon beside the calculator name. Click the pencil to edit the name in place. Press **Enter** or click away to save. Press **Escape** to cancel and revert to the previous name.

The name itself opens the calculator workbench: clicking it does not start a rename. Stralos refuses a blank name and keeps the input open so you can correct it or press **Escape** to cancel.

### Copying a calculator

Select **Copy** from a calculator's row actions on the **Calculators** tab. Stralos opens the copy in the calculator workbench straight away. While it feeds nothing, the workbench says **This copy isn't linked to anything yet. Please assign it to an item.** The copy takes the next calculator name and the same geometry, with these differences:

* It has no default destination and feeds no work items, so it adds no lines to the build-up until you assign it.
* It keeps its inputs' takeoff links, so a linked length or area still follows its measurement.
* When you later give it a default destination, every layer follows that destination, as on a new calculator.

**Copy** is disabled on a submitted estimate.

### Deleting a calculator

You can delete a calculator from the **Calculators** tab, from the row's **Delete** action, or from the calculator workbench, with **Remove calculator**. On a calculation you have not saved yet, **Remove calculator** only clears the workbench.

If the calculator feeds any build-up rows, Stralos asks what should happen to them, and lists each work item and activity it feeds so you can decide:

* **Delete the rows too** deletes the calculator and the rows it generated.
* **Delete, keep the rows** deletes the calculator but keeps its rows as ordinary lines with their current quantities. Stralos no longer updates them.

When a calculator sends its lines to a work item rather than to one of its activities, Stralos puts them in an activity named after the calculator. **Delete the rows too** also removes that activity once it is empty, provided you haven't renamed it or edited its values. **Delete, keep the rows** leaves the activity in place, because the kept rows still sit inside it.

This is the only question. Once you answer, or straight away for a calculator that feeds nothing, the calculator leaves the list and an **Undo** notification appears. Select **Undo** to bring it back. The delete is sent when the notification closes or you leave the estimate. Deleting from the workbench closes the workbench, and the **Undo** notification stays on the estimate page.

If any work item uses a reading from this calculator as a **calculated quantity** source, the server refuses the delete when it is sent, and Stralos shows a confirmation listing those work items. Selecting **Delete and unlink** removes the calculator at once and unlinks each affected item, which keeps its current quantity as a manual value. Selecting **Cancel** leaves the calculator unchanged.

### Linking a build-up line's quantity

A whole-item, hand-entered build-up line, one not inside an activity and not generated by a calculator, can have its quantity driven by a takeoff measurement total or a calculator reading. This keeps the line's quantity in step with measurements or calculations as they change, without manual re-entry.

To link a build-up line's quantity:

1. Open the work item detail pane and locate the build-up line.
2. Open the line's **⋯** action menu and select **Link quantity…**
3. In the sheet that opens, pick a source: expand a calculator and select one of its readings, or select a takeoff measurement total. Rate items are not offered as sources for build-up lines.
4. Optionally set a **Multiplier** or **Allowance** to scale or add to the value before it is applied.
5. Optionally choose a **Rounding** step. See [Rounding](#rounding).
6. Select **Save** to apply the link.

The linked quantity displays as **ƒ \[value]** and is read-only while the link is active. To change the source, open the **⋯** menu and select **Edit link…**. To remove the link and restore a hand-entered quantity, select **Unlink quantity**: the line keeps its current quantity value.

When a takeoff measurement is deleted or a calculator is deleted, any build-up lines linked to it for their quantity are automatically unlinked. Stralos announces the affected items after the delete completes.

### Unlinking a calculator row

A build-up row generated by a calculator shows its quantity as read-only: the calculator controls it. To make the quantity editable and disconnect the row from the calculator, open the row's **⋯** action menu and select **Unlink calculator**. After unlinking, the quantity field becomes editable and Stralos no longer updates that row when the calculator is saved.

A later calculator save can reconnect the row after confirmation. Choose **Override existing value(s)** to replace its manual quantity and restore the link, or **Add new row(s)** to preserve the manual row and create a linked row alongside it.

### Saving when rows have been unlinked

When a calculator write would reconnect rows that were previously unlinked (and may have been edited manually), Stralos shows a confirmation dialog listing each affected row with its current quantity. This dialog appears when you save the calculator's geometry, and also when you link, change, or unlink a calculator's input field.

If the save would remove a calculator layer that one or more work items use as a **calculated quantity** source, Stralos shows a confirmation first. It lists the affected work items grouped by removed layer and warns that their quantities will be unlinked and will keep their current values as manual quantities. Selecting **Save and unlink** completes the save and unlinks each affected item. Selecting **Cancel** leaves the calculator and those work items unchanged.

You have two choices:

* **Override existing value(s)**: replaces the current quantity on each listed row with the fresh calculation result and re-links the row to the calculator.
* **Add new row(s)**: keeps the existing manually-edited row as-is and adds a new linked row alongside it.

Selecting **Cancel** closes the dialog without saving. The calculator write is not applied, and the input link remains as it was.

If a row's quantity changes between when the dialog opens and when you confirm, Stralos asks again with the updated value before completing the save.

### Choosing a rate on a calculator-generated line

When a calculator generates a build-up line that has no rate item linked yet, a **Choose rate** button appears beside the line name in the work item detail pane. Select it to open the rate search and link a rate item to that line. The button is only shown on calculator-generated lines that have no existing rate link; lines that already have a rate do not show it.

### Trench calculator measurements

For trench calculators, the available measurements include the circumference of the excavation top perimeter, the saw-cut length (2 × length), and the footprint perimeter (2 × (length + top width)), in addition to the overall length, area, pipe run length, and per-layer readings. A measurement the calculator cannot compute is listed as disabled with the engine's explanation.

To price pipe in whole lengths, link **Pipe run length** to a pipe rate priced per **len**, and the rate option's metres per length decides how many whole lengths are ordered. See [Whole stock units](https://help.stralos.app/guides/estimators/pricing-review.md#whole-stock-units).

### Pit and volume calculator measurements

Pit calculators, and volume calculators in **L × W × D** mode, offer the plan perimeter (2 × (length + width)) and the circumference of the excavation top perimeter, which allows for batter and overdig, as well as plan area, depth, excavation volume and per-layer readings. A volume calculator in **Area × D** mode lists the perimeter and circumference as disabled, because an area alone has no outline to measure.

### Searching for a rate in the component editor

When adding or editing a component that references a rate item, search by the rate name, category, or the unit shown. The picker does not search supplier option codes; use **Rates & resources → Resource library** when you need to find a supplier code. The first 50 matching rates are shown; searching narrows this further. Select a rate to pre-fill its pricing into the component.

If no library rate matches, the picker shows **No rates found**. Admins also see an **Add them in the Resource library** link; members are asked to get their admin to add the rates they need. This applies wherever the picker offers library rates, such as a build-up line or a calculator rate. Entering a manual rate is unaffected.

### Price source on a line

A line's supplier and site sit on a grey line under the resource name, and that line is the supplier picker. It shows who prices the line and the site, followed by the rate type when it isn't Standard. The price, kilometres, and tags are in the open list and on hover. A submitted estimate shows the same words.

The supplier Stralos chose for you carries an **Auto** chip in the list. If you picked a different one, select **Go back to auto** in the list to let Stralos choose again.

Select the details button beside the supplier line to see the supplier description, supplier code, source, condition, density or supplied length, and valid-until date. A line priced from a job quote names the quote and its end date. The quote turns amber once it has run out, but the price doesn't change.

## Delivery links

A material component can be linked to the activity on the same work item that consumes it. This is recorded as a **delivery link** and is metadata only: it does not move cost or affect pricing.

The **Delivered for** column in the build-up shows the linked activity name when a delivery link is set. Project admins can set or clear delivery links; project members see the current value but cannot change it.

To set or change a delivery link:

1. In the work item build-up, locate a line-entered material row (bulk materials or other materials). The row must not be a calculator-generated line.
2. Open the row's action menu (**⋯**) and select **Delivered for**.
3. A submenu lists the activity containers on this work item. Select the activity the material is consumed by, or select **Not delivered for any activity** to clear the link. The choice applies immediately.

If the work item has no activities, the submenu shows a message; add an activity first.

If the server refuses a change (for example, the target is invalid, the link would create a self-reference, or it would strand the existing link), Stralos shows the reason as a notification. The row's current value remains unchanged.

When a work item or build-up is copied, links are rebound to the corresponding copied activity.
A material row copied without its linked activity has the link cleared.

> [!NOTE]
>
> The **Delivered for** affordance appears only on line-entered material rows. Calculator-generated rows, activity containers, and labour or plant rows do not show it.

## Provenance

When a work item is accepted from an AI suggestion, Stralos records its source document, page, excerpt, and suggestion ID. A work item created from a takeoff measurement inherits the measurement's source document and page. This provenance is set by the server and cannot be altered by the reviewer.

## Takeoff links

When a work item has linked takeoff measurements, a **takeoff** chip appears on its row. Selecting the chip opens the Takeoff panel, filtered to that item's measurements, and navigates to the document page where the first linked measurement sits.

## Linking a work item quantity

A work item's quantity can be linked to one or more sources so that it stays in step with your calculations and measurements. When a link is active, Stralos keeps the quantity up to date each time a referenced source changes.

### Sources

The **Calculate quantity** sheet lets you combine up to 20 sources. Three kinds of source are available, filtered to the item's unit:

* **Calculator readings**: one output of a project calculator, such as the total trench length, in-situ volume, or plan area. Readings are grouped under their calculator's name. The most-used readings for a dimension (length, area, volume) appear first; select **More readings** to see the rest.
* **Takeoff measurements**: the total quantity of a takeoff measurement, or a tag subtotal on a multi-segment or tagged multi-line measurement.
* **Rate items in this build-up**: the sum of whole-item rows for a rate item already on the work item's build-up. Select **Show rows** to see which rows are counted and which are excluded. Each row shows where its quantity comes from.

Use the **Filter sources** field to narrow the list by name.

Work items priced in a unit that nothing in the estimate can measure, for example, Lot or lump sum, have no sources to offer, so the **Adjust** section is hidden. If a link with an adjustment already exists, the adjustment stays visible so you can remove it.

### Adjust

The **Adjust** section lets you apply an optional **Multiplier** (for example, 1.05 for 5% waste) and an **Allowance** in the item's unit. The allowance is added after the multiplier. A positive allowance adds to the total, for example 2 m² for a lap. A negative one takes an amount off, for example -0.5 m. The total can't go below zero: if it would, the sheet says **The allowance takes this below zero. Please take less off so the quantity is zero or more.** and **Save link** stays disabled.

Both fields take digits and a single decimal point. The allowance also takes one leading minus sign. Letters, spaces, and commas are removed as you type or paste, so `12.5 m` becomes `12.5`. A second decimal point is refused, and the field keeps its previous value.

When the multiplier or allowance contains an invalid entry, the result card shows **Fix the multiplier** or **Fix the allowance** rather than a figure, and **Save link** is disabled.

The **Adjust** section is hidden when the item's unit has no supported quantity-link dimension (such as Lot or Hour) and the link carries no existing adjustment.

### Rounding

**Rounding** in the **Adjust** section rounds the linked quantity to a step, after the multiplier and allowance. The steps are:

* **No rounding**.
* **Up to nearest 0.001**, **0.01**, **0.1**, and **0.5**.
* **Up to next ending in .9**.
* **Up to nearest 1** and **5**.
* **Up to next ending in 9**.
* **Up to nearest 10**, **50**, **100**, **1,000**, and **10,000**.
* **Down to 0.00 (2 decimals)**, **Down to 0.0 (1 decimal)**, and **Down to 0 (whole number)**.

An up step always rounds up, and a quantity already on a step stays as it is. For example, 123.56 becomes 130 with **Up to nearest 10**, 123.9 with **Up to next ending in .9**, and 129 with **Up to next ending in 9**. A down step cuts the figure to that many decimals: 123.56 becomes 123.5 with **Down to 0.0 (1 decimal)** and 123 with **Down to 0 (whole number)**.

For a new link, Stralos suggests the step that rounds the quantity to three significant figures. For example, 123.56 suggests **Up to nearest 1**, which gives 124. The suggestion follows the sources you tick until you choose a step yourself. An existing link opens on the step it was saved with, or **No rounding** if it has none. Opening the sheet never changes a saved link.

When rounding moves the quantity, the result card shows both figures, for example **123.56 → 124.00 m**. The rounded figure is the quantity Stralos saves. Hover over a linked figure to see whether it was rounded up or down, and from what.

A build-up line priced in whole stock lengths, rolls, or sheets has no **Rounding**, because it is already ordered in whole units.

The rounding is saved with the link.

### Result card

The result card in the sheet footer shows the current linked quantity to 2 decimal places. When no sources are ticked, it shows **Pick a source**.

### Saving and unlinking

Select **Save link** to write the linked quantity to the work item. Select **Unlink** to remove the link and keep the current quantity as a typed value. After unlinking, Stralos announces the kept quantity with its unit and returns focus to where you were.

### Stale links

When a source changes and the linked quantity can no longer be resolved (for example, a takeoff measurement was deleted, a rate item no longer has rows in the right unit, or a calculator reading stopped stating a value), the link becomes stale. The amber indicator on the work item names each problem source specifically rather than showing a generic message:

* A deleted takeoff measurement shows **A takeoff measurement this uses was deleted**.
* A removed calculator reading shows the reading name followed by **no longer has that reading**.
* A rate item with no remaining rows shows **No \<name> rows in \<unit> remain**.

When the server provides its own description of the problem, that description is shown directly.

Open the **Calculate quantity** sheet from the indicator and select the problem source to correct or replace it, then save.

### Calculator-fed build-up rows

A build-up row whose quantity comes from a project calculator has its unit locked. The unit shows as read-only with a tooltip explaining which calculator owns it. To change the unit, edit the calculation itself.

## Departures and clarifications links

Work items can be linked to departures and clarifications (D\&Cs). The number of linked D\&Cs is shown as a badge on each work item row. Select **Departures and clarifications…** from a row or mobile-card action menu, or **Departures and clarifications…** from the open detail pane.

The side sheet also lets you create a new D\&C and link it immediately: pick a group (or leave it empty for **General**), enter the text, and select **Add D\&C** or press Enter. The new D\&C appears in its group, already ticked, while the sheet stays open. The final **Save D\&C links** action applies only the remaining checkbox changes.

If you tick or untick a D\&C and then try to close the sheet without saving, Stralos asks you to confirm before discarding your changes.

From the **Departures and clarifications** panel, each clause shows how many work items are linked to it. Selecting that count opens the Estimate schedule filtered to those items, with a banner naming the clause and how many of the total items are visible. Select **Clear filter** on the banner to restore the full schedule. See [D\&C schedule filter](https://help.stralos.app/guides/estimators/tags.md#d\&c-schedule-filter) for details.

See [Departures and clarifications](https://help.stralos.app/guides/estimators/tags.md) for how to manage D\&Cs and their included/excluded state.

## Item notes

The Notes row appears in the work-item detail pane whenever the item is editable, even when no note has been entered. Click the row to start editing. Press **Save** to commit or **Escape** to discard. Press Enter to insert a newline: it does not commit the note. Saving an empty note clears any existing note.

You can also trigger editing from the **⋯** menu in the detail pane: select **Item notes…** to open the editor. This reopens the editor even after you have already closed it once in the same session.

Notes are limited to 4,000 characters.

## From suggestions to records

Work item suggestions can create scope items or testing requirements. Review the description, quantity, unit, clause reference, and frequency before accepting.

When accepting a suggestion you can override the name, unit, quantity, section, clause reference, frequency, and item number. Setting the clause reference or frequency to an empty string explicitly clears the extracted value. Testing requirements receive a Frequency note when a non-empty frequency is present.

The **Item number** field shows the contractual reference the AI extracted from the source document. Clear it to let Stralos assign the number automatically; leave it set to store the extracted reference verbatim and freeze it from renumbering.

Accepting the same suggestion twice returns the existing work item: the operation is safe to retry.

## Selecting work items

In the editable desktop grid, each work item row has a checkbox on the left. The row action menu (**⋯**) appears as a fixed column at the far right of the grid. Tick one or more checkboxes to start a selection. The header checkbox selects or deselects all visible rows: when a filter is active it reflects only the rows currently shown, not any hidden selections.

A selection count badge and a floating action bar appear at the bottom of the panel while any items are selected.

## Bulk actions

When one or more work items are selected, the bulk action bar offers:

* **Duplicate**: creates a copy of each selected item in its current section.
* **Move to section**: opens a section picker. Choose a section to move all selected items there, or choose **Unsectioned** to remove them from any section. To move them into a new section, select **+ New section…**, or type a name and select **+ Create new section "…"**. Stralos creates the section and moves the items in one step.
* **Delete**: removes all selected items from the schedule straight away, without a confirmation, and shows an **Undo** notification with the count. Select **Undo** to bring them back. Otherwise they are removed from the estimate when the notification closes or you leave the page, and kept for history.
* **Clear**: deselects everything without making any changes.

All bulk actions are sent as a single server request, so estimate totals are recomputed once regardless of how many items are affected. The action bar is disabled while a request is in flight to prevent duplicate submissions.

If a baseline is active, a note in the bar confirms that frozen baseline valuations are not affected by bulk edits.

## Adding a work item

Each section has a persistent **Add work item…** row at its bottom. Type a name and press **Enter** to create the item at the end of that section. The row previews the item number it would receive. Use the row-type selector to choose **Item** for a schedule line or **Sub-section** for a subsection.

In the desktop pricing view, the quick-add row's name, quantity, and unit fields align to the same grid columns as the committed rows above them. The unit select is always visible: you do not need to click into the row first to see or change it.

To insert a new item at a specific position, open the row action menu (**⋯**) on the work item you want to insert after and select **Insert row below**. This opens an inline editor directly below that row and previews the number the new item will receive.

You can add to the quick-add row at the end of a section at any time: it creates the item at the section end regardless of which row is selected as the insertion point.

## Reordering rows

To move a work item within its section, drag the grip at the start of its row. The row lifts out of the list and its slot fades, and the rows slide apart to open a gap where it will land. Release to drop it there. You can also use **Move up** and **Move down** in the row action menu (**⋯**). Drag one row at a time. To move several rows to another section, select them and use **Move to section** in the [bulk actions](#bulk-actions). Locked SOQ rows cannot be reordered; see [Locking and unlocking the SOQ](#locking-and-unlocking-the-soq).

## Schedule row names and icons

Each schedule row shows the work item's name on one line, so every row has the same height. When a name is cut off, a drop arrow appears beside it; select it to read the whole name in a pop-out.

Small icons beside **Build up** mark a linked D\&C, a calculator, a takeoff link, a zero cost, the build-up line count, and an **allocated X of Y** allocation warning. Hover over an icon to read what it means.

## View a work item in detail

To open a work item's detail pane, click **Build up** on the item's row. **Build up** appears as a fixed column immediately to the left of the Quantity column. Provisional sum rows do not show **Build up**; open the detail pane from the row action menu (**⋯**) instead. On a wide screen, a section rail remains visible beside the pane. On a smaller screen, the same pane uses the full width.

Clicking the row itself (outside the **Build up** button) sets the insertion anchor for the next new item. It does not open the detail pane.

The pane shows the item's number and name at the top. Beneath it are **Status**, **Item qty**, **Item unit**, **Duration**, cost per unit, and **Total cost**:

* **Duration** is the elapsed duration for this work item: its slowest crew. Hover over it to see the sum of all its activities too.
* **Total cost** reconciles with the build-up's own **Total cost** column. For a provisional sum, the cost per unit is the editable allowance input and **Total cost** is read-only.

When an SOQ estimate is locked, an untouched imported **Quantity** that still equals its source amount is read-only and shown with the source tint that the sheet legend describes. Quantities created manually or from measurement, and imported quantities that have already diverged from the source, remain editable.

To change the default labour hours, select **Estimate settings** in the estimate header and edit **Default labour hours per day**.

For any item linked to a source document, the **⋯** menu includes **View SOQ source** as the last item before **Delete**. This is the current label for SOQ imports and for measurement or takeoff items that also carry a source-document link. When the source page is known, the label includes it as `(p.N)`. Select the action to open the source document.

Below the strip, the pane shows quantity, duration, notes, clause reference, and the grouped build-up. You can edit components and change status there. Buttons beside **Rates & activities** open similar-item search, import from a past work item, and the **Calculations** tab. Add an activity from the add row at the foot of the build-up, and add resources from an activity's own add row. See [Searching in the add row](#searching-in-the-add-row). The top **⋯** menu contains **Departures and clarifications…**, **Item Notes…**, **View SOQ source** when applicable, and **Delete**. Return to the grid row menu to duplicate the work item, and add a subsection from its parent section's menu.

On a wide screen, use the section rail to move directly between items. It shows item counts and totals for each section. Click **All work items** to close the pane.

The selected item's ID is stored in the `wi` query parameter. You can share that URL to open the same item directly. If the item is no longer available, Stralos removes the selection and returns to the list.

When you open a work item's detail pane, Stralos scrolls to the top of the page so the full pane header is visible. Click **← All work items**, press **Escape**, or select **Estimate schedule** in the left navigation to close the detail pane and return to the list. When you return to the list, Stralos restores the scroll position you had before opening the item.

### Full-screen workbench

Select **Full screen** in the detail header to expand the section rail and
detail pane to the browser viewport. Select **Exit full screen** or press
Escape to return. An open editor, menu, or dialog handles Escape first; the
next press exits full screen, and a further press closes the split view.

### Collapsible section rail

On wide screens, the section rail can be collapsed to a narrow strip showing
only item numbers and section chevrons. Use the **«** button in the rail header
to collapse it, or the **»** button in the strip to expand it again. Stralos
stores this preference in the current browser when storage is available.

When the rail is collapsed, hover over the strip (on a pointer device) to peek
the full list. The list appears as an overlay over the detail pane without
pushing the pane aside. To keep the list open permanently, select **Pin** in the
peek header. Pinning docks the list beside the detail pane. Select **Unpin** in
the docked header to return to the strip and peek behaviour.

Press **Escape** while the peek is open to close it without navigating away from
the current item.

### Previous and next items

Use the arrow buttons in the detail header to move through the visible rail
rows. A button is disabled when there is no visible sibling in that direction.
This replaces the selected `wi` query parameter instead of adding browser
history entries. When the detail pane was opened from the work-items list, the
browser's Back action therefore returns to that list rather than stepping back
through viewed items. A shared URL opened directly has no list entry to return to.

## Quantity fill-handle

In the editable desktop grid, each measured and provisional-quantity work item row shows a small fill-handle grip at the trailing edge of the quantity cell. You can drag the grip downward over other rows to copy the anchor item's quantity into every eligible row in the range.

* Provisional-sum items do not show a fill-handle, because their price comes from their allowance and their quantity is always 1.
* Quantity values are rounded to three decimal places. Values of 10 billion or more are not filled.
* Rows whose quantity field is mid-save (shown with a busy indicator) are skipped automatically.
* Dragging upward or releasing on the anchor row itself makes no change.
* The fill-handle is disabled while the anchor row's quantity has an uncommitted edit. Commit or discard the edit before dragging.

The fill sends a single batch request to the server, applying the quantity to all eligible destination rows at once.

## Using work items on smaller screens

On smaller screens, work items render as cards instead of the desktop grid. Each card shows:

* Name and item number.
* Status badge and D\&C count.
* Takeoff chip, if measurements are linked.
* Quantity, duration, and pricing summary.
* A **⋯** action menu for adding components, finding similar items, linking departures and clarifications, and deleting.

Tap a card to open its detail pane. The compact card is read-only; use the desktop grid for inline component and pricing controls.

On a smaller screen, the detail pane's build-up also shows as stacked cards instead of the desktop grid, and the page scrolls only up and down. Each line is a card with its rate group badge, name, key figures, and action menu, under its activity's heading. A line with no cost shows **Zero cost — review rate**, as in the desktop build-up.

## Deleting a work item

Select **Delete** from a work item's action menu. Stralos does not ask you to confirm. The item leaves the schedule straight away and an **Undo** notification appears. Select **Undo** to bring it back.

The delete is sent when the notification closes, when you start another delete, or when you leave the page. If you try to close or reload the browser tab while a delete is waiting, the browser asks first. If the server refuses the delete, the item comes back with the reason.

Once sent, the item is removed from the estimate and kept for history, together with:

* Its build-up lines.
* Its links to takeoff measurements (the measurements themselves stay).

Deleting a section works the same way, with an **Undo** notification instead of a confirmation.

Section subtotals and estimate totals are recalculated immediately after the delete.

## Exporting work items

Select **Preview export** in the Estimate schedule toolbar to open the export preview in a new browser tab. The preview opens without the main navigation rail: it is a read-only view of the export and is separate from the estimate workspace.

The preview shows the project name as its main heading and **Export estimate items** beneath it. The preview loads all estimate items and sub-items and displays them in a compact table with a sticky header row. A shaded edge appears on whichever side of the table has columns scrolled out of view.

Units in the preview use the platform catalogue symbols shown in the Estimate schedule, such as **m²**. Stored aliases resolve to their canonical symbol; raw codes such as `square_metre` do not appear in the preview.

When the estimate has sub-items, a **Show sub-items** checkbox appears. It is ticked by default, and each sub-item sits under its parent, grouped so you can fold it away in Excel. Untick it to leave sub-items out of both the preview and the workbook. A parent item's amount already includes its sub-items, so totals are correct either way.

Tick **Include build-up resources** above the column picker to add each work item's resource rows beneath it in both the preview and the downloaded workbook. The checkbox is unticked by default. Build-up rows for subcontract packages are not included. The preview loads the resource rows from the server on the first tick; the preview keeps them when you untick and re-tick. Downloads build a fresh workbook on the server.

All available columns are selected initially. Use the **Columns** panel to tick or untick individual columns. Select **Select all** or **Remove all** to include or exclude every column at once. At least one column must be selected before the download is available.

A counter above the table shows how many columns are fully visible in the current viewport, for example, **8 of 28 columns shown — scroll sideways to see the rest**. When all columns fit, the message shows only the count with no scroll prompt.

The export includes estimate items and sub-items, with columns for quantities, cost and sell values, rate-group costs, a **Day/Card rates total** column for day-rate line costs, labour hours, notes, and linked-record indicators. In the preview and workbook, **Item number** identifies the line, **Estimate item** identifies a top-level item in the row-type column, **Cost per unit** is the per-unit cost, and **Unit price** is the per-unit sell price. A **Shared Costs** column shows each recipient work item's attributed share of the Shared Costs pool; it is zero for pool rows themselves and for items with no attributed share. Remove internal cost or notes columns if they are not appropriate for the recipient.

Long notes are truncated with an ellipsis in the preview. Hover over a truncated note to read it in full. The Excel workbook always contains the complete note text.
The preview shows a **Unit name** column containing the unit symbol (for example, **m²** or **t**). The downloaded workbook includes an additional **Unit** column directly before **Unit name**. **Unit** holds the stored unit code (for example, `square_metre` or an imported code such as `m3`); it is useful for re-import and machine reading. Selecting or deselecting **Unit name** in the columns panel includes or excludes both columns in the file.

Unit symbols in the export use lower-case except for initialisms and SI symbols. Counting units appear as `no.`, `set`, `pair`, `lot`, `item`, and `week`. Stock units appear as `len`, `roll`, and `sheet`. Alias spellings stored on work items, such as `sqm`, `cum`, `nr`, `wk`, `mth`, `hrs`, or `lm`, are resolved to their catalogue symbol before writing to the file.

Parent cost, price, rate-group totals, and labour hours include their sub-items. When totalling the spreadsheet, count top-level work-item rows only.

Select **Download Excel** to save the current column selection as an `.xlsx` file. Stralos builds the workbook on the server and streams it directly to your browser. The filename comes from the server and falls back to the project name.

The workbook uses your company's brand colour for its header row, or the Stralos navy when no colour is set. Your company logo appears above the table when one is set. Money cells use Excel's currency format. When the quantity, rate and total columns are all included and the figures agree, **Total cost** and **Total price** are written as live formulas (`=ROUND(quantity*rate,2)`). Each formula carries the stored figure, so a viewer that does not recalculate still shows the right total.

### Build-up resource level

The default export writes one row per work item. Switch to the **build-up resource level** to follow each item row with one row for every resource in that item's build-up, in the same order the build-up grid shows them.

Resource rows carry their own columns: **Build-up group**, **Activity**, **Resource**, **How many**, **Usage**, **Charged qty**, **Rate unit**, **Resource unit cost**, **Resource cost per item unit**, and **Resource total cost**. They also carry the pricing engine's per-line markup (or margin) percentage and its source, **Supplier / location**, **Resource sell per item unit**, and **Resource total sell**. Every item money and quantity column is left empty on resource rows, so each item column sums to the same total at both levels.

Activity containers are not written as rows. Instead, each resource inherits its nearest enclosing activity as columns: Activity (path), instances, allocated quantity, allocation unit, production rate, and duration in days. This keeps the outline at one level (item, then resources), with activity detail readable from the resource rows.

Two item-level columns are added in this mode:

* **Shared Costs sell share**: the item's share of the Shared Costs pool's sell, from the same spread step the estimate uses for totals.
* **Item price adjustment**: the item's price before Shared Costs less its resource sells. This covers allowance amounts, fixed-package sells, and rounding, so the reconciliation closes: resource sells + price adjustment + Shared Costs sell share = total price.

Sell figures come from the pricing engine and reflect the estimate's margin ladder. A line the engine applies no margin to shows a sell equal to its cost.

The build-up level is only available on the **Estimate items** layout. The **Submission** and **Original workbook** layouts refuse it.

The 10,000-row cap includes resource rows. An estimate that fits within 10,000 work items may be refused at the build-up level if its resources push the total above the cap.

To download a client-facing schedule without internal cost columns, use **Download Excel** or **Download PDF** on the [Tender download](https://help.stralos.app/guides/estimators/tender-submission.md#tender-download) tab in Tender Submission.

Estimates with more than 10,000 work items cannot be exported. Stralos refuses the download before reading any rows and shows an error message with the item count.

Because the workbook is built from a fresh read at the moment you select **Download Excel**, an estimate edited between opening the preview and pressing download produces a file that may differ from the preview table. The preview reflects the state when it loaded; the downloaded file reflects the current state.

When Stralos cannot load one or more company reference lists (unit catalogue or rate-group names), it builds the workbook with the built-in defaults and adds an `X-Stralos-Export-Degraded` header to the response naming the lists that did not load. The downloaded file may use different unit symbols or rate-group labels than the preview in that case.

If the download fails, the page shows the reported problem. Select **Download Excel** again to clear that message and retry. Select **Back to Estimate schedule** to return to the estimate without downloading.

## Good practice

* Keep the work item name commercially meaningful.
* Split unrelated scope into separate work items.
* Set item kind to **Provisional Sum (PS)** for work that is not yet fully defined and should be priced at an allowance, not from a build-up.
* Add a clause reference when the item relates directly to a numbered tender clause.
* Use departures and clarifications links to trace tender obligations back to priced scope lines.
* Use **Item Notes…** for estimating assumptions or scope qualifications that belong to the work item.
* Use **Full screen** for complex build-ups, and collapse the section rail using **«** in the rail header when the detail pane needs more horizontal space. Pin the peek to dock the full list without leaving full screen.
* Use activities for repeatable build-ups rather than copying components manually.
* When you add a labour or plant/vehicle rate priced per hour, day, week, or month, Stralos automatically places it inside an activity container. Hourly rates produce a day-based container; the child row carries the estimate's hours-per-day value. Edit the container to set the allocation and production rate.
* A top-level rate row is charged once for the whole work item by default. Choose **Per estimate item unit** in its **Unit / Basis** picker if the quantity represents a rate per work-item unit (for example, m³ per metre).
* For time-based activities, use activity instances to record each crew's allocation and production rate separately rather than adjusting component quantities manually.
* Use a different allocation unit when the crew's output is measured in a unit that does not match the work item, for example, manholes (ea) on a trench (m) item. The duration calculation is unaffected: it is always allocation divided by production rate, regardless of which unit is used.
* Set **Count** on an activity when the whole activity repeats, for example 8 manholes. Every line except a **Fixed** one is charged for each repeat.
* Use **Per activity count** for a cost that comes with each repeat, **Fixed** for a one-off across all repeats, **Per activity qty** for materials that scale with the allocated quantity, and **Per day**, **Per week**, or **Per month** for costs that scale with duration.
* Use an assembly for a set of materials that recurs inside an activity, such as a fitting kit per valve.
* Use **Make rate only** for schedule lines the client prices by rate alone, so they stay out of every total.
* Use **Save as template** to keep a proven set of sections and lines for other estimates.
* Add a scope label when dividing work between multiple crews so the allocation check can confirm they cover the full item quantity.
* Add a crew/chain label when two or more instances of the same activity work sequentially; leave it blank when they run concurrently.
* Review activity-expansion notices before dismissing them; skipped lines represent money excluded from the estimate.
* Use **Save to activity library…** on an activity container to capture its proven subtree for reuse.
* Set **h/day** only when an hourly line's working day differs from the estimate default.
* Use **Add Shared Costs** for overhead costs that should be recovered proportionally across other top-level work items rather than billed as a separate line.
* Review components after changing quantities or linked takeoff measurements.
* Mark status deliberately so managers can see readiness.
* Use the name-field suggestions to reuse a past work item's build-up when creating a new item with similar scope. Both import checkboxes default to on; untick **Update rates to current rates** only when you want to preserve historical prices.
* Use **Reuse a past build-up** beside **Rates & activities** in the detail pane to copy a build-up onto an item that already exists.
* Use **Duplicate** to carry forward a similar item's components rather than re-entering them manually, then adjust the copy.
* Use bulk duplicate to quickly clone a set of related items, then adjust names and quantities individually.
* Use sub-items to split an SOQ line that covers two distinct jobs. The parent's total automatically includes every sub-item, and section subtotals count that rolled parent once. The subtotal stays unchanged only when equivalent priced scope is moved from the parent into its child.
* Use bulk move to reorganise sections in one step rather than editing items one by one.
* Use the quantity fill-handle to copy a measured quantity down to a run of items that share the same measurement.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.