> Documentation index: https://docs.beetl.io/llms.txt

# Building with the assistant

> Letting the assistant edit the page you are on, build pipelines, and deploy with your confirmation.

Source: https://docs.beetl.io/chat/building-with-the-assistant/
Last updated: 2026-10-03

The assistant works on the page you are looking at. Open **Assistant** from the right edge of the
window, and on the pages below it can read what is on screen and change it for you. On any other
page it still answers questions, queries your data and builds pipelines, but it leaves the page
itself alone.

## Pages it can edit

| Page              | What the assistant can change                                                                                                                                                 | When the change is kept                                                                         |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Query             | The SQL in your tabs. It can also open a new tab or switch to another one.                                                                                                    | Right away. Nothing runs until you press **Execute**.                                           |
| Home              | Node positions and sizes, zones, the search and tag filter, **Snap to grid** and the selected node. Connections, datasets and pipelines stay as they are.                     | Right away, in this browser. See [Data landscape](https://docs.beetl.io/query/data-landscape#the-assistant-on-home). |
| Pipeline editor   | Sources, including **Trigger on update** and the run mapping, SQL stages, the destination, variables, and the run values used for Preview.                                    | When you save.                                                                                  |
| Automation editor | **Name**, **Instructions**, &#x2A;*What should the report include?**, starting queries, **Use previous runs**, the model and reasoning effort, and the schedule and timezone. | When you choose **Save automation**.                                                            |

For the pipeline editor, open it on its own page with **Open full page**, or beside a conversation
in AI Chat.

## What you see after an edit

The fields, tabs or stages the assistant changed flash briefly, and its reply ends with a
**Draft updated** row. **Dismiss** puts the page back the way it was before that turn. On the
pipeline editor the row also has **Save**, which does the same as the editor's own Save button.

In the pipeline and automation editors, nothing is stored until you save, so you can read the draft
first. On Query and Home the change applies at once, and Dismiss is how you undo it.

Dismiss covers the most recent turn that changed the page. The row goes away once you save or move
to another page.

## Build a pipeline in conversation

    ### Ask for the result you want [#ask-for-the-result-you-want]

    Describe the output and name its inputs. Type `@` to mention a dataset by name. For example:
    "From @orders and @customers, build a pipeline that writes daily revenue per country to a Gold dataset called `daily_revenue_by_country`."

    ### Let it explore and test [#let-it-explore-and-test]

    The assistant looks up the datasets, samples their columns and runs its SQL as queries before it
    builds anything. These queries are read-only.

    ### It creates the pipeline [#it-creates-the-pipeline]

    The assistant creates the pipeline with its sources, stages and destination as the Working
    version. Nothing is deployed and nothing is written. In AI Chat the new pipeline opens in the editor
    beside the conversation.

    ### Review and preview [#review-and-preview]

    Read each stage and press **Preview** on it. Preview runs your current draft and writes nothing.
    See [Builder tour](https://docs.beetl.io/pipelines/builder#preview-a-stage).

    ### Refine, then save [#refine-then-save]

    Ask for changes while the editor is open. The assistant now edits your draft in the editor, and you
    keep it with **Save**.

Whether the pipeline is open decides where an edit lands. With the pipeline open in the editor, the
assistant changes your unsaved draft and leaves the stored pipeline alone, so your own unsaved edits
are never overwritten. When it is not open, the assistant changes the stored Working version
directly. That change takes effect at once and chat cannot undo it, though the Deployed version
keeps running unchanged until someone deploys again.

The assistant's own previews run against the saved Working version. After it edits a draft you have
open, preview the changed stages in the editor yourself.

## Deploy from chat

Ask the assistant to deploy, and the turn pauses on a card that names the pipeline, the Working
version and the destination's write mode. Choose **Allow** to deploy or **Deny** to stop. Deploying
is the only action the assistant asks about first.

Allowing a deploy promotes the Working version to Deployed and starts a run that writes the
destination dataset. Beetl runs the same checks as the Deploy button; see
[What Deploy checks](https://docs.beetl.io/pipelines/deploy-and-trigger#what-deploy-checks).

Three cases stop the deploy:

* The pipeline is open with unsaved changes. The assistant asks you to Save or Dismiss the draft
  first.
* The card is more than 10 minutes old.
* The pipeline changed between the card appearing and your Allow. Nothing deploys, and the
  assistant tells you.

MCP clients use the same deploy, but a client with a `write` key deploys without asking anyone, so
treat such a key like a deploy credential. See
[The agent trust boundary](https://docs.beetl.io/concepts/agent-trust-boundary).

## Automations from chat

In chat, the assistant works on automations through the automation editor. Open **New automation**,
or an existing automation, and ask it to fill in the check, for example "check every morning that no
order in @orders has a negative amount, and list the offending order IDs". It writes the
instructions, starting queries and schedule into the form. Choose **Test automation** to try the
draft, then **Save automation** to keep it.

Running, pausing and deleting saved automations happens on the [Automations](https://docs.beetl.io/automations) page, or
from an MCP client with a `write` key.

## Ask for what you want

Specific requests get better results:

* Name the datasets and columns you mean, with `@` mentions where you can.
* Ask for one change at a time, such as "add a stage that drops cancelled orders", and check each
  result before the next.
* Ask for one stage per logical step, so you can preview every intermediate result.
* Ask it to preview a stage and show you the rows before you build on them.
* Ask it to explain the SQL it wrote before you save it.
* State the write mode you want. A pipeline the assistant creates replaces the whole destination
  table on every run (Overwrite) unless you ask for Append or Merge.

## Review before you save or deploy

* Each stage reads the sources and earlier stages you expect, and its preview shows the rows and
  types you want.
* The destination has the right dataset name, storage tier, write mode and partition columns. See
  [Write modes and partitioning](https://docs.beetl.io/pipelines/write-modes-and-partitioning).
* **Trigger on update** is on only for sources that should start runs, and the run mapping supplies
  every `run.*` value.
* The deploy card names the pipeline and write mode you expect before you choose Allow.

## Related

- [Chat and the assistant](https://docs.beetl.io/chat)

- [Builder tour](https://docs.beetl.io/pipelines/builder)

- [The agent trust boundary](https://docs.beetl.io/concepts/agent-trust-boundary)

- [Deploy and trigger](https://docs.beetl.io/pipelines/deploy-and-trigger)
