For AI assistants: this page as plain markdown is at https://docs.voicelogica.ai/raw/agent-configuration/sensitive-data.md, and https://docs.voicelogica.ai/llms.txt lists the docs by topic, one file each, small enough to read whole. Read those rather than this HTML page.
Sensitive data protection
Ce contenu n’est pas encore disponible dans votre langue.
Callers often say identifiers on the phone: ΑΜΚΑ, ΑΦΜ, IBAN, ID card numbers, card numbers. With sensitive-data protection on, the AI model never sees these numbers.
- The number is swapped for a placeholder such as
{{amka_1}}before the AI sees anything. - The agent says only the last four digits (“το ΑΜΚΑ που λήγει σε 0015”).
- Tools still get the real value. A CRM lookup by ΑΦΜ or a booking with ΑΜΚΑ works as before: the real value is filled in only when the tool runs.
- The full value is stored encrypted (AES-256-GCM, each value on its own). Only people you allow can show it, and every time they do, it is logged.
- CVV and PINs are never stored at all, not even encrypted.
Turn it on
Section titled “Turn it on”-
Open the agent → Recording & Privacy
-
Under Data retention policy, tick “Protect sensitive caller data” and save.
It applies from the next call. From a chat with the Voice Logica connector:
update_agent_settings, sectionai_disclosure,sensitiveDataProtection: true. -
Decide who may see the real values
Access control → a member → Calls → Reveal sensitive data. Company admins (who manage access) have it. Others get it only from someone who already holds it. Voice Logica staff never get it through their staff role.
What is protected
Section titled “What is protected”| Data | How it is recognised |
|---|---|
| ΑΜΚΑ | 11 digits, a real date of birth and a valid check digit |
| ΑΦΜ | 9 digits with a valid check digit |
| Personal Number (Προσωπικός Αριθμός) | 3 characters followed by a valid ΑΦΜ |
| IBAN (all countries) | IBAN check digits and the country’s length |
| Card number | Card network prefix and check digit |
| Cyprus tax ID (TIC) | 8 digits and a letter |
| ID card, passport, ΓΕΜΗ | Their format, when the word (ταυτότητα, διαβατήριο, ΓΕΜΗ) is said nearby |
| CVV, PIN, one-time codes | Right after a card number, or when “CVV”, “PIN” or “κωδικός” is said. Never stored |
Numbers that speech recognition got wrong are still caught. Sometimes “13 11 19…” comes out as a date or with a digit missing, so the check digit fails. If “ΑΜΚΑ”, “ΑΦΜ” or “κάρτα” is said in the same sentence, in the agent’s question, or in the caller’s next sentence (“σας έδωσα το ΑΜΚΑ”), a number of about the right length is protected anyway.
Spoken forms. Digits said one by one, Greek letters spelled out (“άλφα βήτα 123456”) and numbers split over two sentences are all joined before checking.
See a protected value
Section titled “See a protected value”- In the app. Open the call, then the Transcript. Each value is a locked chip, ΑΜΚΑ •••• 0015. Show displays the full value for one minute. Without the permission, the chip stays masked.
- Hear the caller say it. Next to Show, ▶ plays the few seconds where the caller said the number. It’s useful when speech recognition may have got a digit wrong. The recording itself stays beeped. Only those seconds are kept, encrypted on their own, and they are deleted with the value and the call. Each play is in the audit log. The clip exists when the number’s exact position in the audio is known, which is the case for calls transcribed word by word.
- From an AI assistant (Claude, ChatGPT) through the connector. The
reveal_sensitive_datatool shows one value at a time and needs a reason. It also needs the company setting Company profile → Security → Allow reveal through AI assistants (MCP). That setting is off by default and only company admins can turn it on, because the value is then sent to that assistant. Withaudio: truethe assistant gets a listening link for you instead (valid 5 minutes); the audio itself is never sent to the AI. - Every reveal is in the audit log, with who, which call, the value type, the reason, and whether it was in the app or through an AI assistant. The value itself is never written to any log. The audit log is tamper-evident: its entries are chained cryptographically, so a removed or edited entry is detected.
Everything on one page
Section titled “Everything on one page”Account → Privacy (/profile/privacy) shows, for company admins and members who may reveal:
- which agents protect callers’ data, which values they protect and how long the values are kept;
- where real values are sent: workflows after the call, post-call webhooks, AI assistants;
- the access log: every reveal, audio play and real-value send, with who, when and why (exportable to CSV, never the value);
- the audit trail: Verify now recomputes your company’s chain and checks it against the latest public timestamp.
Callers can ask to have their data erased
Section titled “Callers can ask to have their data erased”Turn on the Data erasure requests tool on the agent (phone calls only). When a caller says “delete my data”, the agent confirms and files a GDPR erasure request for the caller’s own number, and tells them the company will handle it within one month.
Nothing is deleted during the call: caller ID can be faked. The request appears on Account → Privacy → Requests to erase data, where a company admin either:
- approves it: every call, contact, message and file of that number is erased, the same as Contacts → Erase person, and the request then keeps only the last three digits of the number; or
- rejects it, with a reason.
Every step is in the audit log.
Send the real value to your own systems after the call
Section titled “Send the real value to your own systems after the call”After the call, everything holds the placeholder: the transcript, the summary, and the call analysis (an analysis property that picked up the ΑΦΜ holds {{afm_1}}). When your CRM or ERP needs the real number, turn it on for that one place. It never goes to an AI.
In a workflow that runs when the call ends:
-
Open the workflow and click the Call Ends Trigger. Turn on Use real protected values.
-
Insert the value where you need it. In any field, open Insert variable → Protected caller data → ΑΦΜ inserts
{{protected.afm}}, the call’s first ΑΦΜ.{{afm_2}}is the second one, if the caller gave two. Analysis properties and the transcript work too: they carry the real value in these steps.
- Steps that get the real value: API calls, integrations (Soft1, Entersoft, HubSpot, Salesforce and the rest), bookings, email, SMS, Viber, Google Sheets and Docs, code, and conditions (if / switch / filter).
- Steps that never get it: AI completion, AI response, managed agent, Google search, and steps that start another AI call or transfer. They always see
{{afm_1}}. - What a step returns is protected again, so a CRM reply that repeats the ΑΦΜ never reaches a later AI step.
- Every use is in the audit log: which values, which workflow, which steps. The workflow’s logs show the placeholder.
- Only members who may reveal sensitive data can turn the switch on. A test run uses the real values only for such a member.
In the post-call webhook: Agent → Notifications → Webhook → Advanced → Send real protected values. The same rules apply: off by default, audited every time, and only members who may reveal can turn it on.
CVV and PIN are never stored, so they are never available after the call.
Good to know
Section titled “Good to know”- Transcripts, call analysis, summaries and emails contain the placeholder, never the number. Workflows and the webhook do too, unless you turned on real values for them (above).
- The recording is cleaned too. Right after the call, wherever the caller said a protected value, their side of the recording is replaced by a soft beep. The agent’s side and the rest of the call are untouched. Only the moment the number was said is beeped. For about a minute after the call ends, until this runs, the recording still holds the number.
- Speech-to-speech (realtime) agents hear the raw audio, so this protection does not apply to them.
- If the caller names the type only afterwards (“that was my ΑΜΚΑ”), the AI has already seen the number once. The stored transcript and everything after it are still protected.
See also Recording & Privacy and AI Act disclosure.
Frequently asked questions
Section titled “Frequently asked questions”How do I stop the AI from seeing the ΑΜΚΑ, ΑΦΜ or card numbers my callers give?
Open the agent → Recording & Privacy, tick Protect sensitive caller data under Data retention policy, and save. From the next call, these numbers are replaced by a placeholder such as {{amka_1}} before the AI model sees anything, and the agent says only the last four digits.
Can my Voice Logica agent still look up a customer by ΑΦΜ when sensitive-data protection is on?
Yes. Tools still get the real value: a CRM lookup by ΑΦΜ or a booking with ΑΜΚΑ works as before, because the real value is filled in only when the tool runs. The AI model itself only ever sees the placeholder.
How do I see the full ΑΜΚΑ or ΑΦΜ that a caller gave my agent?
Open the call, then the Transcript: each protected value is a locked chip such as ΑΜΚΑ •••• 0015, and Show displays the full value for one minute. You need the Calls → Reveal sensitive data permission, which company admins have. Every reveal is written to the audit log with who, which call and the reason.
Does the call recording still contain the card number or ΑΜΚΑ my caller said?
No. Right after the call, wherever the caller said a protected value, their side of the recording is replaced by a soft beep; the rest of the call is untouched. For about a minute after the call ends, until this runs, the recording still holds the number. CVV and PIN codes are never stored at all.
Does Voice Logica sensitive-data protection work with speech-to-speech (realtime) agents?
No. Speech-to-speech (realtime) agents hear the raw audio, so sensitive-data protection does not apply to them.
Can I send the real ΑΦΜ or ΑΜΚΑ to my CRM or ERP after the call?
Yes, for one place at a time. In a workflow that runs when the call ends, click the Call Ends Trigger and turn on Use real protected values; for the post-call webhook, go to Agent → Notifications → Webhook → Advanced → Send real protected values. Only non-AI steps such as API calls, integrations, bookings and email get the real value, every use is in the audit log, and only members who may reveal sensitive data can turn it on.
