Best for
- Warehouses where every analyst re-derives what status=3 means
- Onboarding analysts without the month of tribal apprenticeship
- The audit or migration that needs to know what data exists and means
What you give it
- Access to the schemas and (read-only) the data, plus the humans who know the folklore
What you get back
- Per table: purpose, grain, ownership, update cadence; per field: meaning, the values actually present, the gotchas
- The folklore captured and verified: the status code legend, the 'before 2023 this meant something else' notes
- The disagreements surfaced: where the data contradicts the assumed meaning — found by profiling, not by waiting
How it works
- Profiles the actual data per field — distinct values, nulls, ranges, patterns — so the dictionary describes what IS, and the surprises surface during writing.
- Interviews the folklore-holders and verifies their legends against the data; verified folklore becomes documentation, contradicted folklore becomes findings.
- Documents the analyst-critical layer: grain, keys, join paths, the time semantics (event time vs load time), and the history quirks per field.
- Keeps entries honest with dates and owners, because an undated dictionary is folklore with formatting.
Example
You: Document our orders and customers tables; every new analyst asks the same forty questions.
Result: The dictionary: both tables documented to field level with meanings verified against profiled data — including the finds: status has seven values in the data but the team could name five (the two mystery values traced to a 2022 migration — now documented), created_at means import date for the 40k migrated rows (the footnote that fixes a hundred wrong cohort analyses), and the customer table's grain is not one-row-per-customer for the merged accounts (the join warning every analyst needed). The forty questions now have a page.
Limits — please read
- Meaning only humans hold needs humans; the dictionary marks 'unverified' where no one could confirm and the data is ambiguous.
- Profiling is read-only and sampled at scale; sensitive fields get documented by shape and class, not by value.
- A dictionary ages with the schema; the update trigger (schema change touches dictionary) is part of the setup.