tenant-adminUpdated 2026-04-27

Configure your project agent

What this covers

Every Tessallite project can carry an embedded conversational agent. The agent answers questions in natural language by translating them into queries against the project's published models. This article explains what the agent is, when it is the right tool, and how to configure it without weakening the project's safety, brand, and observability posture.

What the agent is, and what it is not

The agent is a thin orchestration layer sitting on top of two LLM calls and the existing semantic engine. The first LLM (the answer model) reads the project policy plus the user's question, then emits a structured tool call: either a query plan, a clarification, or a refusal. The semantic engine validates and executes the query plan against the allow-listed models. A narration step turns the rows into prose. A second LLM (the judge) scores the final answer against a rubric.

The agent is not a free-form chatbot. It cannot invent measures, query unpublished models, return rows that violate row-level security, or act outside the project policy. Every answer is grounded in a deterministic query — the LLM chooses what to ask, the engine controls how the data is returned.

When to enable the agent — and when not to

Enable it when:

Hold off when:

The configuration surface

Configuration lives in the project drawer, opened from Tenant Administration → Projects by clicking the gear icon on the project row. The drawer carries nine tabs; seven of them drive the agent. Each agent tab carries one Save button at the bottom that persists the entire agent record in a single call to PUT /api/v1/projects/{id}/agent/config.

Conversational agent — Identity & Tone tab on the seed acme-demo project.

General

Identity & Tone

Knowledge

Safety

LLM & Judge

Webhook

Retention

Models and routing

The allow-list and per-model context live on the project drawer. Set the allow-list on the LLM & Judge tab (checkboxes for each published model) and edit per-model context from the Knowledge tab (Edit context button next to each allow-listed model).

Project drawer — LLM & Judge tab with allow-list and model pickers.

A worked example: enabling the agent on the demo project

This walkthrough assumes the bundled acme-demo tenant. The exact menu wording matches the live UI.

  1. Sign in as an admin and open Tenant Administration → Projects.
  2. On the project1 row, click the gear icon to open the project drawer.
  3. LLM Configurations tab: confirm there is at least one bundle (e.g. "OpenAI · gpt-4o"). Add one if the list is empty.
  4. LLM & Judge tab: tick the checkboxes for modelx and modely in the allow-list. Pick the OpenAI bundle as the Answer LLM and the Judge LLM. Pick the bundled "Acme finance rubric"; leave mode on Async; visibility on Transparent.
  5. Identity & Tone tab: set the display name to "Acme Insights"; paste a one-paragraph project brief describing the e-commerce domain. In Brand guidelines, add banned: just kidding (so the agent does not slip into casual asides) and voice: Acme Insights — figures live as of last refresh.
  6. Safety tab: add at least one line to the safety policy (e.g. "individual employee salaries"). The API requires a non-empty safety policy to enable.
  7. General tab: switch Enable conversational agent on.
  8. Click Save. Navigate to the Explorer and open the Chat button. Send "What were sales last month?". You should see a streamed answer with the route badge, citations, and the judge verdict.

If the judge verdict comes back "fail", read the reasoning column on the Metrics → Recent calibration table and refine the rubric. See Write a judge rubric for how to iterate.

Common pitfalls

Operating the agent

Once enabled, the agent earns its keep through three feedback loops:

Related reading