How every kit is built,and what has to pass before it ships
Every data kit is one fictional company whose data is generated from rules written down before any rows exist. Every table is checked against those rules before release, and a kit that fails a check does not ship. This page shows what that means, with real kits from the catalog.
orphan_fks: 0pk_duplicates: 0parquet == csvfigures: recomputedEvery kit in the store passes the same gates, whatever the industry and whatever the tier.
What happens before a kit reaches you?
Six stages, in order, and each one gates the next. The data itself is generated only after the company and its rules exist.
company: fictionalEvery kit starts as a company
Not as a spreadsheet. Each kit begins with a written company profile: a fictional business with an industry, a size, and the questions its data should be able to answer. The company is named as fictional everywhere, because that honesty is part of the product.
rules_first: trueThe rules exist before the rows
Before a single row exists, the kit gets a reality contract: a set of machine-checked statements about how that business must behave. Code enforces them on every build.
shape: declaredThe tables are a model, not a pile
Facts and dimensions with the keys that join them, the same shape a real BI team would model. Decisions about how the numbers spread, from who the biggest customers are to which seasons run hot, are made up front and written into the plan.
seed: fixedThe same kit builds every time
Every row comes out of seeded code, and the same seed reproduces the same business, down to the row. Nothing is sampled from real data, because no real data is involved.
suite: fixedNothing ships unchecked
A fixed suite tests structure, statistics, and BI behavior on every table before release. The same checks run for every kit and every tier.
figures: recomputedJudged like a purchase
The finished kit is scored against a written rubric that asks one thing: would a paying BI customer be glad they bought this. And the chart figures on the kit page are recomputed from the shipped files; they have to match.
What does "behaves like a real business" mean?
Every kit carries a reality contract: a list of promises about how its business behaves, checked by code on every build. A broken promise blocks the release. Here are the seven kinds.
Temporal
A sale cannot happen before the store opens, and a refund cannot land before its order. Every event sits inside the timeline of the thing it belongs to.
child >= parent_startLifecycle
An order from months ago has an ending: delivered, cancelled, or returned. Nothing sits in processing forever.
old_records: closedCadence
A monthly snapshot has exactly one row per thing per month. No gaps, no doubles, no drift as the months roll on.
one_row_per_periodSeasonality
If the company profile says the holidays run hot, the numbers actually run hot. The peak has to be big enough to see on a chart, and the quiet months stay quiet.
amplitude: enforcedDifferentiation
Slicers do something. Segments, regions, and channels measurably differ, so every filter changes the picture.
segments_differ: trueState meaning
Where a column says risk goes up, the numbers behave like risk went up. Ordered labels move their measures in the right direction.
state_order -> measureFact grain
Every fact table counts one thing at one level of detail, and holds that line for every row, so totals do not double count.
grain: declaredWhat does this look like in real kits?
Below is one kit opened up, then the same rules at work in three more industries. Every chart is plotted from the tables inside the kit it belongs to.
Marlcairn Coffee · 11 tables · 3.2M rows
What the gates make true here
- The monthly series has no missing months. The suite fails a kit on gaps.
- Sliced segments show real spread. The suite fails a chart segment over 80% of its total.
- Old records reach a terminal state. Lifecycle rules close what a real business would have closed.
What Marlcairn Coffee's data asks you to analyze
- •Net sales, transactions, units, and average ticket by store, day, daypart, and year over year
- •Channel mix and drive-thru sales share
- •Product category and item mix, including seasonal and limited-time offers
The same rules hold across industries
Contributed Income by Calendar Month
Busy seasons are visibly busy, and months never go missing.
amplitude: enforcedVerrowick MuseumActive Subscribers by Plan
No plan swallows the pie. A slice over 80% fails the suite.
max_share < 0.8VextrovaTop categories
Categories genuinely differ, so ranking them tells a story.
segments_differ: trueBrightThread ApparelWhat gets checked before a kit ships?
Every kit passes the same fixed set of checks before release. The list does not bend for any kit or any tier, because tiers describe scale and depth, never quality.
- Primary keys are unique, with zero duplicates.
- Every foreign key resolves: no row points at a parent that does not exist.
- Parquet and CSV carry identical row counts.
- The numbers spread the way the kit declares, from biggest-customer concentration to month-to-month movement.
- Every business rule the kit declares holds in the shipped tables.
- BI heuristics pass: no missing months, no flat measures, no chart segment over 80% of its total.
structural ............ pass
keys: pk unique ....... pass
keys: fk resolve ...... pass
parity: parquet/csv ... pass
distributions ......... pass
business_rules ........ pass
bi_heuristics ......... pass
reality_contract ...... pass
result: eligible for releaseThese gates say no. A kit that fails any line is held back, fixed, and re-checked until the whole readout passes. Only then is it scored against a written buyability rubric and released to the store.
What don't these kits do?
Synthetic data has edges, and each kit writes its own down.
- Kits carry written scope limits: plain statements of what a kit does not model, so the store promise cannot outrun the data.
- Every company is fictional and named as fictional. No kit describes a real business.
- The data is built for practice, demos, teaching, portfolio work, and testing. It is not for production systems or anywhere real data is expected.
- No kit contains real customer data, because none was ever used. There is nothing anonymized and nothing to leak.
- The numbers are calibrated to be plausible for the fictional company, not to match any real market. Use them to build and test analytics, not to size an industry.
Know before buying
Short answers to the questions buyers actually ask.
Trust and quality
Which tier should I pick?
Whichever fits your appetite. Every tier passes the same checks and anyone can buy any kit; tiers describe scale, not quality. A Starter kit models a smaller company with fewer tables, quick to load and explore, while Professional and Enterprise kits model bigger businesses with more tables, more rows, and more angles to analyze. Starters are great for a first dashboard or a classroom exercise, and the larger tiers give a portfolio piece or a client demo more room to go deep.
Can I inspect a kit before buying?
Yes. Every kit page shows real chart previews, a company profile, a schema preview, and exact table and row counts, all computed from the kit's own data. Browsing needs no account.
How do I know the preview charts match the download?
Packaged chart figures are recomputed from the shipped files and must match. A preview chart on a kit page is plotted from the same tables you download.
Are these proper dimensional models?
Yes. Every kit is fact tables, dimension tables, and the keys that join them, in star and snowflake shapes, with foreign keys that always resolve. The schema dictionary in your library documents the tables, the joins, and sample values for the columns.
Where do the numbers come from?
Each kit declares how its business should behave, from who the biggest customers are to which seasons run hot, and seeded code generates data that satisfies those declarations. The same seed always rebuilds the same business.
Will my audience have seen this data before?
Unlikely. Every kit is a fictional company of ours, not a public dataset that circulates in tutorials, so it will not be the tenth Northwind dashboard in the room. Buyers of the same kit download the same tables, and the date-shift script moves your copy onto its own time window.
Using the data
What exactly do I get after buying?
Instant access in your library: every table in Parquet and CSV, the company profile, a schema dictionary with sample values, the chart pack, starter scripts, and date-shift scripts in SQL and Python. One price, one purchase, no subscription.
What formats ship?
Parquet and CSV, always both. Row counts are identical across the two formats, and the validation suite checks that parity on every build.
Can I move the dates to the present?
Yes. Every kit ships a date-shift script in SQL and Python wired to that kit's own tables. Shift every date by one interval and the whole business moves with you.
Where does the data work?
Power BI, Tableau, SQL warehouses, Python notebooks, and spreadsheets for the smaller tables. Parquet loads fastest, and CSV opens everywhere.
Can I show or share what I build?
Yes. Dashboards, portfolio pieces, presentations, teaching materials, and client demos built on a kit are yours to show anywhere. The licence draws one line: the data itself stays with you, so no reselling or redistributing the tables, and colleagues who want the files need their own copy.
The proof is in the kit
Open any kit page and poke around. What you can see before you buy is exactly what you download.
Browse the data kitsStill have questions? Contact us, we answer.