Insights

Anonymization Isn't a Project. It's a Pipeline

Why treating data anonymization as a one-time cleanup breaks the moment your AI pipeline changes, and what real-time, policy-based data scrubbing looks like instead.
Amy Ryu
by
Amy Ryu
July 30, 2026
ON THIS PAGE
What payment methods do you accept?
What payment methods do you accept?
Automate data protection at scale with Teleskope
Book a Demo
Book a Demo

When a data engineering team decides to anonymize sensitive data before it reaches an AI pipeline, the first instinct is almost always the same: write a script, run it once, ship it. It works, right up until someone adds a new source, a new field, or a new destination, and the anonymization step has to be found, understood, and patched by whoever's on call that week.

That's the part nobody budgets for. Anonymization gets treated like a project with an end date, when the pipelines it protects don't have one. Data keeps flowing. Every new batch is a new opportunity for the same sensitive values to slip through a rule that was correct the day it was written and stale three months later.

We've watched this play out with a compliance-automation team that came to us mid-build. They were collecting evidence from source control, HR systems, and cloud tools, storing it as raw JSON and LLM-generated summaries in SQL and data storage. That data could contain PII, so it had to be handled before it landed. Their first idea was JSON-level encryption. Partway through evaluating it, they reframed the problem themselves: what they actually needed wasn't encryption, it was policy-based data scrubbing of sensitive values, inline, before the write. That's a different architecture, and it's the one we'd built.

{{banner-large="/banners"}}

What a fast internal build gets right, and what it skips

This was a genuine build-vs-buy decision, not a vendor bake-off. The team had strong data engineers who could have shipped a working scrubber in a sprint or two. They didn't, because they'd already seen what a rushed version leaves out:

Policy nuance. A blind find-and-replace treats every sensitive-looking value the same way. A policy-based approach decides what happens to a value based on what it actually is and where it's headed: driven by classification, not a regex that fires the same way on a 1099 and a marketing spreadsheet.

Referential integrity. If the same customer ID or SSN appears twenty times across a dataset, a naive scrub either breaks the relationship (twenty different placeholders) or leaves it too recognizable (the same literal value, unmasked, twenty times). It needs to resolve to the same placeholder every time: structure preserved, value gone.

Audit logging. The first version of an internal tool almost never logs what it changed and why. The tenth version, built under a compliance deadline, usually does, after someone asks for it during an audit.

None of these are hard problems individually. They're just the ones that get cut when "get something working" is the deadline, and they're exactly the ones that turn into incidents later.

{{cs-1="/banners"}}

Inline, not after the fact

The distinction that matters most isn't redaction versus encryption. It's when data scrubbing happens relative to the write.

A batch job that runs nightly against a data lake is still useful, but it leaves a window: everything written since the last run sits there unscrubbed until the next pass. An inline API closes that window entirely. Scrub API sits in the data path itself (before a write to SQL and data storage, inside a Databricks job, in front of a downstream system like a ticketing tool) and resolves each value synchronously, as part of the request. The data is never at rest anywhere in an unscrubbed state, because there's no "later" for it to wait for.

Anonymization Isn't a Project. It's a Pipeline.

It supports three output modes depending on what the destination needs: format-preserving (a realistic replacement value that keeps the same shape: useful when downstream systems validate format), fully redacted (a placeholder, when the value itself has no further use), or roles removed (the field dropped entirely). All three carry referential integrity: the same input always resolves to the same output, so joins and relationships in the data survive the transformation.

{{cs-2="/banners"}}

What this looks like when it's real

The compliance-automation team's evaluation came down to speed and completeness. They had the engineering capacity to build something; what they didn't want to spend was the time re-discovering, one incident at a time, which layers actually mattered. 

They deployed Teleskope's managed Scrub API into their own AWS account, behind two IAM roles and their existing Google SSO: no crawling required for the scope they needed. It closed cleanly as a build-vs-buy win: faster to market than the internal alternative, with the policy control, referential integrity, and audit trail a rushed build tends to leave for later.

This pattern shows up across the market right now. Security and data teams at different companies, in different industries, are independently landing on the same requirement: real-time, code-level data scrubbing built into the pipeline itself, not a manual step bolted on after the fact. 

None of that is surprising once you separate the two questions teams actually have. "Is our data exposed to AI risk?" is a question most security and data teams already have an answer to. "Can we act on that before the data moves, not after?" is the one that's still mostly answered with a script somebody owns informally and nobody's tested against the next schema change.

If you're maintaining that script today, you're maintaining infrastructure, not solving the security problem it was supposed to solve.

FAQ

Can we still use anonymization if our downstream systems need to validate data format?

arrow down

Yes. Format-preserving replacement generates realistic replacement values that keep the same shape as the original (an SSN still looks like an SSN). This lets downstream systems validate format without breaking, while the actual sensitive value is gone. You also have the option to fully redact or drop the field entirely, depending on what that particular destination needs.

What happens to data relationships when we scrub sensitive values?

arrow down

Referential integrity is preserved. The same sensitive value always resolves to the same replacement, whether it appears once or twenty times across your dataset. This means joins and relationships survive the scrubbing. A customer ID appearing across multiple tables remains consistent after anonymization.

Why can't we just run anonymization once instead of building it into the pipeline?

arrow down

One-time anonymization leaves gaps every time you change something: a new data source, a new field, a new destination. Rules that worked on day one go stale as the pipeline grows. Inline scrubbing is applied to every piece of data as it moves through, so there's no window where unscrubbed data sits at rest waiting for the next batch job.

How long does internal anonymization usually take to break?

arrow down

Most hand-built scripts work until someone adds a new source or field. Then the script has to be found, understood, and patched, often by whoever's on call that week. The actual failure is usually discovered as an incident rather than caught in planning. A policy-based approach handles new sources automatically by applying the same classification rules, so the process scales as your pipeline does.

Do we need a full data crawl to implement inline data scrubbing?

arrow down

Not necessarily. It depends on the architecture. Inline scrubbing works by sitting in the data path itself (before a write, inside a job, in front of a downstream system), so it processes data as it moves rather than scanning stored data first. This means faster deployment and no need to catalog everything upfront.

Continue Reading