Zodiac Tech CRM Docs

AI assistant

Ask plain questions and get answers from your own CRM data — plus AI follow-up agents that work leads for you.

admin manager Medium ⏱ 10 min Updated 2026-10-05

AI assistant

The AI Assistant lets you ask your CRM questions in plain language — "How many leads came in this week?", "Show me my overdue follow-ups", "Draft a WhatsApp follow-up for this lead." Behind the scenes it does not guess: it reads live numbers from your workspace's data through controlled tools, so the answer is the same number a report would show.

There are two AI features in this area:

  1. AI Assistant (this page) — you ask, it answers/does.
  2. AI Follow-up Agents — autonomous agents you enroll leads into (see below).

Who this is for

  • Managers and admins — this menu is shown to manager-and-above roles.

  • Sales teams — benefit from the AI-drafted emails and WhatsApp messages on Lead 360.

  • Difficulty: Medium

  • Time: 10 minutes

  • Prerequisites: The AI Assistant menu is visible to managers and above. Using a real LLM needs an AI provider key (see "Setup" below) — without one, the assistant degrades honestly instead of pretending.

Steps

1. Ask a question

  1. Open AI Assistant in the sidebar (/admin/ai-assistant).
  2. Type a question, for example:
    • "How many leads do we have and how many are new?"
    • "Which leads haven't been contacted yet?"
    • "What are my overdue follow-ups this week?"
    • "How is the team performing this month?"
    • "What did Meta ads produce last month?"

Expected result: an answer grounded in your data. Numbers come from live queries against your workspace — never a guess.

2. Ask it to do something

The assistant can also act, within your permissions:

  • Create a follow-up — "Create a follow-up for Ramesh tomorrow at 10am to discuss pricing."
  • Draft a WhatsApp message — it writes the draft; you approve and send it from the inbox.

Expected result: the follow-up appears in Follow-ups with the details you gave; drafts land ready to review, never sent behind your back.

Answers are scoped to your business The assistant is tenant-clamped: it can only see (and only report on) your workspace's data. It cannot cross into other businesses.

3. Know what it can do today

The assistant has a fixed set of skills (tools):

Skill What it answers/does
Dashboard metrics Leads, new leads, conversions, revenue summary.
Leads Search and list leads matching conditions.
Follow-ups Open/overdue tasks.
Call history Recent calls and outcomes.
Team performance Per-member activity and results.
Meta insights / campaigns Ad spend, CPL and campaign performance.
Create follow-up Writes a task to the CRM.
Draft WhatsApp message Produces a message draft for review.

Anything outside this list — the assistant says so rather than inventing an answer.

AI Follow-up Agents (autonomous mode)

An AI SDR agent is a configurable persona that follows up enrolled leads step by step: it decides what to do next for each enrolled lead and does one thing per cycle (for example, send a follow-up email), within hard guardrails.

4. Create an agent

  1. Open AI Follow-up Agents (same group in the sidebar, /admin/ai-sdr-agents).
  2. Click New agent and set:
    • Goal — Qualify (find out if they fit) or Book (get a meeting).
    • Channel — email, SMS or WhatsApp.
    • Persona and offer context — how it should sound and what it may offer.
    • Guardrails: maximum touches (1–20, default 4), minimum hours between touches (default 24), and whether it must respect business hours.
    • Active — off until you switch it on.
  3. Save.

Expected result: the agent appears in the list, inactive. Nothing happens until you enroll leads.

5. Enroll a lead

  1. Open a lead's Lead 360 view and use Enroll AI SDR (or bulk-enroll from All Leads).

Expected result: the enrollment is created. Every 15 minutes a worker lets the agent take one step per enrolled lead — a message, a wait, or a stop — always inside its guardrails. Leads who opted out or that the agent's rules say are unreachable are skipped, and enrolling twice is a no-op.

6. Setup: connect an AI provider

  1. Go to Settings → AI.
  2. Choose the provider (OpenAI or DeepSeek), paste the API key, and pick the model (default: DeepSeek deepseek-v4-flash). Keys are stored encrypted and shown masked.

Expected result: the assistant upgrades from deterministic summaries to a conversational model. Note that even with a model connected, every number still comes from live tool queries — the model never invents figures.

Without a key the AI is not "broken" With no AI key configured, the assistant answers with deterministic summaries and tells you plainly that AI answers are not set up yet. That is honest behaviour, not an error. Ask your platform admin to add a key under Settings → AI (or platform AI settings).

Expected result

You can interrogate your pipeline in plain language and get real numbers; and AI follow-up agents can take over repetitive touch sequences without ever sending something a human cannot audit (all activity is visible on the lead's timeline).

Common mistakes

  • Expecting the LLM to compute numbers. It does not; tools query the database. If a number looks wrong, check the underlying report/data, not the prose.
  • Turning an agent on with no guardrails. Start with the defaults (4 touches / 24 hours); raise limits deliberately.
  • Enrolling opted-out leads. The system blocks it by design — respect the signal.
  • Forgetting billing. AI calls consume your provider credits; usage is visible in the platform's AI settings for admins.

Troubleshooting

Symptom Fix
"AI answers are not set up yet" No provider key — Settings → AI.
Assistant answers look generic No key configured (deterministic fallback) or the question is outside its tools.
Agent did nothing after enrolling The agent is inactive, the enrollment is outside business hours/interval, or the lead is unreachable/opted out. The next 15-minute cycle will progress it.
AI draft email won't generate The AI provider is not configured, or mail logging is on; drafts are generated by AiEmailComposerService when a provider is available.

Technical details

  • Assistant page: App\Filament\Pages\AiAssistant (slug ai-assistant, manager-or-above). Services: App\Services\Ai\Assistant\TenantAssistantService and TenantAssistantTools (the tools listed above). Provider resolution via AiChatClient::resolveProvider — tenant settings.ai.* → platform AiSettings → environment.
  • Agents: App\Filament\Resources\AiSdrAgentResource (plan feature ai_sdr); model enrollment via AiSdrEnrollment; processing ProcessAiSdrEnrollments runs every 15 minutes (one decision/action per enrollment per tick). Guards: ai_sdr_opted_out_at, AiSdrAgent::canReach, idempotent enrollment.
  • Email drafting on leads: AiEmailComposerService; enrichment uses the EnrichLead job (needs the lead's email).

Was this page helpful?