Check a dataset for the tells of synthetic data
check_realismDetect unrealistic statistical patterns in synthetic datasets without real data. Flag tells like evenly spread values, balanced categories, or placeholder entries to improve realism.
Instructions
Find the statistical shapes that make a dataset look generated.
Where audit_dataset finds contradictions, this finds shapes real data
almost never has, with no real data to compare against: money spread
evenly from min to max, every customer with about the same number of
orders, perfectly balanced categories, flat weekday or hour-of-day
profiles, timestamps piled up at midnight, placeholder values
(@example.com, John Doe), emails unrelated to names, small name pools,
templated or repetitive free text, prose with a tiny vocabulary, review
text whose tone ignores its rating, descriptions unrelated to their
titles, tables with no nulls at all. Works on data from any generator,
including a script you wrote.
Fix a finding in the schema, not the rows: lognormal for money, a curve or
weights for time, sampling on foreign keys, null_rate or
__missingness__ for optional fields. Pass skip for tells that are
intended (a randomised A/B split is balanced on purpose).
Args:
dataset_dir: Directory with one CSV per table (the output_dir from
generate_from_schema).
skip: Check names to leave out, e.g. ["too_clean"].
Returns:
{"score": 0-1, "passed": bool, "counts": {...}, "tells": [...]},
each tell with its check, table, column, status and evidence.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | ||
| dataset_dir | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |