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

# Manage projects

> Configure project settings and features

export const feature_0 = "Unlimited human review scorers";

export const verb_0 = "are";

Projects organize AI features in your application. Each project contains logs, experiments, datasets, prompts, and other functions. Configure project-specific settings to customize behavior for your use case.

## View projects

Select your organization from the top-left menu to see a list of all projects in your organization, including key project details such as:

* Name
* Creator
* Counts of playgrounds, experiments, datasets, logs, and spans
* Log size estimates for different time periods
* Token usage and duration metrics

<Tip>
  You can use the Braintrust API to change the name, description, or creator of an existing project. See the API reference for [updating projects](/api-reference/projects/partially-update-project).
</Tip>

From the [`bt` CLI](/reference/cli/quickstart), list all projects or view details for a specific one:

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
bt projects list
bt projects view my-project
```

`bt projects view` opens the project in your browser, unlike `bt functions view` which displays details in the terminal.

Use the projects list to organize and find projects:

* **Search**: Use the search box to find projects by name
* **Filter**: Use the <Icon icon="list-filter" /> **Filter** menu to add custom filtering.
* **Sort**: Choose sorting options in column headers.
* **Configure columns**: Customize which columns are visible in the table
* **Save views**: Save your table configuration as a custom table view. See [Create custom table views](#create-custom-table-views).

### Create custom table views

To create or update a custom table view:

1. Apply the filters and display settings you want.
2. Open the <Icon icon="layers-2" /> menu and select **Save view\...** or **Save view as...**.

<Note>
  Custom table views are visible to all project members. Creating or editing a table view requires the **Update** project permission.
</Note>

### Set default table views

You can set default views at three levels:

* **Organization default**: Visible to all members when they open the page. This applies per page. For example, you can set separate organization defaults for Logs, Experiments, and Review. To set an organization default, you need the **Manage settings** organization permission (included by default in the **Owner** role). See [Access control](/admin/access-control) for details.
* **Project default**: Overrides the organization default for everyone viewing this project. To set a project default, you need the project-level **Update** permission. Project admins can set project defaults even without organization-level permissions. See [Access control](/admin/access-control) for details.
* **Personal default**: Overrides the project and organization defaults for you only. Personal defaults are stored in your browser, so they do not carry over across devices or browsers.

To set a default view:

1. Switch to the view you want by selecting it from the <Icon icon="layers-2" /> menu.
2. Open the menu again and hover over the currently selected view to reveal its submenu.
3. Choose <Icon icon="flag-triangle-right" /> **Set as personal default view**, <Icon icon="bookmark" /> **Set as project default view**, or <Icon icon="pin" /> **Set as organization default view**.

To clear a default view:

1. Open the <Icon icon="layers-2" /> menu and hover over the currently selected view to reveal its submenu.
2. Choose <Icon icon="flag-triangle-right" /> **Clear personal default view**, <Icon icon="bookmark" /> **Clear project default view**, or <Icon icon="pin" /> **Clear organization default view**.

Default view settings are mutually exclusive on a given view. Setting one type of default on a view automatically clears any other default that was previously set on the same view.

When a user opens a page, Braintrust loads the first match in this order: personal default, project default, organization default, then the standard "All ..." view (for example, "All logs view").

## Analyze projects with Loop

Select <Icon icon="blend" /> **Loop agent** in the bottom right corner of a project's **<Icon icon="house" /> Overview** page to analyze that project in depth. Loop has access to the project's logs, recent experiments, datasets, prompts, and the score progress chart visible on the overview page.

Example queries:

* "What's the trend in my accuracy score over the last 7 days?"
* "Which experiments had the biggest score changes?"
* "Show me recent logs with errors"
* "What datasets were created recently?"
* "How has my project's token usage changed over time?"
* "Which scorer has been improving the most?"

To compare metrics across all your projects, select <Icon icon="blend" /> **Loop agent** from the organization-level [projects list](https://www.braintrust.dev/app). Use Loop to compare project metrics, identify trends in usage and performance, and understand how different projects are being utilized.

Example queries:

* "Which projects have the highest token usage?"
* "Show me trends in log volume across projects"
* "What projects were created in the last month?"
* "Compare latency metrics across my top 5 projects"
* "Which projects have the most experiments?"
* "Show me projects with declining usage"

For more information about Loop's capabilities, see [Use Loop](/loop).

## Create a project

<Tabs>
  <Tab title="UI" icon="mouse-pointer-2">
    1. Navigate to your organization's project list
    2. Click **+ Project**
    3. Enter a project name
    4. Optionally add a description
    5. Click **Create**
  </Tab>

  <Tab title="SDK" icon="code">
    <Note>
      If a project already exists, `projects.create()` returns a handle. There is no separate `.get()` method.
    </Note>

    <CodeGroup dropdown>
      ```typescript theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
      import * as braintrust from "braintrust";

      // Get a handle to the project (creates if it doesn't exist)
      const project = braintrust.projects.create({ name: "my-project" });

      // Use the project to create functions
      project.prompts.create({...});
      project.tools.create({...});
      ```

      ```python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
      import braintrust

      # Get a handle to the project (creates if it doesn't exist)
      project = braintrust.projects.create(name="my-project")

      # Use the project to create functions
      project.prompts.create(...)
      project.tools.create(...)
      ```
    </CodeGroup>

    Projects are automatically created when initializing experiments or loggers:

    <CodeGroup dropdown>
      ```typescript theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
      import * as braintrust from "braintrust";

      // Creates "my-project" if it doesn't exist
      const experiment = braintrust.init("my-project", {
        experiment: "my-experiment"
      });
      ```

      ```python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
      import braintrust

      # Creates "my-project" if it doesn't exist
      experiment = braintrust.init(
          project="my-project",
          experiment="my-experiment"
      )
      ```
    </CodeGroup>

    For more details, see the SDK reference for [Python](/sdks/python/api-reference) or [TypeScript](/sdks/typescript/api-reference).
  </Tab>

  <Tab title="CLI" icon="terminal">
    Create a project with the [`bt` CLI](/reference/cli/quickstart):

    ```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
    bt projects create my-project
    ```
  </Tab>
</Tabs>

## Configure AI providers

Configure project-scoped AI provider credentials to override organization-level defaults for a specific project. See [Configure AI providers](/admin/ai-providers#add-a-project-level-provider).

## Add tags

Tags help organize and filter logs, datasets, and experiments:

1. Go to **<Icon icon="settings-2" /> Settings** > [**<Icon icon="tag" /> Tags**](https://www.braintrust.dev/app/~/configuration/tags).
2. Click **Add tag**.
3. Enter tag details:
   * **Name**: Tag identifier.
   * **Color**: Visual indicator.
   * **Description**: Optional explanation.
4. Click **Save**.

Use tags to track data by user type, feature, environment, or any custom category. Tags are configured at the project level and shared across all objects — logs, experiments, dataset records, and entire datasets. For more information about using tags, see [Tag traces](/annotate/labels#apply-tags) and [Tag and star datasets](/annotate/datasets/manage#tag-and-star-datasets).

## Configure human review

Review scores appear in all logs and experiments in a project. Use them for quality control, data labeling, or [feedback collection](/annotate/human-review/score-traces).

<Note>
  {feature_0} {verb_0} only available on [Pro and Enterprise plans](/plans-and-limits#plans).
</Note>

1. Go to **<Icon icon="settings-2" /> Settings** > [**<Icon icon="list-checks" /> Human review**](https://www.braintrust.dev/app/~/configuration/review).
2. Click **+ Human review score**.
3. Enter a name and description for your score. Descriptions support Markdown.
4. Select a score type:
   * **Categorical score**: Predefined options with assigned scores. Each option gets a unique percentage value between 0% and 100% (stored as 0 to 1). Use for classification tasks like sentiment or correctness categories. Also supports writing to the `expected` field instead of creating a score.
   * **Continuous score**: Numeric values between 0% and 100% with a slider input control. Use for subjective quality assessments like helpfulness or tone.
   * **Free-form input**: String values written to the `metadata` field at a specified path. Use for explanations, corrections, or structured feedback.
5. (Optional) Expand **Score visibility** to configure who sees this score during review:
   * Select members or permission groups to limit visibility to specific reviewers. If you don't select anyone, the score is visible to everyone.
   * Click **+ Condition** to show the score only when a filter condition is true, such as when another score exceeds a threshold. See [Show scores conditionally](/annotate/human-review#show-scores-conditionally) for details.
6. Click **Save**.

<Note>
  Score visibility controls which reviewers see a score in the review modal. It declutters the review experience for large teams. It is not an access control or security boundary: any reviewer with hidden scores can reveal them with the **Show all scores** toggle.
</Note>

<Tip>
  You can also create human review scores as you review traces. In the trace view, click **+ Human review score** and define the score as described above.
</Tip>

For more information, see [Add human feedback](/annotate/human-review).

## Create aggregate scores

Combine multiple scores into a single metric:

1. Go to **<Icon icon="settings-2" /> Settings** > [**<Icon icon="diamond-percent" /> Aggregate scores**](https://www.braintrust.dev/app/~/configuration/aggregate-scores).
2. Click **Add aggregate score**.
3. Define the aggregation:
   * **Name**: Score identifier.
   * **Type**: Weighted average, minimum, or maximum.
   * **Selected scores**: Scores to aggregate.
   * **Weights**: For weighted averages, set score weights.
   * **Description**: Optional explanation.
4. Click **Save**.

Aggregate scores appear in experiment summaries and comparisons. Use them to create composite quality metrics or overall performance indicators.

## Set up online scoring

Define project-level scoring rules that automatically evaluate production logs as they arrive. These rules can be created here or when creating and editing scorers and classifiers.

1. Go to **<Icon icon="settings-2" /> Settings** > [**<Icon icon="radio" /> Automations**](https://www.braintrust.dev/app/~/configuration/automations).
2. Click **+ Create rule**.
3. Configure the rule:
   * **Name**: Rule identifier.
   * **Scorers**: Select which scorers and classifiers to run.
   * **Sampling rate**: Percentage of logs to evaluate (1-100%).
   * **Filter**: Optional SQL query to select specific logs.
   * **Span type**: Apply to root spans or all spans.
4. Click **Save**.

Online scoring rules run asynchronously in the background. View results in the logs page alongside other scores. Rules can also be created and managed when working with individual scorers. For more information, see [Create scoring rules](/evaluate/score-online#create-scoring-rules).

## Configure span iframes

Customize how specific span fields render in the UI:

1. Go to **<Icon icon="settings-2" /> Settings** > [**<Icon icon="app-window-mac" /> Span iframes**](https://www.braintrust.dev/app/~/configuration/span-iframes).
2. Click **Add iframe**.
3. Configure rendering:
   * **Field path**: Which field to render (e.g., `output.html`).
   * **iframe URL**: Template for the iframe src attribute.
4. Click **Save**.

Use span iframes to render HTML, charts, or custom visualizations directly in trace views. For more information, see [Extend traces](/instrument/advanced-tracing#customize-span-rendering).

## Set comparison key

Customize how experiments match test cases:

1. Go to **<Icon icon="settings-2" /> Settings** > [**<Icon icon="ellipsis" /> Advanced**](https://www.braintrust.dev/app/~/configuration/advanced).
2. Enter a SQL expression (default: `input`).
3. Click **Save**.

Examples:

* `input.question` - Match by question field only.
* `input.user_id` - Match by user.
* `[input.query, metadata.category]` - Match by multiple fields.

The comparison key determines which test cases are considered the same across experiments. For more information, see [Compare experiments](/evaluate/compare-experiments#set-a-comparison-key).

## Set a default preprocessor

Override the preprocessor used by functions that take one, such as [custom facets](/observe/topics/custom-facets):

1. Go to **<Icon icon="settings-2" /> Settings** > [**<Icon icon="ellipsis" /> Advanced**](https://www.braintrust.dev/app/~/configuration/advanced).
2. Under **Default preprocessor**, select an option:
   * **thread**: The built-in preprocessor that formats traces as conversation threads.
   * A saved preprocessor function defined in this project.

Functions that use preprocessors, such as the built-in [Topics facets](/observe/topics), apply this preprocessor instead of their built-in default, unless explicitly overridden at invocation time.

## Set a default baseline

Set a project-wide default baseline to automatically compare all experiments against a specific reference run:

1. Go to [**<Icon icon="beaker" /> Experiments**](https://www.braintrust.dev/app/~/experiments).
2. Select the checkbox next to the experiment you want to use as the baseline
3. Click **Set as default baseline** in the toolbar

To clear the default baseline, select the same experiment and click **Clear default baseline**.

The default baseline applies to all experiments in the project unless an experiment has its own baseline configured. For more information, see [Set a baseline](/evaluate/compare-experiments#set-a-baseline).

## Speed up log filtering

If you frequently filter on the same custom fields, you can index them to reduce query latency. Braintrust offers two options: A full-text index for broad search and subfield indexes for specific fields you filter on most.

1. Go to **<Icon icon="settings-2" /> Settings** > [**<Icon icon="ellipsis" /> Advanced**](https://www.braintrust.dev/app/~/configuration/advanced).
2. Under **Log search optimization**, enable the toggle to build a full-text index that speeds up text-based filter queries.
3. Under **Shingled search optimization**, enable the toggle to also index multi-word phrases, which speeds up phrase and multi-word `search()` queries.
4. Under **Subfield indexing**, click **+ Add subfield index** for each field you filter on frequently.

   Braintrust auto-discovers candidate fields from your data (e.g., `metadata.session_id`). If a field doesn't appear, you can type it in directly. Subfield paths must start with `input`, `output`, `expected`, `metadata`, or `span_attributes`.
5. Click **Save and index**.
6. Enter how many days back to backfill (default: 3) and click **Save and backfill**.

The **Index status** section shows backfill progress as indexing runs in the background.

<Tip>
  Use [`search()`](/reference/sql#full-text-search) in SQL filters to query all text fields at once. It gets automatic bloom filter acceleration when log search optimization is on.
</Tip>

## Edit project details

Update project name and description:

1. Go to **<Icon icon="settings-2" /> Settings** > [**<Icon icon="wrench" /> General**](https://www.braintrust.dev/app/~/configuration/general).
2. Modify name and description. The description field supports Markdown formatting.
3. Click **Save**.

## Delete a project

<Warning>
  Deleting a project permanently removes all logs, experiments, datasets, and functions. This cannot be undone.
</Warning>

<Tabs>
  <Tab title="UI" icon="mouse-pointer-2">
    1. Go to **<Icon icon="settings-2" /> Settings** > [**<Icon icon="wrench" /> General**](https://www.braintrust.dev/app/~/configuration/general).
    2. Click **Delete project**.
    3. Confirm by typing the project name.
    4. Click **Delete**.
  </Tab>

  <Tab title="CLI" icon="terminal">
    ```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
    bt projects delete my-project
    ```
  </Tab>
</Tabs>

## Next steps

* [Control access](/admin/access-control) to projects with permission groups
* [Set up automations](/admin/automations) for project-specific alerts
* [View logs](/observe/view-logs) filtered by tags and metadata
* [Run evaluations](/evaluate/run-evaluations) on project datasets
* [Filter and search logs](/observe/filter) with optimized indexes
