Synthetic BI data with machine-labeled anomalies built in.

Every dataset ships with something genuinely wrong in it — and a machine-readable record of exactly what, where, and how big.

Anyone can fake a sales table. What a BI model — or a detector, or a pipeline test — actually needs is data where something is genuinely wrong, and a machine-readable label saying what, where, and why. That label is the product.

Synthetic data is easy. Synthetic data with ground truth about what's broken in it is what actually lets you score a detector, test a pipeline, or benchmark a model against a known answer — instead of eyeballing whether the output looks plausible.

anomalies.json — retail_seed1 #1 of 6
"kind": "spike",
"table": "orders",
"column": "shipping_cost",
"description": "shipping_cost in orders spikes to
  roughly 4.2x its normal level for South
  between 2025-05-25 and 2025-07-10, then
  returns to baseline.",
"severity": "obvious",
"rows_affected": 330,
"window": {
  "start": "2025-05-25",
  "end": "2025-07-10",
  "column": "placed_at"
},
"segment": { "region": "South" },
"magnitude": 4.174,
"detect_hint": "Aggregate shipping_cost by
  week over placed_at and compare each
  week to the trailing median."
This isn't a mockup — it's the real anomaly in our downloadable retail sample: 330 real rows, byte-verifiable. Download it or see the full anomaly catalog.
8
packs — retail, fintech, healthcare, SaaS, entity resolution, three flat archetypes →
7
anomaly kinds — spikes, shifts, bursts, gaps, collapses, breaks, duplicates →
100%
labeled — rows, window, segment, severity, magnitude, every time

Verified reproducible, not just claimed

Every dataset is seeded and deterministic. Regenerate it from its seed and the bytes match, checksum for checksum — checked automatically, including whether the generator itself has changed since the dataset was built. MySandboxData doesn't just say "looks right." It says exactly why, if it isn't.

Pack catalog

Eight packs. Four relational business domains, one MDM/entity-resolution pack, three flat single-table archetypes. Every row count below is exact — not estimated, not sampled down for this page.

Row counts scale linearly with --scale, not with seed. Different seeds vary values and anomaly placement, not table shape or volume.
packtablesrows @ scale 1.0anomaliesdescription
retail51,298,4006 Omnichannel retail: customers, catalog, orders, line items and returns.
fintech41,469,8006 Card payments: accounts, merchants, transactions and chargeback disputes.
healthcare5981,2005 Clinical encounters, procedures, and insurance claims across patients and providers.
saas4219,5006 Subscription business: accounts, plans, MRR, product usage and support load.
enrichment399,5002 Clean customer/product masters and order facts for MDM and entity-resolution work.
measurements_iris16,0002 Flat table of flower measurements and species — no joins.
measurements_wine18,0002 Flat table of wine chemistry measurements and quality class.
measurements_sensor150,0003 Flat table of IoT sensor readings and operating state.

Anomaly catalog

Seven kinds of injected anomaly. Every instance is machine-labeled: which rows, which time window, which segment, how severe, how big. That label — not the data itself — is what's for sale.

spike

A short, sharp jump in a metric confined to a time window.

level_shift

A permanent step change — the metric never comes back.

outlier_burst

A handful of individually extreme rows — fraud, fat fingers, bad ETL.

missingness_burst

A pipeline outage: one column goes null for a stretch of time.

segment_collapse

One category stops appearing partway through — a churned segment.

correlation_break

Two columns that normally move together stop doing so.

duplicate_run

Rows duplicated by a retried job — the classic silent double-count.

The four single/dual-table packs (measurements_iris, measurements_wine, measurements_sensor, enrichment) currently ship only outlier_burst. Full seven-kind variety exists in the four relational business packs (retail, fintech, healthcare, saas).
severity:
spikelevel_
shift
outlier_
burst
missing-
ness
segment_
collapse
correlation_
break
duplicate_
run
retail obvious— 2subtle obvious— moderate
fintech moderatemoderate obvioussubtle —subtle obvious
healthcare obviousmoderate moderatesubtle obvious— —
saas obviousmoderate obvioussubtle moderatesubtle —
enrichment —— 2— ———
measurements_* —— only kind— ———
AnomalyRecord — retail_seed1, #1 of 6
"kind": "spike",
"table": "orders",
"column": "shipping_cost",
"description": "shipping_cost in orders spikes to
  roughly 4.2x its normal level for South
  between 2025-05-25 and 2025-07-10, then
  returns to baseline.",
"severity": "obvious",
"rows_affected": 330,
"window": { "start": "2025-05-25", "end": "2025-07-10", "column": "placed_at" },
"segment": { "region": "South" },
"magnitude": 4.174,
"detect_hint": "Aggregate shipping_cost by week over
  placed_at and compare each week to the
  trailing median."
rows_affected, window, and segment are what make a detector's output scoreable against ground truth. detect_hint doubles as a spec for a baseline detector, if you want to sanity-check your own before running it against ours.

Samples

Three real datasets, generated the same way every dataset in the catalog is generated — download and inspect the ground truth yourself before signing up for anything.

retail seed 1 · scale 0.1 · 129,886 rows · 5 tables · 2.4 MB parquet
tablerowscolsparquet
customers4,0009148 KB
products240819 KB
orders32,0008662 KB
line_items89,00061.4 MB
returns4,6466127 KB
spike · obvious segment_collapse · obvious outlier_burst · obvious outlier_burst · moderate missingness_burst · subtle duplicate_run · moderate
This is the exact anomaly record shown on the anomaly catalog page — same 330 rows, same window, same magnitude. Download it and check them yourself.
Note: returns intentionally contains 46 duplicated rows (the duplicate_run anomaly) — this violates the table's own primary key, so a strict load will reject it unless you drop the constraint or use the label to find the rows first.
fintech seed 1 · scale 0.1 · 147,040 rows · 4 tables · 3.5 MB parquet
tablerowscolsparquet
accounts2,500880 KB
merchants680624 KB
transactions140,060103.2 MB
disputes3,8007127 KB
outlier_burst · obvious spike · moderate level_shift · moderate duplicate_run · obvious missingness_burst · subtle correlation_break · subtle
Best card for demonstrating variety — 5 distinct anomaly kinds in one file. The correlation_break between disputed_amount and resolution_days is the hardest of the seven kinds to detect; worth trying your own method against it.
Note: transactions intentionally contains 60 duplicated rows (duplicate_run) — same primary-key caveat as the retail sample above.
measurements_sensor seed 1 · scale 1.0 (full pack) · 50,000 rows · 1 table · 1.1 MB parquet
Flat single-table structure — no joins, no foreign keys. The outlier values here are intentionally extreme (temperatures over 2,000°C, power draws over 5,000W): outlier_burst models fat-finger entries and bad ETL writes, and an obviously-wrong value is still a value your pipeline has to catch. If your detector can't flag this one, that's worth knowing.
tablerowscolsparquet
sensor_readings50,000111.1 MB
outlier_burst · obvious (vibration_mm_s) outlier_burst · obvious (temperature_c) outlier_burst · moderate (power_draw_w)
This pack ships only outlier_burst — see the disclosure on the anomaly catalog for which packs carry the full seven-kind range.

Enter your email to start downloading

One-time, no spam — this just unlocks the download buttons above, your files start immediately.

Submitting starts the retail, fintech and sensor downloads right away — no waiting on a reply.

Unlocked — downloads have started. The Parquet / CSV buttons above will now work directly for the rest of this visit.

Ready for the real thing?

Full-scale retail, fintech, healthcare and SaaS datasets — same labeled anomalies, real production-sized row counts.

Pricing

Every tier ships the same thing the free samples do — real rows, real anomalies, byte-verified reproducibility. The difference is scale.

Currently available for four packs — retail, fintech, healthcare, and saas. measurements_iris, measurements_wine, measurements_sensor, and enrichment stay free — see Samples.

Small

Scale 0.5× — enough to actually test against, lighter to move around
One packPick retail, fintech, healthcare or saas at checkout
$2.99 Buy
All 4 packsBundle, one checkout
$14.99 Buy

Full

Scale 1.0× — the pack's full, real row count
One packPick retail, fintech, healthcare or saas at checkout
$19 Buy
All 4 packsBundle, one checkout
$79 Buy
BEST VALUE

Full access, subscription

Best value if you want ongoing access — one subscription beats repurchasing the bundle every time we add a new pack.

$14.99/mo Subscribe

Every purchase includes both parquet and gzipped-CSV formats. Checkout, tax handling (VAT/sales tax where applicable), and delivery are all handled by Lemon Squeezy, our merchant of record.