> ## 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.

# Projects

> Creating and maintaining project context

Projects hold the context that an estimate needs: client, quote number, job number, client reference, status, location, and commercial identity. Keep project records tidy because they are used by the Dashboard, project selector, estimate workspace, rates, and document workflows.

## Project fields

* **Client**: the client the project is being prepared for.
* **Project name**: the name used across navigation and estimate pages.
* **Quote number**: assigned by Stralos when the project is created. Read-only. See [Quote numbers and job numbers](#quote-numbers-and-job-numbers).
* **Job number**: assigned by Stralos when an estimate on the project is marked Won. Read-only.
* **Client reference**: the client's own reference for the project. Optional.
* **Status**: the server-managed lifecycle stage, shown as a read-only badge.
* **Office**: the office in your company that the project is run out of. Required when you create a project.
* **Main contact**: the person at the client the tender goes to. Required when you create a project.
* **Location**: address, city, region, latitude, and longitude where available.

## Projects list

The **Projects** page shows projects in your company as a table. The subtitle shows how many projects you belong to out of the company total: **You're on X of Y projects**. Each row shows:

* **Project**: the project name as a link. A lock icon appears when you are not on the project's team.
* **Client**: the client the project belongs to.
* **Status**: a coloured badge using your company's status names.
* **Office**: the office the project is run out of, or **Not set**.
* **Project lead**: the assigned project leads.
* **Target submission**: the target tender submission date, when set.
* **Proposed start**: the proposed start date, when set.
* **Access**: **Manage team** (if you can manage the project), and **Join project** or **Request access** (if you do not yet have access).

Use the controls above the table to narrow and order the list:

* **Mine**: only the projects you are a member of.
* **All in company**: every project in the company, including ones you cannot yet open.
* **Search projects or clients**: type part of a project or client name.
* **Lead pipeline**: projects at the Lead status only.
* **Status**: tick one or more statuses to show projects at any of those stages.
* **Office**, **Client**, and **Project lead**: projects matching the selected value.
* **Sort by**: order the list by **Project name** (the default), **Newest first**, **Recently updated**, **Submission date**, **Start date**, **Client**, or **Status**. You can also select a column header to sort by that column; select it again to reverse the order.

Links from dashboard widgets can open the list with these filters already applied.

Use the star in the first column to pin a project. Pinned projects appear first in the project selector.

The list uses continuous scrolling across the full result set. Stralos loads rows in batches as you scroll; there are no page buttons. The project count shown in the header reflects the current filter.

## Project access

Projects use explicit membership. You can open a project only if you are a member of its team. Company admins can view and manage any project's team but still need to add themselves as a member to open the project's contents.

### Viewing a project you cannot open

Selecting a project you are not a member of opens an access page showing the project name, client, office, lead, and key dates. From here you can:

* **Join project**: appears when the project is run out of one of the offices you can join projects at. Confirm to add yourself to the team as a member; no approval is needed.
* **Request access**: enter a reason and submit a request. A project lead decides; unanswered requests escalate to company admins after five working days.
* **Withdraw request**: cancel a pending request you have already submitted.
* **Manage project team**: appears if you are a project lead or admin and can manage the team directly.

If a previous request was declined, you can submit a new one.

On the Projects list, clicking the name of a project you can join asks you to confirm straight away. Once you join, the project opens. A project lead can remove you from the team later.

### Managing a project's team

Project leads and company admins can open the **Project team** sheet from the project overview or by clicking **Manage team** on the Projects list. Admins who are not yet on the team see an **Add myself to project** button at the top of the sheet.

#### Adding a member

1. Search by name or email to filter the list.
2. Choose a person from the **Person** picker. Only company members not already on the team appear.
3. Choose a **Project role**: **Member** or **Project lead**.
4. Click **Add to project**.

#### Approving or declining access requests

Pending requests appear at the top of the sheet. Each request shows the person's name, their stated reason, and the date they requested access. Use **Approve** or **Decline** to decide.

#### Changing a member's role

Click **Make project lead** on a member's row to promote them. Click **Manage** on a project lead's row to demote them or remove them.

#### Removing a member

Click **Remove** on a member's row. If you are removing or demoting the last project lead, you must first choose a replacement lead before confirming.

#### Access history

Click **Access history** at the bottom of the sheet to see a log of all membership changes, including who was added, removed, or had their role changed, and when.

### Cross-project access requests

The **Access requests** button in the Projects page header opens the caller's access inbox. Project leads see pending requests for projects they manage. Company admins also see escalated pending requests and pending requests for projects with no active lead. Every caller sees their own requests. The count shows items the caller can decide. Open the sheet to approve or decline actionable requests one at a time, or follow a project link.

## Create a project

1. Click **New project** at the top of the Projects page or in the project selector, or open **Settings** and use the Projects settings area.
2. Select the client. The list shows every active company: your clients first, then other companies under **Other companies** with their role. If you choose a company that is not a client yet, a note says that creating the project will also mark it as a client. Type to search; press Enter to pick the top match.
   * If the client does not exist yet, select **+ New client…**, or type the name and select **+ Create new client "…"** to carry the typed name into the new client step. See [New client step](#new-client-step).
   * If what you type is close to an existing company's name, for example "Fulton Hogan Ltd" when the company is saved as "Fulton Hogan", the existing company is offered under **Did you mean** so you don't create a duplicate.
3. Select the **Main contact**: the person at the client the tender goes to. The list shows the chosen client's contacts. Choose **TBC — to be confirmed** if you don't know yet, and set the contact later in Project settings. If the person is not listed, select **+ New contact…**, or type their name and select **+ Create new contact "…"**. See [New contact step](#new-contact-step).
4. Select the **Office** the project is run out of. The list shows your company's active locations. Your effective default office is pre-selected. If you have not chosen one, Stralos uses the first-created active office. You cannot create the project without an office. Admins can add an office from the list with **+ New office…** or **+ Create new office "…"**.
5. Leave **Prefer resources from this office** ticked if the project should draw on this office's resources first, or untick it.
6. Enter the optional **Client reference** when one has been supplied.
7. Enter the project's dates if you know them. All are optional.
   * **Target submission** and **Proposed start date** accept day-first dates, for example `3/4/2026` or `3 Apr 2026` for 3 April 2026.
   * **Site visit** and **Questions close** take a date and a time, in the project's time zone.
   * **Decision expected** and **Next follow-up** take a date only.
8. Save the location details before you begin pricing location-sensitive rates.
9. Once the project is created, the sheet moves to the **Suppliers for this project** step. Choose a search distance and, optionally, preferred suppliers for bulk materials and disposal. Select **Save**, or select **Skip for now**. See [Suppliers for this project step](#suppliers-for-this-project-step).

If you change the client after choosing a main contact, the **Main contact** field clears. Choose one of the new client's contacts.

New projects always start at **Lead**. The create form does not offer a status choice.

The client list in the project sheet refreshes each time you open it, so a client added by another team member appears without you needing to reload the page. If the refresh fails, a **Retry client choices** button appears above the client field. Your current client selection is kept while you retry.

If your company has no offices set up yet, the **Office** field explains why it is empty:

* **Admins** select **Add your office** to add the first office in a step of the same sheet. Enter its details and select **Create office**; the new office is selected when you return to the project.
* **Members** are asked to get their admin to add the office. You cannot create the project until an office exists.

If the office you chose is no longer available when you save, Stralos clears the **Office** field and explains why. Choose another office and save again.

### New client step

The **New client** step creates the client and the person the tender goes to in one save.

* **Client name**: required. If the name matches a company you already have (ignoring capitals and extra spaces), Stralos says so and offers **Use** with the company's name. Select it to pick that company instead of creating a new one.
* **Company roles**: **Client** is always ticked. Tick **Supplier** too if the company also sells to you.
* **Company phone** and **Company email**: optional.
* **Main contact**: **Contact name** is required, plus a **Contact phone** or a **Contact email**.
* **Location**: required. Pick the client's address from the search list. It prints on the tender and is added to the company's locations.
* **Kind**: required. The field starts empty, so choose what kind of location it is each time, for example **Office** or **Yard**. The location **Name** follows the kind you choose until you type your own.

Select **Create client**. You return to the project step with the new client and its main contact selected. If the address you picked is already recorded for another company, the confirmation mentions it. See [Shared address notice](https://help.stralos.app/guides/reference/suppliers-and-locations.md#shared-address-notice).

### New contact step

The **New contact** step adds a person to the chosen client. Enter a **Name**, a **Phone** or an **Email**, and optionally a **Role**, for example Project manager. Select **Create contact**. You return to the project step with the new contact selected as the main contact.

### Suppliers for this project step

After Stralos creates the project, the sheet shows the **Suppliers for this project** step. Use it to set the search distance and, optionally, a preferred supplier for bulk materials and for disposal. You can change the distance later in **Project settings** → **Project details**, and the suppliers in **Project settings** → **Rate preferences**.

#### Search distance

The search distance sets how far Stralos looks for suppliers when pricing this project. Choose **5 km**, **10 km**, **20 km**, **35 km**, **50 km**, **100 km** or **150 km**, or select **Other** and enter a value from 1 to 2000 km, with at most one decimal place (for example `75.5`).

Stralos measures the road distance from the project to each supplier site that has rates and shows how many suppliers are within the chosen distance, with a list of those sites, nearest first. When the list is long it scrolls inside the step, and a line below it says how many sites it holds. Stralos preselects the shortest of **50 km**, **100 km** or **150 km** that includes a supplier site. If none are within 150 km, it preselects **150 km**. If nothing could be measured, it preselects **50 km**.

* While Stralos measures, the step shows **Measuring the distance to each site…**. If measuring fails, select **Try again**, or choose and save a distance anyway.
* If the Resource library has no supplier rates yet, the step says so. You can still choose a distance.
* Sites with no address cannot be counted. The step says how many there are and names them when there are six or fewer.

#### Bulk materials and disposal suppliers

Below the search distance, the step asks the same question for **Bulk materials** and for **Disposal**:

* **Let Stralos pick the cheapest within N km** is selected to begin with. It saves no rule, so pricing keeps following the search distance.
* **Use a preferred supplier** lets you choose one supplier for the group, which covers all of that supplier's sites. The list shows suppliers with a rate in that group within the search distance, nearest first. Select **Show all suppliers** to see the rest.

If no supplier has a rate in a group yet, **Use a preferred supplier** is unavailable for that group and the step says so. If a preferred supplier does not sell a particular material, Stralos prices it as if no preference were set.

#### Saving the step

Select **Save**, or select **Skip for now** to leave the distance and supplier preferences unset. Without a saved distance, pricing tries 50 km, then 100 km, then 150 km until it finds a supplier.

Stralos saves the search distance first. If your preferred suppliers cannot be saved, the project and distance are still saved, and a **Preferred suppliers not saved** message tells you to set them in **Project settings** → **Rate preferences**.

## Quote numbers and job numbers

Stralos gives every project a quote number when you create it, for example `Q-0012`. The confirmation message names it. You do not need to ask for one.

A project's quote number belongs to its first estimate. Each other tender estimate on the project, each saved version, and each revised tender gets its own quote number, shown in the estimate header and in the **Versions** list. When you save a version, revise a tender or reopen a lost project, **Also update this tender's quote number** decides whether the tender you keep working on takes a new number. See [Estimate versions](https://help.stralos.app/guides/estimators/estimate-workspace.md#estimate-versions). Tender downloads and spreadsheet exports print the quote number of the estimate they come from.

A job number, for example `JOB-0004`, is assigned when an estimate on the project is marked Won. Until then, the project has no job number. Quote numbers and job numbers come from separate sequences that an admin sets up in [Company defaults](https://help.stralos.app/guides/admins/organisation-settings.md#quote-and-job-numbers). Neither number can be changed once assigned.

The client reference is separate from both: it is supplied by the client, while quote and job numbers are your company's own identifiers.

The project selector shows the job number beside each project, or the quote number while there is no job yet. The Dashboard shows the job number, then the client reference, then the project name.

## Estimate creation

Each project has a project estimate. When you open the estimate workspace, Stralos loads the existing estimate or creates the first one for that project.

## Managing estimates

When **Multiple estimates** is turned on in the project's settings, you can create and manage more than one estimate side by side — for example, to price alternative scopes or compare tender approaches. Each estimate has its own takeoff, work items, project rates, and tender submission. One estimate is always the primary; it is the one that opens by default. See [Project settings](https://help.stralos.app/guides/estimators/project-settings.md#estimates) to turn the setting on.

### Opening the Estimates sheet

The **Estimates** sheet opens over whichever project page you are on, so you keep your place. After any change in the sheet — a new estimate, a rename, a new primary, or a delete — the page beneath refreshes its data in place, without losing your scroll position or open panels.

Open the sheet from any of these entry points:

* **Left rail** — select the estimate name in the **Estimate** section of the rail, then select **Manage estimates…** from the menu.
* **Estimate Overview** — select **Manage estimates** above the summary on the estimate's **Overview** tab.
* **Project Settings** — select **Manage estimates** beside the **Multiple estimates** checkbox.

The sheet lists the project's tender estimates, primary first (marked with a star), then the rest alphabetically. Each row shows the estimate's name, an **Open** badge on the estimate you have open, a **Primary** badge, the tender price, and the status. Not-awarded estimates are hidden — select **Show not-awarded estimates** to include them. The Delivery estimate is never listed; it has its own section in the project navigation.

Each row's actions menu offers **Duplicate…**, **Rename…**, **Make primary**, and **Delete…**. Select **Done** to close the sheet.

### Creating an estimate

1. Open the Estimates sheet and select **New estimate**. To copy a particular estimate, select **Duplicate…** from its menu instead — the form opens with that estimate as the source.
2. Under **Start from**, choose:
   * **Blank estimate** — starts empty with the company's margin ladder and the project's hours per day. It has its own project rates, takeoff, and tender submission.
   * **Copy of an estimate** — a full copy of an existing estimate: takeoff, calculations, schedule, project rates, and tender clauses. The copy is a draft and does not change the original.
   * **Copy of a saved version** — a full copy of the estimate as it was saved in that version.
3. If copying, select the source **Estimate** and, for a version copy, the **Saved version**.
4. Enter a **Name**. Names must be unique on the project (case-insensitive) and up to 200 characters. Stralos suggests **Alternative estimate** for a blank estimate, or **Copy of** followed by the source name for a copy.
5. Select **Create estimate**.

The new estimate is added to the project's estimates and the sheet returns to the list. Open it from the rail when you are ready.

### Renaming an estimate

Open the estimate's menu in the Estimates sheet and select **Rename…**. Edit the name and save. The name must remain unique on the project.

Rename is not available on a not-awarded estimate.

### Making an estimate primary

The primary estimate is the default for the project — it opens when no specific estimate is selected. To change which estimate is primary, open its menu and select **Make primary**.

Make primary is not available when:

* The estimate is already primary.
* The estimate has been marked as not awarded.

### Deleting an estimate

Open the estimate's menu and select **Delete…**, then confirm with **Delete estimate**. The estimate is removed from the project's list but kept on record (soft delete), so support can restore it.

Delete is not available when:

* The estimate is the primary — make another estimate primary first.
* The estimate is the won estimate (the contract record cannot be deleted).
* The estimate has a submitted tender revision — it is kept as a tender record.

If you delete the estimate you currently have open, Stralos opens the primary estimate on the same screen.

### Switching estimates

Select an estimate's name in the Estimates sheet to open it. The sheet closes and the selected estimate opens on the same screen. You can also switch from the rail — see [Switching between estimates](https://help.stralos.app/guides/estimators/estimate-workspace.md#switching-between-estimates).

## Project settings

After creating a project, open **Project Settings** to update project details and configure the contract basis. The contract basis tells Stralos which contract form governs the project, its overhead percentages, and its contract documents.

See [Project settings](https://help.stralos.app/guides/estimators/project-settings.md) for full details.

## Project lifecycle

The project lifecycle includes these stages: **Lead**, **Estimating**, **Submitted**, **Awarded**, **Active**, **Completed**, **Lost**, and **Archived**.

> [!NOTE]
>
> The names Stralos puts on screen come from the platform-managed **Project statuses** list, not from these stage names. Three of them ship with different words by default: Estimating shows as **Pricing**, Awarded as **Won**, and Active as **Live**. The other five, Lead included, show their own name. This page uses the underlying stage names throughout, so a badge reading "Pricing" is the **Estimating** stage described here.

* **Lost** identifies a tender that was not awarded.
* **Archived** identifies a project that is closed, withdrawn, or superseded but retained for reference.

### Moving a project through the pipeline

Actions are split between two places:

* **Estimate workspace header** — tender submission and award actions that change both the estimate status and the project status at the same time.
* **Project Settings** — pipeline actions that affect only the project (start estimating, back to lead, start project, and mark complete).

Status remains server-managed and cannot be changed through **Save changes** or the project editors.

#### Estimate workspace actions

The following actions appear as buttons in the estimate workspace header. Only actions valid for the current combination of estimate status and project status are shown.

| Action | When available | What happens |
| - | - | - |
| **Submit tender** | Estimate is **Draft** or **Review**, project is **Estimating** or **Submitted** | Freezes the current estimate as a new revision. Estimate moves to **Submitted**. The project moves to **Submitted** only when this is the first submitted estimate on the project; subsequent submits on the same project leave the project status unchanged. |
| **Revise tender** | Estimate is **Submitted**, project is **Submitted** | Reopens the tender for revision. The submitted revision is retained. Estimate moves to **Draft**. The project moves back to **Estimating** only when this is the last submitted estimate on the project; if other submitted estimates remain, the project status is unchanged. |
| **Mark won** | Estimate is **Submitted**, project is **Submitted** (project leads and company admins) | Records the award for a named estimate. The named estimate moves to **Accepted**, the project moves to **Awarded**, and the contract baseline is created from, or bound to, the accepted tender revision. Every other tender estimate on the project is hidden and marked as not awarded. Contract changes go through Variations from this point. |
| **Mark lost…** | Project is **Estimating** or **Submitted** | Opens a dialog requiring a reason category and an optional note. Project moves to **Lost**. All active tender estimates move to **Rejected**. The reason is recorded in project history. |
| **Reopen** | Project is **Lost** | Reopens the project for re-tendering. Project moves to **Estimating**. The estimates that were rejected in the mark-lost action return to **Draft**. Prior tender revisions are retained. |

**Mark won** is available to project leads and company admins. The server enforces this independently, so a project member without the lead role cannot mark won.

When a project has several tender estimates, the **Mark won** action names one estimate as the winning bid. The others are hidden and recorded as not awarded. A hidden estimate is read-only. A company admin can reverse the award (via admin status override) to clear the outcome and restore all estimates to their pre-award state, provided the project has not yet had a signed-off delivery.

If a transition is in progress on the server, Stralos shows an information notice rather than an error and refreshes the project and estimate once. If the notice remains, refresh again after a moment to see the reconciled state.

#### Project Settings actions

| Current status | Available action | Resulting status |
| - | - | - |
| Lead | Start estimating | Estimating |
| Estimating | Back to lead | Lead |
| Awarded | Start project | Active |
| Active | Mark complete | Completed |

You do not usually need **Start estimating**. A Lead project moves to **Estimating** automatically the first time anyone saves a change to one of its tender estimates. Changes to a saved version or a not-awarded tender estimate do not move it. If the move cannot complete, your change is still saved and a later edit tries again.

Only actions valid for the current status are shown. **Archive** and **Unarchive** are supported by the lifecycle API but are not yet exposed as buttons in Project Settings. Awarded and Active projects cannot be archived through the standard lifecycle rules.

When you mark a project won or lost, reopen it, or use an API-only archive action, Stralos also transitions the linked estimate in the same operation. If the estimate service is temporarily unreachable, the transition is recorded as in flight and completed automatically in the background. If the estimate service definitively rejects the action, the transition is rolled back and the error is shown.

When an action succeeds, the status badge updates. If it fails, Stralos refreshes the project from the server and displays the error so a concurrent status change does not leave stale actions on screen.

> [!NOTE]
>
> Only one status transition can be in flight for a project at a time. If you see a "transition in flight" error, wait a moment and try again — a background process is finishing a previous transition.

### Mark lost

When marking a project lost you must choose a reason category:

* **Price** — your price was not competitive.
* **Timing** — the schedule did not suit.
* **Scope** — the scope did not match your capability.
* **Relationship** — awarded on a relationship basis to another party.
* **Project cancelled** — the client cancelled the project.
* **Re-bid** — the project will be re-tendered.
* **Client did not award** — your client did not award the work.
* **Other** — use this when no other category applies.

An optional free-text note can accompany the reason.

The reason feeds the **Reasons lost** widget on the [Dashboard](https://help.stralos.app/guides/managers/dashboard.md#pipeline-and-performance).

### Admin status override

Admins also see **Override status**. Use this only for an exceptional correction:

1. Open **Project Settings** and click **Override status**.
2. Choose any available target status. **Awarded** is excluded from the admin override; use **Mark won** in the estimate workspace to move a project to Awarded through the standard tender flow.
3. Enter the required reason.
4. Click **Set status**.

The server independently verifies the admin role and records the reason with the transition. The API accepts an admin override to Awarded only when the award baseline guard passes, but the current Project Settings interface deliberately excludes that target.

### Project history

Every committed status change is recorded with its action, previous and resulting status, actor, and timestamps. This audit history is stored by the API and is not yet shown in a history viewer in the interface.

## Good practice

* Use the real tender reference, not a temporary name, once the job is live.
* Use the status badge to understand where a project sits in the pipeline.
* Add a location before working with supplier or location-based pricing.
* Avoid duplicating a project when the existing record only needs a reference or project-detail update.


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