How It Works

Synthetic data that behaves like real data

How Synthpylon learns your schema's statistical fingerprint and generates faithful synthetic records: the four-step pipeline from ingestion to export, the privacy model, and the API.

Four steps from schema to synthetic dataset

Step 1

Schema ingestion

Connect via JDBC, upload a DDL file, or paste a sample CSV. Synthpylon maps each column to a type class: continuous numeric, discrete categorical, timestamp, foreign key, free text. No raw row values are stored, only structural metadata.

DDL
CREATE TABLE orders (  order_id UUID,  customer_id INT,  amount DECIMAL,  created_at TIMESTAMP,  is_fraud BOOL );

Step 2

Distribution modeling

We fit a probabilistic model over column marginals and pairwise correlations using a Gaussian copula approach. The model captures dependency structure without memorizing individual rows. You can inspect the learned distributions before generation starts.

Correlation matrix

Step 3

Conditional generation

Specify constraints: class balance ratios, value ranges, referential integrity rules, rare-event injection rates. The generator samples from the fitted model subject to your constraints. Referential keys are reassigned to be self-consistent.

Python
# generation config config = { "rows": 50000, "balance": {"is_fraud": 0.08}, "constraints": [  {"col": "amount", "min": 0} ] }

Step 4

Fidelity scoring and export

Before delivery, we score the synthetic dataset against the source schema using Jensen-Shannon divergence per column and a correlation matrix distance metric. A fidelity report ships with every dataset. Export as CSV, Parquet, JSON, or stream via API.

Fidelity report

JS divergence (avg) 0.012
Correlation distance 0.031
Schema fidelity 99.1%
Accuracy delta -2.1 pp

Privacy by construction, not by policy

Most tools treat privacy as a configuration step. Ours treats it as a precondition: the architecture simply has no pathway for raw records to be stored or returned. What we learn is a statistical model. What we produce is generated from that model.

  • Differential privacy budget (epsilon) configurable per job
  • Membership inference attack resistance tested on every generation run
  • No raw records ever written to disk, only statistical parameters
  • Audit log of every schema connection and generation job

We are not yet SOC 2 certified. Synthpylon is built with SOC 2 controls in mind and we plan to pursue certification as we grow. If your procurement process requires a certification today, ask us about our security posture documentation.

Raw records
never stored
Statistical parameters
learned only
Differential privacy
configurable
Audit log
every job

Drop it into your existing pipeline

REST API with Python and R clients. Call sypl.generate() from your training script, poll for the job, pull the output as Parquet or CSV. No UI required.

REST API Python client R client CSV / Parquet / JSON
Python
import synthpylon as sypl   # kick off a generation job job = sypl.generate(  schema='orders',  rows=50000,  balance={'is_fraud': 0.08} )   # download when ready sypl.download(  job_id=job.id,  format='parquet' )

Ready to try it on your schema?