Data & BI

Verified against ChatGPT · 2026-08-09

Generate a real data dictionary from a raw schema dump instead of column names with guessed descriptions

Turns a raw table schema or column list into a data dictionary with definitions, types, and known ambiguities flagged for confirmation, rather than confidently inventing what an unclear field means.

ChatGPT (GPT-5.1)4 fillable variables

The prompt

Ready to copy — highlighted parts are example details you can swap.

You are building a data dictionary entry-by-entry from the schema I give you, in the disciplined style of a data analyst who documents ambiguity rather than papering over it.

RAW SCHEMA OR COLUMN LIST
user_id (int), status (varchar), amount (decimal), created_at (timestamp), updated_at (timestamp), src (varchar), flag (boolean)

TABLE/DATASET PURPOSE (IF KNOWN)
Tracks subscription billing events for the core SaaS product

ANY BUSINESS CONTEXT ALREADY KNOWN
"src" likely refers to acquisition channel based on how it's used elsewhere in the codebase, but not confirmed for this table

WHO WILL USE THIS DICTIONARY
New analysts on the BI team who didn't build this pipeline

For each column, produce: the column name, inferred data type, a plain-language definition, and a note on units or format where relevant (currency, timezone, encoding). Where a column name is genuinely self-explanatory given standard conventions (e.g., created_at as a timestamp) and the business context provided, write the definition directly. Where a column name is ambiguous, non-obvious, or could plausibly mean two different things (a column called status with no visible value list, a column called amount with no stated currency or sign convention), do not guess — write the definition as "needs confirmation" and state the specific question that would resolve it, rather than inventing a plausible-sounding definition that might be wrong and would look authoritative regardless. Flag any column that looks like it duplicates or overlaps with another (two date columns that might represent the same event) as worth reconciling before this dictionary is treated as final. Note any column whose name suggests personal or sensitive data (email, ssn, ip_address-style fields) so that access-control questions get raised at documentation time rather than after the data's already in wide use.

WHAT NOT TO DO
Do not write a confident-sounding definition for a column you're actually guessing at — an incorrect data dictionary entry is worse than an honest "unconfirmed," because it gets treated as ground truth by everyone who reads it afterward. Do not skip flagging likely enum columns (status, type, category-style fields) as needing their actual value list documented — a definition without the possible values is incomplete for this kind of field.

OUTPUT FORMAT
Table: column name | inferred type | definition | confirmed or needs-confirmation | note (units, sensitive-data flag, overlap flag, or the specific question to resolve it).
Followed by: a short list of the columns most in need of a follow-up conversation with whoever owns this data, ranked by how much of the dictionary's usefulness depends on getting them right.

Customize

Optional — swap in your own details for the highlighted parts above.

Why this works

A language model handed an ambiguous column name will, by default, produce a plausible guess rather than an admission of uncertainty, because a confident-sounding answer is the statistically likely completion and there's no built-in penalty for being specifically wrong versus vaguely right — this prompt breaks that default by giving "needs confirmation" equal standing as a valid, complete answer in the output format, so the model isn't implicitly rewarded for filling every cell with something. This matters disproportionately for data dictionaries specifically because, unlike a one-off analysis a human immediately sanity-checks, a data dictionary is exactly the kind of artifact that gets treated as settled reference material by people who never see the original ambiguous schema and have no way to independently notice a wrong guess — an incorrect entry here propagates silently into every downstream query someone writes based on trusting the definition. Requiring the specific disambiguating question, not just a flag, is what makes the "needs confirmation" entries actually actionable rather than just a shrug — "amount: needs confirmation" tells the reader nothing useful, while "amount: needs confirmation — is this pre-tax or post-tax, and can it be negative for refunds?" is something a data owner can answer in one sentence. Flagging likely sensitive-data columns during the documentation pass, rather than leaving that to a separate security review, matters because a data dictionary is often the first structured artifact anyone produces about a table, and it's the cheapest possible point to raise an access-control question, before the field has been copied into five downstream reports that would each need auditing later.

What you get back

status | varchar | Likely subscription state (active/cancelled/etc.) | needs confirmation | No visible value list — confirm the full set of possible values and whether "paused" exists as a distinct state from "cancelled." amount | decimal | Billing amount for the event | needs confirmation | Currency and sign convention unclear — confirm whether refunds are represented as negative values in this same column.

Verified against

ChatGPT GPT-5.1 · 2026-08-09

Changelog

  • 2026-08-09 Initial publish, verified against ChatGPT GPT-5.1.

Need this built into your business?

If a prompt isn't enough — what Scult builds, built and maintained for you — that's Scult's day job.

EXPLORE WHAT SCULT BUILDS
All Data & BI prompts

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY