Fail-Safe PII Redaction in Elixir
Filter by Value, Not by Path In this post, I use the example of a parcel-shipping gateway integrating with multiple carriers. This example is purely hypothetical and chosen to clearly illustrate the technical idea. Integrating with N shipping carriers often means dealing with N different JSON (if you’re lucky!) responses. Each carrier’s responses can sprinkle customer PII into your logs—until your CISO sees it. Most teams try to predict where the PII will be: "recipient.email" for Carrier A "ship_to.contact.email" for Carrier B "error.stacktrace[0].ctx.email" when Carrier C blows up

Filter by Value, Not by Path
In this post, I use the example of a parcel-shipping gateway integrating with multiple carriers.
This example is purely hypothetical and chosen to clearly illustrate the technical idea.
Integrating with N shipping carriers often means dealing with N different JSON (if you’re lucky!) responses.
Each carrier’s responses can sprinkle customer PII into your logs—until your CISO sees it.
Most teams try to predict where the PII will be:
-
"recipient.email"
for Carrier A -
"ship_to.contact.email"
for Carrier B -
"error.stacktrace[0].ctx.email"
when Carrier C blows up