AI Assistant
Owlat's multi-turn, streaming, tool-calling AI assistant — a private chat surface that can search your workspace and draft copy, plus @assistant replies inside team chat.
The AI assistant is a conversational helper that can search your workspace's own data — knowledge, files, contacts, templates, and campaigns — and draft email and campaign copy on request. Unlike a one-shot search box, it holds a multi-turn conversation, streams its answer as it writes, and shows you which tools it used. It lives at Dashboard → Assistant (/dashboard/assistant), and it can also be summoned inside Team Chat with @assistant.
The assistant is gated by the ai.assistant feature flag (which requires the master ai flag and a configured LLM provider) and is off by default. An owner or admin enables it under Feature Flags. The @assistant mention in team chat additionally requires the chat flag.
The personal assistant
/dashboard/assistant is a private, ChatGPT-style surface. Each conversation belongs to you — no other team member can see your conversations, and you can keep several going at once (one per topic). Start a new one with New chat, delete conversations from the list, and pick up an old thread any time.
As the assistant answers, its reply streams in token by token. If it needs to look something up it calls a tool first; you'll see a collapsible card showing which tool ran (e.g. Searched knowledge) before the answer continues. Press Stop to end a reply early — whatever has streamed so far is kept.
What the assistant can do
The assistant has a fixed set of read-and-draft tools. It can find and reason about anything you could see, and it can write drafts for you to use — but it can never send mail, change a contact, or modify any workspace state on its own.
| Tool | What it does |
|---|---|
| Search knowledge | Hybrid search over the Knowledge Graph — facts, decisions, and preferences extracted from your conversations. |
| Search files | Semantic search over your uploaded Files. |
| Search workspace | Full-text lookup of contacts, email templates, transactional emails, and campaigns. |
| Campaign / email stats | Delivery, open, click, bounce, and unsubscribe numbers for a campaign or over a recent window. |
| Draft email reply | Writes a professional email to a contact from your instructions — returned as text for you to review and send yourself. |
| Draft campaign copy | Writes campaign subject + body from a brief — returned as text. |
If the tools surface nothing relevant, the assistant says so rather than inventing an answer.
@assistant in team chat
In any channel or DM, mention @assistant to bring the AI into the conversation. It reads the recent messages in the room for context, may call the same tools, and posts a streamed reply that everyone in the room can see. Use it to summarize a thread, pull up a number, or draft a reply together. The assistant only responds when it is explicitly mentioned — it never joins a human conversation on its own.
Privacy & safety
- Personal conversations are private to their owner;
@assistantreplies in a room are visible to that room's members, like any other message. - The assistant reads your organization's data org-wide (the same trusted-member scope used across Owlat's AI features). Every tool runs with that scope — it cannot reach data outside your workspace.
- Retrieved content is treated as data, never instructions. Text pulled from emails, files, or contact records is scanned for prompt-injection attempts and withheld before it reaches the model, so a malicious document can't hijack the assistant.
- The draft tools only return text. Nothing the assistant does sends an email or writes to your data — you stay in control of every action.
- Per-conversation token usage and model are recorded so AI spend stays visible under your existing usage reporting. A per-turn tool-step cap and a per-user rate limit keep runaway loops in check.
The assistant uses whatever LLM provider you've configured for Owlat (OpenAI, OpenRouter, a local Ollama model, or an OpenAI-compatible Claude proxy). Tool-calling requires a model that supports function calling. See Feature Flags for provider configuration.