Customer data
Catch customer data in a message before it’s sent to the wrong person.
Most leaks aren’t attacks. They’re a pasted order from the wrong ticket, an AI reply that pulled the wrong record, or details handed to someone who only says they’re family. Check outgoing content against who is allowed to see it.
A regex can’t tell whose data it is
Pattern matching finds emails and phone numbers. It can’t tell if the email belongs to the person you’re writing to, which is the whole question in support. Blocking every email address breaks normal replies; allowing them all lets the wrong-ticket mistake through.
Enforly evaluates the message with the recipient and the conversation, so “your address”, “someone else’s address”, and “your wife’s address, if she really is your wife” get different answers.
Where the check fits
One call between the step that prepares something and the step that sends, publishes, or runs it. Your code applies the decision.
See it decide
The same policy evaluated on three cases. Pick one and run the check to see which evidence it relies on.
Policy
Content may include personal data (email, phone, address, order history) only about the customer described in data.recipient. Never include details about any other person. If the reply shares someone else’s details because the recipient claims a relationship or permission that is only stated in the conversation, a person verifies it first.
data
{"recipient": {"name": "Lucía Gómez","email": "lucia@mail.com","address": "Av. Corrientes 1234"},"conversation": ["Can you send it to my usual address?"],"content": "Hi Lucía, we’ll ship your order to Av. Corrientes 1234, as you requested."}
Result
Why: The address in the reply is the recipient’s own.
Your code: Send the message.
Response JSON
{
"decision": "allow",
"allowed": true,
"violationProbability": 0.04,
"reviewProbability": 0.04,
"policyId": null,
"policyVersion": null,
"requestId": "req_7f3a…"
}Illustrative example. Real probabilities depend on your policy wording and the evidence you send.
allow · Own data
The address in the reply is the recipient’s own.
deny · Wrong customer
The reply names a different person, with their address and email. It looks like details pulled from another customer’s order.
review · Claimed relationship
The reply shares another person’s order and address. The recipient may be her husband, but that relationship is only claimed in the chat.
Combine it with what you already have
Keep cheap, deterministic checks where they work best, and use Enforly for the judgment calls:
- Use regex or a library to detect card numbers and secrets before anything else.
- Use Enforly to decide whether the personal data present is appropriate for this recipient and purpose.
- Use your DLP or access control tools for enforcement across your whole organization.
Set it up
- 1
Define who may see what
Write the rule in terms of the recipient: their own data is fine, other people’s is not, claimed permissions get verified.
- 2
Send content with its context
Include who the recipient is and the recent conversation, not your whole database.
- 3
Block or ask before it leaves
On
deny, block and explain. Onreview, ask a teammate to verify.
import { Enforly } from '@enforly/sdk'
const guard = new Enforly({ apiKey: process.env.ENFORLY_API_KEY })
const result = await guard.check({
policyId: CUSTOMER_DATA_POLICY_ID,
data: {
recipient: { name: ticket.customerName, email: ticket.email, address: ticket.address },
conversation: ticket.messages.slice(-5).map(m => m.text),
content: reply,
},
})
if (!result.allowed) return showWarning(result.decision, result.requestId)
await helpdesk.reply(ticket.id, reply)Full request and response fields are in the API reference. Using a coding agent? Point it to Build with AI.
What Enforly doesn’t do
Enforly evaluates the information you send and returns a decision. It doesn’t run operations, and it doesn’t guarantee safety or compliance on its own.
- Enforly is not a DLP suite. It doesn’t scan your storage, redact text, or enforce access across your organization.
- It evaluates what you send. If deciding whose data it is depends on a record, include that record.
- Enforly doesn’t keep check data, but it does send it to TypeSafe AI for evaluation. Review that against your own data obligations.
Questions
Does Enforly store the messages I check?
No. It keeps the decision and request ID in your activity log, not the data. Check content is sent to TypeSafe AI for evaluation.
Can it redact the data instead of blocking?
No. It returns a decision. You can redact with your own code and check the redacted version again.
Related
Try this policy on your own data.
Copy the policy above, add your real examples, and see the decision. 200 free checks per month, no credit card.