Skip to main content

LLM Data Deanonymizer

Restore the original values that the LLM Data Anonymizer replaced with placeholders.

What it does

Takes a text that contains anonymizer placeholders and replaces each placeholder with the original value it was mapped to during the earlier anonymization step. The mapping was preserved in memory, so this step needs no manual configuration of what maps to what.

What you configure

FieldWhat it controlsRequiredNotes
Input text (memory input)The text containing placeholders.requiredTypically the response from an AI step that processed the anonymized text.
Output text (memory output)Where the deanonymized version is written.requiredSafe to send to the user or to an external system.
Restrict to typesLimit deanonymization to specific categories (names, emails, phones, postal addresses, locations, social handles, custom).optionalUse when you want to keep some placeholders in the final output — for example restore names but keep email addresses masked.

📷 SCREENSHOT: The Deanonymizer step with the input/output fields and the optional category restriction.

Example scenario

Personalize an AI-generated reply. A workflow anonymizes a customer email, sends the anonymized text to an external AI to generate a draft reply, and then deanonymizes the draft so that the customer is addressed by name. The final email goes out without the external AI ever seeing the customer's name.

Recommendations

  • ✅ Place this step right before the output (email send, HTTP response, file write). The deanonymized text should live as briefly as possible in memory.
  • ✅ Use restrict to types when partial anonymization is the goal — for example to restore the customer's name but keep their email address masked from the support agent.
  • ⚠️ The deanonymizer can only restore values that the LLM Data Anonymizer earlier produced in the same run. There is no cross-run mapping store.
  • ❌ Do not run a deanonymizer on text that did not come through an anonymizer. It will simply pass through unchanged, but it adds latency and confusion to the workflow.

What to do next