CT-AI Security & PII
CT-AI processes call records, device data, and contact information to answer your questions. This page explains how sensitive data is handled before it reaches the LLM, what gets logged, and how administrators control privacy settings.
How PII Redaction Works
CT-AI applies a redaction pipeline before any data is sent to the LLM provider. The pipeline runs inside Call Telemetry -- the LLM only sees redacted values.
Data flow:
- User asks a question (e.g., "Who called 5551234 yesterday?")
- CT-AI retrieves matching data from the Call Telemetry database
- The PII redaction pipeline processes the data based on your org's policy
- Redacted data is sent to the LLM as tool context
- The LLM generates a response using redacted values
- The response is streamed back to the user
The user always sees the original (unredacted) data in the Call Telemetry UI. Redaction only affects what the external LLM provider receives.
Per-Org PII Policy Settings
Administrators configure PII redaction under Settings > AI > Privacy. Three independent toggles control what gets redacted:
mask_phone_numbers
When enabled, phone numbers are masked before being sent to the LLM. The last 4 digits are preserved for context.
| Original | Redacted |
|---|---|
15125551234 | 1512***1234 |
+442071234567 | +4420***4567 |
mask_caller_names
When enabled, caller and callee names are replaced with consistent aliases. The same person always gets the same alias within a conversation, so the LLM can still reason about patterns.
| Original | Redacted |
|---|---|
| John Smith | Caller A |
| Jane Doe | Caller B |
mask_contact_info
When enabled, supplementary contact details are stripped before LLM processing:
- Email addresses
- Department names
- Company names
- Physical addresses
Ollama Exception
When your organization uses Ollama as the LLM provider, all inference runs on your own infrastructure. No data leaves your network.
In this configuration, PII redaction is still applied by default but administrators can safely relax the redaction policy since there is no external data transfer. This is useful for environments that need full-fidelity AI responses without masking.
Audit Ledger
Every CT-AI interaction is recorded in a three-table audit ledger:
| Table | Records |
|---|---|
| ai_requests | Each chat request: user, org, timestamp, conversation ID, provider, model |
| ai_tool_calls | Each tool invocation: tool name, arguments (redacted), result summary, duration |
| ai_usage | Token counts: prompt tokens, completion tokens, total tokens, estimated cost |
What is logged
- User identity -- who asked the question
- Timestamps -- when each request and tool call occurred
- Tool activity -- which capabilities were invoked and their arguments (after PII redaction)
- Token usage -- prompt and completion token counts per request
- Provider and model -- which LLM handled the request
What is NOT logged
- Full LLM responses -- response content is streamed to the user but not persisted in the audit ledger
- Raw (unredacted) data -- the audit ledger stores redacted versions of tool arguments
Retention policy
Audit records are automatically purged after 90 days by default. Administrators can adjust this under Settings > AI > Privacy.