Skip to content

Using the AI Assistant

The AI Assistant is a project-scoped chat. Open the project, then click the AI tab alongside Home, Workflows, Tables, etc.

The tab is split into two parts: a conversation history list on the left, and a tabbed chat workspace on the right. Each conversation is its own tab, so you can keep several threads open at once.

Conversations persist, so they survive across sessions, browsers, and devices.

  1. Open the project’s AI tab
  2. A new chat tab is created automatically; click in the input box at the bottom
  3. Type your question and press Enter (or click Send)

The assistant streams its response back, including any tool calls it made along the way. Click + on the tab bar to start an additional conversation in parallel.

The history list on the left of the AI tab shows every conversation in this project for your user, most recent first.

To switch to a past conversation:

  1. Click the conversation in the history list
  2. The full transcript opens in a new chat tab (or the existing one if it’s already open)

To delete a conversation:

  1. Right-click the conversation in the history list
  2. Select Delete Thread

You can export the current chat — your prompts and the assistant’s replies, including tables, code blocks, and diagrams — to a PDF.

  1. Right-click anywhere in the conversation and choose Save as PDF
  2. Your browser’s print dialog opens with the conversation laid out as a printable page
  3. Choose Save as PDF as the destination and save the file

Every AI response shows the token usage for that turn — input tokens, output tokens, and a running total for the conversation. Use this to keep an eye on cost as you work.

The assistant decides on its own which tools to call and which documents to consult for each question. There are no toggles to choose what’s used; tool selection happens behind the scenes, based on your prompt and the conversation so far.

If the answer doesn’t use the tool you expected, rephrase the question or include the table, project, or document name explicitly.

On a project where an administrator has turned on Row Access, the assistant’s answers cover only the rows your security group is granted — the same rows you see anywhere else in PlaidCloud.

The assistant writes its own queries, and your grants are applied to each one before it runs. Where a question produces a query the grants cannot be applied to, the assistant tells you so and suggests what to ask for instead, rather than answering from data you are not cleared to see.

When your grants narrow one of those queries, the assistant is told so, and is instructed to treat what it found as your view rather than the whole table. It may say that your view is filtered, but not what is hidden, and it is told not to claim how many rows the table holds or that other values do not exist.

A table, step, workflow or dimension can be hidden from the Manager or Explorer role. When the assistant reads the project’s lists of tables, steps, workflows or dimensions, it sees only the ones your role shows, the same as the project’s own lists. It can still work with a table it has just made for you, and still finds a workflow you name exactly when you import into it, rather than telling you either one doesn’t exist. If a step your role hides reads or writes a table you ask about, the assistant can tell you a hidden step uses it, but not which step. Nothing is hidden from an Architect.

Under each answer, How Weave knows opens a panel showing what the assistant did to answer and how much of the answer rests on what it read:

  • What Weave did — each step it took, such as reading your project’s tables and columns or running a query.
  • Where it came from — each query it ran, which only reads data, with a note when row-level security limited the rows the query could read, and any table the answer names that you can open.
  • Written by AI — each sentence of the answer, marked:
    • Matched — every figure and name in the sentence also appears in what Weave read.
    • Unmatched — the sentence has a figure or name Weave couldn’t find in what it read. The AI may have calculated or rounded it, or it may be wrong, so check it before you use it.
    • Not checked — the sentence has no figures or names to look for.
  • What Weave didn’t check — including a query that failed, or an answer given without reading your project at all.

Weave marks the sentences without using AI, by looking for each figure and name in the results the assistant’s tools returned. A figure you typed in your question, or one the query itself contains, doesn’t count as evidence. Matched is not a guarantee: Weave doesn’t check that each figure is attached to the right name, whether it rose or fell, or that a query asked the right question, and a common figure can match by chance. A figure with a unit Weave can’t read, such as 10.5ms, leaves its sentence Unmatched.

The panel is kept with the conversation, so it’s still there when you reopen it. A fix-assistant reply taken from PlaidCloud’s catalog of known errors says so, and that it wasn’t written by AI.

You don’t have to split a task into separate messages. Ask for the whole thing at once and the assistant works through the steps in order, carrying the result of each into the next:

  • “Find a table with cost data, then show me a few rows from it” — locates the table, then queries it
  • “Which tables have margin data? Show me the rows where margin is negative” — finds the table, then filters it
  • “Import the sales file from the Demo Data account and chart the monthly totals” — imports the file, then draws the chart

The assistant also remembers the conversation, so you can follow up without repeating yourself. After it shows a table, “now show only the negative rows” or “draw that as a chart” continues from what’s already there.

Before it makes a change, the assistant tells you what it’s about to do and waits for your go-ahead rather than guessing. That covers importing a file, building a step, creating a project, workflow or dimension, copying a table, changing a table’s properties, adding or removing labels, and destructive operations such as dropping or deleting data. Nothing is written until you approve.

Your approval counts only in your very next reply. If you change the request instead, the assistant shows you the new version to approve rather than building the earlier one. Proposals name tables the way you do, never by internal id, and names with underscores, such as agg_freight_by_country, appear exactly as written in every AI chat, the expression assistant included.

The assistant can load a file from one of your project’s document accounts into a new table, without building a workflow step. Tell it the account, the path, and a name for the new table:

  • “Import /imports/customers.csv from the Demo Data account into a new table called Customers”

It first inspects the file and shows you the columns it detected, then waits for you to confirm before importing — your chance to catch a wrong file or an unexpected schema. Confirm, and it loads the table and reports the new table’s name, column count, and row count.

Nothing is created until you reply, and what runs is the plan you were shown rather than whatever was re-sent with your approval. If the assistant cannot pin something down — two tables share a name, or the account you gave does not exist — it asks instead of proposing a guess, so there is nothing to approve until it has an answer.

The assistant can build a step that reads one table — or looks each of its rows up in a second one — and writes the columns you want into another table. Say what you want in plain language:

  • “Add a step that totals claim amounts and claim counts by region for 2024, reading from Claims Cost by Line Region into Claims by Region”
  • “Build a step that filters the claims table to 2025 and keeps only the line, region, and amount columns”
  • “Create a step that looks each claim up in Rates on claim id and writes the rate alongside the amount”
  • “Add a column that multiplies amount by rate, stored as a number”

Between them these cover keeping, renaming, dropping and computing columns, writing a fixed value, setting a column’s type, filtering rows, grouping with totals, and looking each row up in a second table. Name your tables however you normally say them — the assistant matches on the name you use, and asks which you meant if two tables share one.

It always proposes before it builds, and nothing is created until you reply. The summary is the whole of what you are agreeing to, so it spells out every choice the step makes: the tables it reads, each column it writes and — where that column isn’t a straight copy — what it was renamed from, which table it was taken from, what it computes, what fixed value it holds; the filter on the rows going in and any filter on the rows coming out; whether the step groups and what it computes for each group; the table it writes into; the folder it files the step under; and whether it joins a workflow. If the proposal isn’t what you meant, say what to change and it proposes again — and if anything it described has moved in the meantime, it asks you to approve the new version rather than building the old one.

A column the step computes, and one you give a fixed value to, are stored as text unless you say otherwise. Text doesn’t fail when you calculate with it — it sorts 9 above 10 and totals nothing — so the summary says which columns have no type set, and you can ask for one.

When the step looks rows up in a second table, the summary also says what it matches on and what the match does to your rows:

  • The match itself drops nothing. Every row of the first table carries through it whether or not it found a match, with columns from the second table filled in where there is one and left blank where there isn’t. A filter or a grouping can still change what comes out — that is what the rest of this list is about.
  • A lookup never multiplies your rows. The second table is collapsed to one row per matching key before the join, so a key it holds twice cannot turn one of your rows into two.
  • Where the second table does hold a key more than once, each column is filled in on its own, taking the smallest of the matching values for that column. The values you get can therefore be a combination that appears in no single row of that table. The summary says how many keys this affects and how many there are, so you can see whether it arises in your data at all — and says so plainly when it could not check.
  • A filter runs after the lookup. A row that found no match has its second-table columns blank, so whether such rows survive depends on how your filter treats a blank.
  • If the step also groups, the output is one row per group rather than one per row you started with. Where you group on a column that came from the second table, the rows that found no match are grouped under a blank value for it — a blank groups like any other value rather than being skipped.

Ask for everything from both tables and the step would write two columns under the same name, which it cannot do; name the columns you want instead, saying which table each comes from where both carry the name.

The step can write into an existing table or a new one. When the table is new, the proposal says so and says where it will go, and the table and the step are created together only after you approve; if you don’t approve, neither exists. The table is rebuilt from scratch every time the step runs — whatever is in it beforehand is discarded, so point the step at a table that holds only its output rather than one holding data you need. The summary says this too, naming the table it will replace. New steps are left unattached unless you name a workflow, and attaching to one is part of what you approve rather than something added afterwards.

The assistant can draw a simple diagram to explain a process, a data flow, or how things relate — handy when a picture is clearer than a paragraph. Ask in plain language:

  • “Draw a flowchart of an ETL: extract, transform, load”
  • “Diagram how an order, a customer, and a line item relate”
  • “Show the approval steps as a sequence diagram”

The diagram renders inline in the response as a picture, with a short plain-language description alongside it. The assistant draws a wide range of types and picks whichever fits the request — flowcharts, sequence and state diagrams, entity-relationship and class diagrams, pie charts, bar and trend charts, Sankey flows, quadrant charts, Gantt and timeline schedules, user journeys, mind maps, and more. The assistant won’t restyle a diagram (custom colours, fonts, themes, or branding) — for styled, shareable visuals, build a Dashboard instead.

Every diagram arrives as a picture. If one occasionally came back as a block of diagram source code rather than an image, that no longer happens — whichever notation the assistant chooses, the response renders it.

If a diagram genuinely can’t be drawn, the response shows the underlying diagram text along with a brief “Couldn’t render this diagram.” note — rephrase or simplify your request and ask again.

The Expression Editor — used by Project Table, Calculate, Filter, and any other step that takes expressions — has the AI Assistant built in as a side panel.

  1. Open a workflow step that uses expressions
  2. Open the editor for the column you want to fill in
  3. The AI panel sits alongside the expression editor; ask it to draft, explain, or fix the expression
  4. Hover a suggested expression and open its menu to insert it at the cursor, append it, replace the editor’s contents, or copy it

The chat already has the column list and types from the current step, and the expression as it stands in the editor, so you can ask questions like “concatenate first_name and last_name with a space” or “fix this expression” without restating the schema or pasting the expression. Each message carries the editor’s text as it is at that moment, so after an edit, a follow-up question is about the edited version.

It also knows which lakehouse your project runs on. It suggests and checks the functions that lakehouse provides, and links to that lakehouse’s function reference, so the same request can give a different expression on a Databend project and a StarRocks one. Expression checks are available for Databend and StarRocks projects.

Every expression the assistant gives you is checked before you see it. If one breaks a rule the checker can judge from the expression alone — for example, a safe-divide guard such as div0 with a literal zero where the divisor belongs — the assistant withholds it and shows Expression withheld. with the reason in its place. Ask it to try again and it starts from that reason. The check does not judge column names, so a misspelled column is not caught here.