01
Download a ready-made dataset
Choose one of four 10,000-order scenarios and download a pre-generated CSV ZIP directly from this page. No setup or Python environment is required.
Go to downloadsPublic analytics tool
A public Python tool that creates realistic, multi-table ecommerce datasets for analytics practice, SQL modeling, BI dashboards, data science experiments, data-cleaning exercises, and portfolio projects.
All generated records are fully synthetic. They do not represent real customers, sellers, orders, companies, or market activity.
Project overview
Most public datasets are overused, outdated, too simple, or poorly structured for original portfolio work. This generator creates modern, US-like synthetic ecommerce data with customers, sellers, marketplace listings, products, orders, payments, shipping, reviews, calendar data, metadata, and validation reports.
The goal is not to represent real ecommerce activity. The goal is to provide realistic synthetic data that analysts can download, study, load into SQL tools, and use as a foundation for their own projects.
The repository also includes an optional local Streamlit app for validated configuration, dataset generation, KPI and trend exploration, table downloads, marketplace analysis, validation review, and schema reference. Nothing is generated by this portfolio website.
01
Choose one of four 10,000-order scenarios and download a pre-generated CSV ZIP directly from this page. No setup or Python environment is required.
Go to downloads02
Clone the public repository to generate clean or intentionally dirty datasets through the CLI or local Streamlit app, with control over scenarios, size, seeds, dates, and configuration.
View local setupDataset contents
Each generated package contains analytics-ready tables, an explicit seller-product catalog, field documentation, metadata, and validation results. Dirty-mode packages add a manifest describing the injected issue counts.
Synthetic customer profiles with state, city, region, segment, and lifecycle stage.
Seller geography, quality, fulfillment capacity, selection weight, and churn state.
Generic product categories with synthetic prices, weights, and dimensions.
The authoritative marketplace catalog, connecting sellers and products through seller-specific listings, prices, dates, and active states.
Ecommerce orders with timestamps, status, calendar fields, and scenario labels.
Line-level listing, product, seller, price, discount, quantity, and allocated shipping details.
Payment methods, installments, and values reconciled to each order total.
Distance bands, delivery estimates, actual delivery times, delays, and shipping cost.
Review scores influenced by delivery delay, seller quality, scenario, and satisfaction risk.
Reusable date attributes including ISO week, season, weekend, holiday, and promotion flags.
Run configuration, record counts, provenance, and the synthetic-data disclaimer.
Machine-readable field definitions with types, descriptions, examples, and nullability.
Machine-readable and human-readable results for schema, key, date, total, listing, and relationship checks.
Included only in dirty packages, with applied defect counts by category, table, and column without revealing exact affected rows.
Database design
The generated tables form a connected ecommerce model with explicit primary and foreign keys. Seller-product listings bridge the shared product catalog to sellers, while orders connect customers to items, payments, shipping, and reviews.

Download sample datasets
These pre-generated CSV packages are the fastest way to start exploring the data. Each uses seed 42 and the default January 2024 through December 2026 date range.
Standard synthetic ecommerce behavior with normal seasonality, seller activity, delivery performance, and review distribution.
Synthetic ecommerce data with stronger Q4 demand, increased holiday pressure, slightly longer delivery times, and more satisfaction risk.
Synthetic ecommerce data where delivery performance improves, late deliveries decrease, and review outcomes are slightly better.
Synthetic ecommerce data where some important sellers become inactive partway through the period and revenue shifts to other sellers.
The downloadable files are pre-generated sample datasets. For larger datasets, custom date ranges, different random seeds, or additional configuration, clone the public repository and run the generator locally.
Available scenarios
Each scenario changes documented configuration values so analysts can compare demand, fulfillment, seller, and satisfaction outcomes.
The reference scenario: normal seasonality, seller concentration, fulfillment performance, and review behavior.
Stronger Q4 and category demand add shipping pressure, increase delays, and create more negative review risk.
Shorter transit times, lower shipping costs, and fewer late deliveries support better satisfaction outcomes.
The highest-volume sellers deactivate during the period, and their demand redistributes across active sellers.
Use it locally
The generator runs entirely on your computer. Clone the public repository once, install its dependencies, and then use either the CLI or the optional visual app.
Install Git, Python 3.11 or newer, and uv on your computer.
Open a terminal in the folder where you want to keep the project.
Run the git clone command shown here, then enter the new synthetic-dataset-generator directory.
Run uv sync --extra dev from the repository root to create the environment and install the CLI.
Run the baseline example or change the scenario, order count, seed, dates, and YAML configuration for your project.
Generate with the CLI
Reproducible scripted generation for automation and larger runs.
git clone https://github.com/ablancogcr/synthetic-dataset-generator.git
cd synthetic-dataset-generator
uv sync --extra dev
uv run synthetic-dataset-generator generate \
--config config/default_config.yaml \
--output data/output \
--scenario baseline \
--orders 50000 \
--seed 42Launch the local Streamlit app
A validated configuration editor, generator, and local dataset viewer. The editor changes only existing YAML keys, validates the complete file, and saves valid changes atomically. Files stay on the user's machine.
uv sync --extra dev --extra viewer
uv run streamlit run streamlit_app/app.pyCreate a dirty-data training package
Adds reproducible nulls, missing days, malformed dates and types, negative values, and empty orders for cleaning practice.
uv run synthetic-dataset-generator generate \
--config config/default_config.yaml \
--output data/output \
--scenario baseline \
--orders 50000 \
--seed 42 \
--dirtyExample use cases
The same relational package can support engineering, reporting, modeling, and end-to-end portfolio work.
Methodology
The generator uses a rule-based probabilistic simulation approach. It combines weighted sampling, statistical distributions, segment-based behavior, seller-specific catalogs, seasonality multipliers, scenario adjustments, stable seeds, optional dirty-data injection, and validation checks to create relational synthetic ecommerce data.
Technical stack
The CLI and optional Streamlit interface stay local, reproducible, documented, and testable. This portfolio page only serves static download files and does not run the generator.
Current MVP scope
Future roadmap
The future SQL analytics and data science work will be developed as separate portfolio stages built on top of this generator.
Synthetic data disclaimer
These datasets are fully synthetic. They do not contain real customers, sellers, orders, companies, or market activity. They are intended for analytics practice, SQL projects, BI dashboards, data science experiments, and portfolio work. They should not be interpreted as real market data or used for operational business decisions.
Public repository
Clone the project to create a dataset that matches your own analytical question, or review the documented business rules before using a ready-made download.
View on GitHub