Home / Synthetic data

Data that behaves like production. Without production data.

Pipewright learns from the real rows where they live, with no outbound calls. Keys and personal data are never learned. Every candidate is scored for fidelity, for how well a model trained on it does on real data, and against privacy attacks, and one is published only when every gate passes.

Synthetic data

Real data stays where it is. Realistic data goes where the work is.

Development, testing, demos and partners all need data that behaves like production, and production data may not go there. Pipewright learns synthetic data inside the environment that holds the real data, and publishes it only when it is close enough to be useful and far enough to be safe.

What ML teams live with today (and what it costs)

Weeks waiting for an extract

Every request for data outside production is a ticket, an exception and an access review. Projects start late, or start on whatever sample someone made by hand.

Masked copies that still identify people

Removing names leaves the rest of the record intact. A rare combination of age, postcode and tenure can still point to one customer, and nobody measured it.

No record of what left

When data protection asks what was shared, with whom and how close it was to real records, the answer is in emails and memory.

One switch in the use case. Gated before anyone sees a row.

Off until a team needs it. Turn it on in YAML, per environment, and Pipewright runs its own synthetic pipeline: no code to write, released and pinned like any other.

  • Learned inside your environment: the engine runs in your project, inside your perimeter, with no outbound calls
  • Keys and personal data are never learned: they get new values from rules, and a real holdout is kept back
  • Scored three ways: fidelity, utility (a model trained on synthetic data, tested on real) and privacy attacks
  • Several candidates, the best that passes: or nothing is published at all
  • Purpose sets the bar: test data stays in the organisation; sharing gets stricter privacy gates
  • Or no real data at all: rows from the data contract alone, for CI and demos
churn · test-data · 5,000 rows
8 of 8 gates pass
fidelity0.952  at least 0.92pass
utility0.016 AUC lost  at most 0.05pass
exact copies0  none allowedpass
distance1.14 × real-to-real  at least 0.9pass
too close3.2%  at most 10%pass
singling out0.16  at most 0.3pass
linkability0.01  at most 0.1pass
inference0.08  at most 0.5pass
A real run from our tests, on Kubeflow Pipelines in a private GKE cluster. Released to a second environment with approval from ml-leads and data-protection; the fidelity floor of 0.92 is that environment's own policy.
Core

Related tables and histories

Customers with their feature tables and event sequences, learned together. Keys match across every table, each history keeps its timing against the cut-off, and the gates are measured on the same point-in-time join training uses.

entity + childrensequences0 orphan rows
Enterprise

Drafted with Gemini, decided by a person

Gemini on Vertex AI, in your own project, reads a profile of the table (names, types, counts, never a row) and drafts the settings with a reason for each. Pipewright validates the draft and leaves it switched off for review.

$ pipewright synthetic-draft --usecase churn
drafted: config/synthetic.draft.yaml (off)
Enterprise

Released like a model is promoted

Moving synthetic data to another environment needs every required approver group first, then the gates again under that environment's rules. Only that run's rows move, and an evidence pack records it, write-once.

SY-01 to SY-07policy per environmentFleet View page
Start on day one

Teams build and test on realistic data from the first sprint, instead of waiting for an extract.

Fewer exceptions to review

Data protection sets the rules once per environment, instead of judging every request.

Test what production will see

Pipelines, edge cases and CI run on data with production's shape, gaps and relationships.

Proof, not promises

Every release carries its scores, its approvers and where the rows went.

In the core

One switch in the use case.

Learning and gating synthetic data is open source. Releasing it between environments, with approvers and evidence, is Enterprise.