ع
Learn Tracks Reference Guides Saved
For your team

The Data Foundation toolkit: the files your team queries from

A metric dictionary you wrote once helps you once. One your team queries from helps every report, forever. This is the toolkit that turns the Foundation module's three files into shared infrastructure — copy it, fill it with your real data, and every analysis starts from the same truth.

8 min read · Updated 2026-06-30
The Data Foundation toolkit: the files your team queries from

You finished the Foundation module with three documents: a dataset-profile.md, a metrics.md, and an analysis-brief.md for one real request. This toolkit makes them infrastructure. A dictionary you wrote once helps you once; a dictionary your team queries from — that Claude reads on every task — helps every report, forever.

Everything here is copy-able. Replace the Mizan placeholders (the GCC bookkeeping brand whose Business Analyst, Maya Haddad, runs through the module) with your own, save the files in the folder your team works in, and open it in Claude Desktop. From then on, every analysis task in that folder starts from your real columns, your real metric definitions, and your real scoping habits — instead of each analyst’s guess.

The whole pack is four files and a handful of prompts. That’s the point — a foundation small enough to actually get queried beats a beautiful one that lives in a doc nobody opens. Keep raw customer data out of it: this folder holds your team’s definitions and conventions, never a live export full of names and emails.

The data CLAUDE.md

This is the standing context Claude reads automatically when it opens your project folder, so nobody has to re-explain a metric or a source table every chat. Keep it short and current — it points at the foundation docs rather than repeating them.

# CLAUDE.md — [Team name] data & analytics

## What we do
[Team name] answers data questions for [Company] — [one-line product
summary]. Our main sources are [list: e.g. "the `subscriptions` and
`customers` tables, weekly CSV exports from the marketing tool"].

## The three source-of-truth files — read these first
- metrics.md          → WHAT our numbers mean (exact logic, owner, edge
                         cases for every metric we report)
- dataset-profile.md   → WHAT a given source actually contains (per file,
                         re-profiled whenever the schema changes)
- analysis-brief.md    → WHAT this specific request is actually asking
                         (decision, precise question, scope) — one per
                         active request, not a single standing file
Always check metrics.md before computing a metric that already has a
definition. If a request needs a metric that isn't in the dictionary yet,
propose an addition — don't invent a one-off definition in a chat.

## The golden rule
Profile before you query. Reconcile before you report. Every total that
leaves this folder is checked against a second source — a row count, a
prior report, a finance figure — before a stakeholder sees it. A number
you can't reconcile is a number you can't defend.

## Verification non-negotiables
- State the row count and how you verified it, every time you open a
  new file.
- Read real values for every column before trusting what its name implies.
- Name the blank rate and duplicate count for any file you build a total on.
- Never report a number without saying which query or file it came from.

## DATA SAFETY — non-negotiable
Customer-identifying data — names, emails, account IDs not already
aggregated — stays in this workspace. Claude reads it to compute
aggregates and patterns; it is never asked to export raw rows, paste
identifiable records into a shared doc, or process PII outside this
folder. Charts and reports leave this folder only in aggregate form.

## What's safe in this folder
- Safe: metrics.md, dataset-profile.md (column-level descriptions, not raw
  rows), aggregated query results, anonymized samples, chart images.
- Never here: raw customer exports with names/emails, full ticket or
  billing records, anything that identifies one specific person. Tell me
  if a file looks like it has them before we use it.

On Desktop you create and edit this in the file pane — no commands. Anthropic’s docs call the “Ask permissions” mode the one recommended for new users; leave it on, and the first time Claude reads a data file you’ll approve it in the prompt.

The dataset-profile.md template

The interview every new file gets before you trust a total built on it. The “checked against values” discipline is what separates this from a glance at the column headers.

# dataset-profile.md — [file name]

## Row count
[N] rows. Verified against: [the export tool's own count / a stakeholder's
stated expectation / last period's count ± a sane delta]. State the match
or the discrepancy explicitly — don't skip this line.

## Columns
[column_name]
  Meaning: [what it actually contains, checked against 20–30 sampled
  real values — not assumed from the header]
  Blanks:  [N% blank, or "none"] — [if blank, name what a spot-check of
  the blank rows suggests, and how you'll handle them downstream]
  Watch for: [anything that surprised you — a column that lies, a
  timestamp that isn't what it claims to be, values outside the
  expected range]

[Repeat for every column. The "watch for" line is the highest-value
line in the whole document — it's the catch that prevents a bad chart.]

## Date range
[start] to [end]. Confirmed against: [the export filter used / a known
event that should be in range].

## Duplicates
[N] exact-duplicate rows found ([describe the match: same key + same
timestamp, etc.]). [N] near-duplicates (same key, different timestamp —
state whether this is expected, e.g. an update history, or a defect).
Decision: [dropped before reporting / kept and flagged / needs the
source-system owner to confirm which is correct].

## What this file is safe to answer, and what it isn't
[One or two sentences: given the above, what can you confidently build
from this file, and what would need a different or cleaner source first.]

The metrics.md template

The dictionary every query, chart, and report cites. The “logic” line is the discipline — if it can’t become a query without a follow-up question, it isn’t done yet.

# metrics.md — [Team name]

## [METRIC NAME]
Meaning: [one plain-English sentence a non-analyst would understand]
Logic:   [the exact filter/formula/SQL-shape — specific enough that a
         stranger could write the query from this line alone]
Owner:   [named person or named function — who approves changes to this
         definition]
Edge cases:
  - [a real boundary case and how it resolves — not "use judgment"]
  - [a second real boundary case and how it resolves]
Last reviewed: [date] — bump this and note what changed whenever the
  logic is revised. Old reports stay correct for the period they covered;
  new reports use the current definition.

[Repeat per metric. Start with the 4–6 metrics that appear in your most
recurring report — the dictionary earns its keep fastest there.]

The analysis-brief.md template

One brief per active request — this is not a standing document, it’s a template you fill out fresh every time someone asks for an analysis. The “out of scope” section is what prevents the most common kind of rework.

# analysis-brief.md — [the request, in 5 words or fewer]

Original request (verbatim):
  "[paste the actual Slack message / email / meeting line — don't
  paraphrase, you want to see exactly what's ambiguous]"

Decision this informs: [what will someone actually DO differently
  depending on the answer — not the question itself]

Precise question: [the request translated into metrics.md vocabulary —
  name the exact metric(s), not a restatement of their words]

Sources: [the table(s) or file(s) this will be built from]

Segments: [how the answer should be broken down, if at all]

Out of scope for this round:
  - [something a reasonable person might assume is included, named
    explicitly as excluded, with a one-line reason]
  - [a second exclusion, if there is one]

Confirmed scope with requester: [yes/no — confirm before building
  anything beyond a quick first look]

The saved-prompt library (Foundation)

The recurring foundation jobs, as prompts you reuse. Paste them in the chat with the right files open; on the Terminal & Automation track these become slash commands so they’re one keystroke, but you need none of that to use them today.

Profile a new file
  "Read [file name] from this folder. Tell me: the row count and how I
   could verify it against another source, what every column actually
   means based on real sampled values (not just the header), the real
   date range, the blank rate per column, and any exact or near-duplicate
   rows. Flag anything that looks like it doesn't match what its column
   name implies."

Draft or update a metric definition
  "Read metrics.md. We need a definition for: [metric name, e.g. 'trial-
   to-paid conversion rate']. Propose: a one-sentence plain meaning, the
   exact logic as a filter/formula, and 2-3 edge cases with how each
   should resolve. Flag if this overlaps with or duplicates an existing
   metric in the file."

Turn a vague request into a brief
  "Here's a request I just got: [paste it verbatim]. Using metrics.md as
   the vocabulary, draft an analysis-brief.md: what decision this likely
   informs, the precise question translated into our metric names, the
   sources and segments, and at least one thing a reasonable person might
   assume is in scope that we should explicitly exclude this round."

Reconcile a number before it ships
  "Here's a total I'm about to report: [paste the number and how it was
   computed]. Check it against [a second source / a known total / last
   period's figure]. Tell me if it reconciles, and if not, walk through
   the most likely reasons for the gap (filter mismatch, date boundary,
   duplicate rows, a join that dropped or duplicated records)."

Pressure-test a metric definition for edge cases
  "Read this metric definition: [paste it]. Find 3 real-world situations
   this logic might handle wrong or ambiguously — a customer who does
   something unusual, a timing edge case, a status that doesn't cleanly
   fit. For each, tell me what the current logic would compute and
   whether that's actually the right answer."

Installing it (Desktop, no setup)

  1. Save the four files — CLAUDE.md, dataset-profile.md (one per source you query regularly), metrics.md, analysis-brief.md (template, filled fresh per request) — in the folder your team works in.
  2. Open that folder in Claude Desktop and approve the read in the “Ask permissions” prompt.
  3. Start any task by opening the relevant docs; the prompts above do the rest.

That’s the whole install. The foundation you built in the module is now shared infrastructure — and Module 2 of the track extends this same pack with the query and join engine that builds on it. If you’re standing this up across a team rather than for yourself, read the operating guide for the data-safety and verification layer that belongs underneath the whole system.

Topics

Questions people ask

What is a CLAUDE.md and why does a data team need one?
It's a plain-text file Claude reads automatically when it opens your project folder — standing context about your data sources, your metric definitions, and your verification habits, so you don't re-explain them every chat. For a data team it's the difference between every analyst starting from the same trained instincts and every analyst rebuilding "active users" from scratch. Drop it in the folder your team works in on Desktop and every query in that folder inherits it.
Are these templates or finished files?
Templates — structure with the thinking baked in, but the content is yours to fill. The Mizan examples show you the shape of a good answer; you replace them with your own columns, your own metric logic, and your own stakeholder requests. The point is that you fill in structure instead of facing a blank file, and you end with files in the exact format every Data playbook expects to be fed.
Do I need the terminal or any setup to use these?
No. On Claude Desktop you save these as files in your project folder, open the folder in the app, and approve the read in the "Ask permissions" prompt — that's it. The only optional power-user step is turning the prompts into slash commands, which lives in the Terminal & Automation track; the Desktop way needs nothing but the files.
How does this stay current as our data and metrics evolve?
Treat metrics.md as a living file with one owner per metric and a version bump on real definition changes — not a free-for-all anyone edits. Re-profile a source file whenever its schema changes, and re-run the brief template for every new stakeholder request rather than reusing an old one's scope by default. A metric definition that silently drifts is exactly the failure this toolkit exists to prevent.
Put it into practice
Take the guided course
Start