AI Act disclosure & transparency
Callstrike runs ethical AI phishing simulations that deliberately use synthetic content, synthesised voice, deepfake video, a simulated WhatsApp identity, and, on purpose, doesn't tell the target during the exercise (disclosing mid-test would defeat it). EU AI Act Article 50 requires that people be told they interacted with an AI system and that AI-generated or -manipulated content be identified as such. Callstrike meets this with three additive, non-generation-affecting controls: in-platform AI-content labels so the admin always sees what's synthetic, a post-simulation disclosure notice to the target after the exercise resolves, and an exportable Transparency Statement the deployer (your organization) can file as evidence. None of these change how a simulation is generated or conducted. They label, notify, and evidence what already happens.
Callstrike serves customers both inside and outside the EU, so nothing here is forced on non-EU use: the in-platform labels are always on (harmless context for any admin), but post-simulation disclosure is opt-in per campaign, off by default, with in-product guidance that EU deployers are strongly recommended to enable it.
Prerequisites
- In-platform labels: nothing to enable; they render automatically on every synthetic-content surface in the admin console.
- Post-simulation disclosure: a campaign in the builder, at the Post-simulation training step, where you can turn on the EU AI Act disclosure row.
- Transparency Statement: tenant-admin access to Settings → Compliance → Transparency. There's nothing to provision; the statement is generated on demand from disclosures already recorded.
How to use it
In-platform AI-content labels
No setup, open any synthetic-content surface (a template's voice selector, a deepfake video card or player, a WhatsApp impersonation profile, a call transcript) and a small "AI-generated" / "AI-manipulated" / "Impersonated (simulated)" pill is already there, with a hover/focus tooltip explaining it's synthetic content used for a controlled security-awareness exercise.
Post-simulation disclosure
- In the campaign builder's Post-simulation training step, find the EU AI Act disclosure row near the bottom of the outcome board.
- Open it and switch on Send a disclosure (default: off).
- Click into the subject or body text to edit the notice in place, the
editor starts from a sensible, Art. 50-aligned default and supports
{{first_name}},{{organization_name}}, and{{security_contact}}tokens that fill in per recipient. - Save the campaign and run it as normal. When each call resolves, eligible targets automatically receive the notice through the same channel as your other post-simulation follow-ups, and a timestamped disclosure record is kept for each person.
Transparency Statement
- Open Settings → Compliance → Transparency.
- Pick a reporting period (From / To; defaults to the last 90 days).
- Click Download statement (PDF) for the human-readable Art. 50 statement, or Export records (CSV) for the underlying disclosure records.
Configuration & options
| Option | What it does | Default | Notes |
|---|---|---|---|
| Send a disclosure | Enables/disables post-simulation disclosure for the campaign | Off | Opt-in per campaign, non-EU customers aren't forced into it. |
| Notice subject / body | The disclosure notice text sent to targets | A pre-approved Art. 50-aligned default (controlled-exercise framing, AI-content statement, guidance, contact) | Edited in place in the drawer; an unedited field falls through to the same compliant default the backend applies, so it's never blank. |
{{security_contact}} | Who the notice tells the target to contact | Tenant-level default | Fills in automatically per recipient. |
| Reporting period | Date range the Transparency Statement/CSV covers | Last 90 days | Start must be on or before end; both artifacts are generated for the same range. |
Under the hood, disclosure delivery also has a population setting (everyone actually subjected to the call, the Art. 50-recommended choice, versus only those who engaged) and a written-after-in-call toggle that suppresses the written notice when the target already got an in-call debrief. Both default sensibly (all-subjected; suppress the written duplicate after an in-call debrief) and aren't exposed as separate builder controls today; the drawer only surfaces the on/off switch and the notice text.
Gotchas & limitations
- In-platform labels are display-only. They don't change what content is generated or how a simulation runs; they're a labelling convention added on top of existing synthetic-content surfaces, and they're always shown regardless of whether post-simulation disclosure is enabled for any campaign.
- Disclosure is per-campaign and off by default. Turning it on for one campaign has no effect on any other campaign, past or future; check the toggle on each campaign that needs it.
- No disclosure without an actual call. Someone who wasn't reached (no call placed, or skipped before dispatch) never receives a disclosure and no record is created for them; the notice only ever reflects a real exercise.
- An in-call debrief can substitute for the written notice. If the target already got the in-call educator debrief on the call, the written disclosure is suppressed by default (the on-call disclosure already satisfies the obligation) and the record still notes the disclosure was delivered, via the call itself.
- The Transparency Statement only covers vishing today. The underlying disclosure record is modality-agnostic (built to represent voice-impersonation, deepfake video, and WhatsApp disclosures too), but only the vishing call-resolution path currently emits into it.
- The statement is truthful about what's built. It states the in-platform labelling control as live and watermarking/provenance as forthcoming; it never claims a control exists before it ships.
- The integrity attestation reflects a real check, not a rubber stamp. Generating the statement re-runs the tamper-evident audit hash-chain verification for your tenant; if the chain doesn't verify, the statement says so rather than asserting "verified."
- A period with no disclosures is not an error. You'll get a valid PDF stating zero disclosures for that period, and a CSV with just the header row, useful for evidencing the absence too.
- Everything is strictly tenant-scoped. Disclosure records, the statement, and the CSV never include another tenant's recipients or events.
Best practices
- If you operate in the EU (or any customer under Article 50), enable post-simulation disclosure on every campaign and leave the population at its default (everyone actually subjected). That's the Art. 50-recommended setting, and the in-product guidance calls this out wherever disclosure is configured.
- Review the default notice once and adjust the tone or contact if needed, but don't leave it blank expecting nothing to send, an enabled-but- unedited campaign still uses the compliant default, so there's no reason to over-customize just to "fill it in."
- Generate the Transparency Statement per reporting period you need to evidence (e.g. quarterly), rather than waiting until an auditor asks, it's read-only and safe to run any time.
- Keep the CSV as your machine-readable record for GRC tooling and the PDF as the narrative artifact to hand to a compliance reviewer or auditor, they cover the same underlying records at different levels of detail.
Troubleshooting / FAQ
Does turning on disclosure change how the call itself is conducted? No. Disclosure is entirely post-call; it doesn't alter the simulation, the AI voice, or the scoring of the outcome. It only decides whether (and what) a target hears afterwards, and records that it happened.
Why didn't a specific target get a disclosure? They either weren't actually subjected to the simulation (no call was placed for them), or your campaign's disclosure setting is off. If disclosure is on but the target only engaged partway and your campaign is set to the engaged-only population, someone who didn't engage won't get one either.
Will a target get two notices, one on the call and one by email? Only if you've configured it that way. By default, once an in-call debrief has disclosed on the call, the written notice is suppressed so the target isn't disclosed to twice; a disclosure record is created either way.
Why does the Transparency Statement say "not verified"? That means the tamper-evident audit hash-chain didn't verify cleanly for your tenant when the statement was generated; it's a truthful attestation, not a bug in the statement itself. It will never silently claim "verified" when the chain doesn't check out.
Can I get a per-campaign Transparency Statement instead of tenant-wide? Not currently. The statement covers your whole tenant over the date range you choose. Per-campaign statements are a possible future enhancement.