Wipes analysis records and audit log for one mailbox only. Mailbox credentials and config are untouched.
🏢 Reset tenant data
Select tenant
Wipes all analysis records and audit log for every mailbox in this tenant.
🔄 Reclassify Sender Types
Re-runs AI classification on all existing records that are still marked as unknown.
Uses the stored subject & AI summary — no email re-fetch needed.
Processes up to 200 records per run; click again if records remain.
🔗 Link Noise to Threads
Finds orphaned auto-reply, noise, and internal records (no thread link) and connects them to their thread primary via conversation_id — DB only, no email fetch.
Run this before re-assessing threads so the LLM sees the full conversation chronology, including OOO replies and internal notes.
🧠 Re-assess Threads
Re-runs the full thread intelligence assessment on thread primaries using data already in the DB — no email fetch required.
Open only (recommended) — skips threads already resolved or in a meeting, so correctly-closed threads are not disturbed.
Use All threads only after prompt changes that should update resolved threads too.
🔄 Re-analyse Outbound Emails
Re-runs AI classification on stored outbound emails using the updated prompt logic.
No Exchange connection needed — works entirely from saved email bodies.
Use this after a prompt change to reclassify existing records.
Lookback window
Tenant (optional)
Mailbox (optional)
⚠️ Global reset
Wipes all analysis data across every tenant. Mailboxes, users and settings are not affected.
System Backgrounds
Upload background images available to all tenants. JPG, PNG and WebP supported — max 8 MB.
Upload System Background
No system backgrounds uploaded yet.
🔌 Fintelligence — BI Connections
Configure the ERP/BI database connection for each tenant. Credentials are stored in the application database — never in config files.
Select Tenant
Connection Settings
Active Sessions
Currently logged in
Email
Tenant
Role
IP Address
Logged in
User Agent
Loading…
Login History
Email
Tenant
Role
IP Address
Logged in
Logged out
Duration
User Agent
Select a filter or load history
🧠 Crystal Memories
ID
Tenant
About
Memory
Tier
Expires
Created
Select a tenant to load memories
🔧 Crystal Tools
Tools are loaded from this table at runtime — toggle or edit without redeploying.
Disabled tools are hidden from Crystal's function-calling context.
Name
Description
Enabled
On calls
Approval
Loading…
🧪 Crystal Code Recipes
Reusable sandbox Python code recipes that Crystal has built or learned (`run_analysis_code`). Inspect, edit, add, or prune recipes.
Name
Description
Tags
Uses
Last Used
Actions
Loading…
🎭 Crystal Persona Editor
Persona sections are assembled in sort_order to build Crystal's system prompt. Changes take effect on the next conversation turn — no restart required.
Order
Key
Label
Channel
Active
Spoken
Actions
🧩 Product Term Map
Maps a customer's descriptive words to the catalogue code stems they refer to — so Crystal resolves "45cc open loop pump" or "orbital motor" into real products instead of dead-ending. Comma-separate multiple stems. Changes take effect on the next conversation — no restart needed.
Term (what a customer says)
Expands to (stems)
Kind
Note
Active
Actions
💡 Self-Memory Vault
Crystal proposes behavioral and identity rules after complex interactions or creator conversations. Approve rules to make them permanent; reject to discard; or author/edit one directly.
0 selected
🧬 Crystal Learning
How Crystal is learning her own efficient paths. Manual = the operations you give her;
Pathways = the efficient routes she distils from experience (a hint, never a script);
Trajectories = the raw judged runs behind them.
Learned Pathways
Operational Manual (canonical operations)
Recent Trajectories (judged runs)
Operation
📊 Sentience Logs
Time
Channel
Intent
Tools
Model
Latency
Router bypass
Error
📞 Crystal Usage
User
Tenant
Channels
Sessions
Messages
First used
Last used
Loading…
🏷 Pricelists
Upload pricelist (Excel .xlsx)
The supplier label is stored as the item's brand. Re-uploading updates existing items by brand + SKU. Zero-priced rows are skipped. A summary appears after upload.
Brand
SKU
Item
Price
Cur
Select a tenant
📄 Product Knowledge
Upload datasheets (PDF)
The part/model number is auto-detected from the filename. Text is extracted for Crystal to reference.
Add manual note (researched text)
Title
Model hint
Chars
Select a tenant
📄 Document Templates
Templates
Editor
Merge Fields
🧾 Quote Letterhead
All settings below drive the generated quotation PDF for this tenant.
Company identity
Colours (this tenant only)
Logos & badges
Upload your designed letterhead banner. When set, it renders full-width across the top of every document (invoices, quotes, job docs) and email — and the logo + company-text block below are hidden. Leave empty to use the logo + details instead.
Offices
Directors (one per line)
Banking details
Quote terms & numbering
📑 Generated Quotes
Quote #
Customer
Total
Source
Created
Select a tenant
✉️ Crystal Responses
When
From
Subject
Category
Decision
Quote
Select a tenant
🏷️ Plans & Pricing
What the platform sells: a plan and a seat count. Personal and Family carry no
modules — they get Crystal herself, memory, watch rules and multiple inboxes. Business
unlocks the ERP. Blank ceiling = unlimited. Caps write into the quota gate when a tenant is
provisioned. Crystal is premium — there is no free plan, so a plan cannot go Live at
R 0.00.
💲 Module Pricing
What each module SELLS for on the public signup page (/signup).
A module appears publicly only when it is priced and ticked Live — nothing is
offered at R0.00 by accident. Base price covers the included seats; extra users are charged
per seat above that.
Module
Base / month
Incl. seats
Per extra seat
Public description
Live
Loading…
Price check
📝 Signups
A signup creates an application, never a tenant. Provision creates the tenant, enables
the modules they bought (plus everything those depend on), creates their admin login and
emails the credentials, and adds them as a billed customer on a monthly profile.
When
Company
Contact
Modules
Seats
Billing
Monthly
Status
Loading…
New Persona Section
New Term
New Self-Memory Rule
New Memory
New Tool
On a live call she doesn't carry the step-by-step procedure — she's told what she can
help with, built from the groups of tools that are enabled AND on for voice. Leave
blank and she won't offer it unprompted; the tool still works when the engine needs it.
New Code Recipe
Departments
Name
Type
Status
Loading…
Add department
Modules
Each switch takes effect immediately — no save, no restart. A module with unmet
dependencies stays off in effect even when switched on; the Effective column
is the one that decides what the tenant can actually reach.
Module
Depends on
Effective
Granted
Loading…
New Tenant
Basic Info
Connector Defaults
This company's own domain(s), comma-separated. Senders from these are treated as internal staff (no auto-response). Leave blank to auto-derive from mailbox domains.
Crystal Identity (this tenant)
Overrides the platform default for THIS tenant only —
used in every prompt, email signature, chat and voice-call screen. Leave blank to inherit the
platform default set under Settings. Takes effect on the next conversation turn — no restart.
Clickable example prompts shown on this tenant's Crystal chat welcome screen — one per line. Make them relevant to what this tenant actually asks Crystal. Leave blank for generic defaults.
Crystal Auto-Response
Scope is set per mailbox. Which enquiry types Crystal may answer, and
whether she answers unknown senders, now live on each mailbox — a personal inbox and a
sales inbox need different answers. Set them under Mailboxes → Configure.
Off = only lightweight decision metadata is logged.
Analysis Settings
If set, this tenant's analyses use their own Gemini quota.
White-Label Branding
Hide "Built by Wolfatek" credit
Custom Domain & Links
Point this domain's DNS to this server. The login page will auto-brand.
Shown in the dashboard navigation for this tenant's users.
Microsoft 365 Access
Found in Azure Portal → Azure Active Directory → Overview → Tenant ID. This is the customer's Microsoft directory — not Wolfatek's.
Admin consent granted(tick after customer clicks the consent link and approves)
Admin consent link — share this with the customer's IT admin:
The customer's Global Admin must click this link and click Accept. Wolfatek's app will then be able to read their mailboxes.
New User
International format (+…) — used for WhatsApp alerts, and for Crystal's own row it is the number published in her email signature.
Delete user
You are about to permanently delete
. This cannot be undone.
Choose "Leave unassigned" to delete without reassigning — the records are kept, just
detached from any owner.
Inbox rules —
These run on the Exchange server before mail reaches the inbox. A rule that files
or deletes messages looks exactly like an email that never arrived.
Loading…
+ New filing rule
Filing only — move, mark read, stop processing. Rules that delete, forward or redirect
mail are deliberately not creatable here; make those in Outlook, deliberately.
Delete tenant permanently
Delete users permanently
Applies to every user in this batch. Choose "Leave unassigned" to delete without
reassigning — the records are kept, just detached from any owner.
Add Mailbox
Assignment
Select mailbox from tenant
Identity
Leave blank to use the tenant default.
For O365 bulk import, a user account is created for each selected mailbox.
Edit Mailbox
Identity
Assignment
The staff member whose personal mailbox this is.
Connector
Leave blank to use the tenant default. Not required for O365.
Only fill in to change the password.
The mailbox account password. Only fill in to set/change it.
When on, Crystal reads everything that arrives here and decides what to do with it. This switch is the only thing that turns her off entirely.
Loading capabilities…
This is how much rope she has — not a mute switch. Ticked types she answers herself.
Anything else, she still reads it and still replies: she either asks you first, or lets the
person know it's been seen and hands it to someone. Nobody gets silence.
Use What Crystal Ignores for mail that should get no reply at all.
A first-time enquirer counts as unknown — that's often the most valuable mail you get. Others still get an answer; she just checks with you first.
When she is less sure than this about what an email actually is, she asks rather than answering. Blank = 0.7.
Caps how many draft emails land in the review inbox each day. She still reads and still decides past the cap — she just stops mailing you drafts. Blank or 0 = no limit.
Only meaningful when the mode below is Live. Types listed here reach the customer;
everything else keeps drafting to the review address, so quotes can go live while support
is still learning. Normally set from Training Crystal rather than typed here.
Comma-separated. Mail to a distribution group carries the group in
the To line, never this mailbox — so without listing them here, a customer enquiry sent to
the group looks like she was merely CC’d and gets answered internally instead of to
the customer.
When she is addressed (in the To line, or spoken to by name —
“@Crystal, please confirm”), her answer goes to every recipient of the
original mail. Off = she answers the sender only, and the rest of the thread never
sees it.
A client mails a colleague and copies her: she is being kept in the
loop, not asked. Her answer goes to our staff on the thread and the sender is
excluded, so she never jumps into a client’s conversation. Naming her in the body
overrides this — that is being asked. Off = a CC is treated exactly like a To.
Comma-separated. The customer sees these addresses. Leave blank for none.
Comma-separated, invisible to the customer — how the team keeps oversight of what she sent.
Comma-separated. Preview mode only — required, or nothing is sent.
Bulk Create Users
Creating accounts for .
Passwords are auto-generated per user. Mailboxes already linked to a user are skipped.