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

# Enable Patterns

> Turn on pattern discovery for a project, choose where results are delivered, and tune the schedule and scope of the Loop automation behind it.

Enabling Patterns creates a scheduled [Loop automation](/docs/loop/automations) that investigates your project and records what it finds. This page covers turning it on, tuning it, and adding focused automations alongside it.

## Before you start

Patterns runs Loop against your project on a schedule, so two things need to be in place first:

* **A way to pay for inference.** Patterns runs on [Loop's models](/docs/loop#choose-a-provider-and-model). By default these are Braintrust's [built-in models](/docs/admin/ai-providers#available-models), which draw down your organization's monthly [model credits](/docs/plans-and-limits#model-credits) and need no setup. On the Starter plan, they require at least one organization owner with a work email address, or a payment method on file. See [Requirements](/docs/admin/ai-providers#requirements). To use your own key or keep Patterns running after your credits are exhausted, configure an OpenAI-compatible [AI provider](/docs/admin/ai-providers). Patterns uses only organization-level providers during setup. If your provider is configured at the project level, add it at the organization level before enabling Patterns.
* **Permission to create automations in the project.** Members of the **Owners** and **Engineers** [permission groups](/docs/admin/access-control#built-in-permission-groups) have this by default. **Enable patterns** is shown to everyone, so without permission you'll see an error when you click it rather than a hidden button.

Patterns chooses a provider during setup according to these rules:

* When built-in models are available, Patterns selects them automatically. On Enterprise, you can choose between built-in models and your compatible configured providers instead.
* When built-in models are unavailable, Patterns selects your only compatible configured provider automatically, or asks you to choose if you have several.

You can change the provider after setup in the [automation's configuration](#tune-the-automation).

If you want to choose a Slack notification channel while enabling, [connect a Slack workspace](/docs/admin/organizations#enable-slack-integration) first. Otherwise the picker doesn't appear, and you can add a destination later instead.

## Enable pattern discovery

1. Go to [**<Icon icon="scan-search" /> Patterns**](https://www.braintrust.dev/app/~/patterns). The **Get started with Patterns** panel guides you through setup.
2. If the panel shows **Add provider**, configure an organization-level AI provider before continuing. See [Common issues](#common-issues) for provider and model credit requirements.
3. If the panel shows **Continue**, click it to open **Configure Patterns**. Choose a provider under **Select a model provider** if that field appears. If a Slack workspace is connected, you can also choose a workspace and channel for notifications.
4. Click **Enable Patterns**. If no provider choice or Slack configuration is needed, this button appears directly on the initial panel.

Braintrust creates a **Pattern discovery** automation that runs daily at 9:00 AM in your default timezone, queries the last 30 days by default, and has permission to create and update patterns. It runs a default instruction that tells Loop what to look for, which you can edit later. See [Tune the automation](#tune-the-automation). Braintrust then queues an initial run immediately, so you don't wait for the first scheduled one.

While a run is in progress, the page shows an **Analyzing traces...** indicator. Patterns appear as the run finishes.

<Note>
  If a project has no patterns yet and no run is in progress, click **Analyze patterns** to queue another run without waiting for the schedule.
</Note>

## Tune the automation

The default automation is an ordinary Loop automation, so you can change its instruction, schedule, model, query range, and destinations at any time.

To edit it, either click **Settings** on the [**<Icon icon="scan-search" /> Patterns**](https://www.braintrust.dev/app/~/patterns) page and select the automation, or go to **<Icon icon="settings-2" /> Settings** > [**<Icon icon="radio" /> Automations**](https://www.braintrust.dev/app/~/configuration/automations).

The fields worth revisiting first:

* **Frequency.** How often the run happens. A project with steady traffic rarely needs more than daily.
* **Default query range.** How much recent data each run inspects. Each run inspects the full range, not only the traces created since the previous run, so a wide range costs more.
* **Instruction.** What Loop should look at, how deeply, and when to stop.
* **Destinations.** Where run digests are delivered.

For the full field reference, see [Create a Loop automation](/docs/loop/automations#create-a-loop-automation).

When you [resume a paused automation](/docs/loop/automations#pause-or-delete-an-automation), Patterns keeps its saved model and provider unless you select a different one.

<Note>
  Keep the instruction framed around finding or updating patterns, even when you narrow the automation to one concern. An instruction that asks for a summary produces a summary, not a pattern record.
</Note>

## Add a focused automation

You can run several pattern automations alongside the default one. Use a focused automation when one concern needs its own scope or schedule: tool-call errors, cost growth, latency for a specific set of customers, or quality regressions.

To add one, select **Settings** > **New automation** on the [**<Icon icon="scan-search" /> Patterns**](https://www.braintrust.dev/app/~/patterns) page. Braintrust opens a prefilled automation for you to review and save.

All of them write into the same patterns list.

## Common issues

<AccordionGroup>
  <Accordion title="Setup asks you to add a provider">
    When neither a compatible organization-level AI provider nor usable [built-in models](/docs/admin/ai-providers#available-models) are available, the setup panel shows **Add provider** instead of **Enable Patterns**. Click **Add provider** to configure a provider without leaving setup.

    * **Built-in models are disabled.** To use them instead of your own provider, enable them in **<Icon icon="settings-2" /> Settings** > [**<Icon icon="sparkle" /> AI providers**](https://www.braintrust.dev/app/~/configuration/org/secrets). Your organization must meet the [built-in model requirements](/docs/admin/ai-providers#requirements).
    * **Your model credits are exhausted.** Add your own provider key with **Add provider**, or select **Upgrade** to raise your plan's limits. See [model credits](/docs/plans-and-limits#model-credits) for how usage is counted.

    Configuring a provider and enabling built-in models are organization-level actions. Only members of the **Owners** [permission group](/docs/admin/access-control), or a custom permission group with the **Manage settings** organization permission, can do either. Without that permission, ask an organization owner or administrator to resolve it.
  </Accordion>

  <Accordion title="An automation error appears on the Patterns page">
    Enabling Patterns does not test your provider's connection before creating the automation. If a run fails, an error banner appears below the Patterns page header.

    Open the automation's **Past runs** tab and select the failed run to inspect its transcript. For provider errors, check that the configured credentials are valid and the provider can serve the automation's selected model. After resolving the error, [run the automation again](/docs/loop/automations#create-a-loop-automation) with <Icon icon="play" /> **Run now**.
  </Accordion>

  <Accordion title="A run finished but recorded nothing">
    Loop records a pattern only when it can attach supporting evidence, so a quiet run is a normal outcome rather than a failure.

    To work out what happened, open the automation, select the **Past runs** tab, and select the run to read the transcript. Select <Icon icon="git-fork" /> **Continue** to fork it into an editable thread and ask Loop directly why it recorded nothing.

    If runs are consistently empty, the query range or the instruction is usually too narrow.
  </Accordion>

  <Accordion title="Patterns aren't notifying Slack">
    Destinations belong to automation runs. Patterns that Loop records during an interactive chat appear in the list but do not trigger Slack or webhook destinations.

    Confirm the destination is configured on the automation itself, under **Destinations** in the configuration panel, and that the [Slack workspace is still connected](/docs/admin/organizations#enable-slack-integration).
  </Accordion>

  <Accordion title="The page asks you to upgrade your data plane">
    Patterns requires data plane v2.13 or later. To upgrade, see the [routine upgrade guide](/docs/admin/self-hosting/upgrade/routine).
  </Accordion>
</AccordionGroup>

## Next steps

* [Review and act on patterns](/docs/observe/patterns/review) once the first run finishes.
* [Run Loop on a schedule](/docs/loop/automations) to configure destinations, write permissions, and past runs in depth.
* [Set up alerts](/docs/observe/alerts) for conditions you already know how to detect.
* [Active observability for coding agents](/docs/cookbook/recipes/CodingAgentInsights) to find recurring problems in coding-agent sessions with Topics facets and a Loop automation.
