feature_metadata produces one short, human-readable description per column, plus a dataset-level summary. The descriptions are generated by Claude using column statistics and sample values as context. They show up in the dataset’s Configuration sidebar, in column tooltips, and as grounding the chat agent can read when answering questions about your data.
On a re-run, the component reuses descriptions from earlier versions and calls the model only for columns that don’t have one yet.
Why it exists
Most dataset columns have names likeord_amt_usd_ttl or mau_d30 — meaningful to whoever set up the warehouse, opaque to anyone else. Without semantic context:
- Summand has to guess what a column represents from the name alone.
- Chart suggestions and view-builder field labels read like database internals.
- New teammates can’t navigate the dataset without a SME walking them through it.
feature_metadata is the bridge. The Anthropic API call sees each column’s name, dtype and basic stats, plus example values for categorical columns, and returns a one- to two-sentence plain-English description plus a dataset-level summary.
Inputs
Output shape
context.dataset_context is the dataset-level summary; context.feature_contexts is keyed by column name, and features lists the described columns. The artifact is feature_metadata.json.
Display
The Feature metadata component ships with a bespoke React viewer (FeatureMetadataView):
- Dataset context rendered at the top.
- Per-column descriptions in a sortable table alongside the column’s dtype and missingness.
Where the descriptions show up
- Dataset detail → Components tab — viewable like any other component.
- Configuration sidebar — column tooltips show the description.
- View builder — the field picker shows the description as a hint under each column name.
- Summand chat — the agent reads descriptions for the columns a question touches, grounding answers in business meaning rather than column-name guesses.
Filtering from chat
Summand can ask for a specific column’s metadata:Compute profile
The long timeout is because the component calls the Anthropic API for descriptions. It’s still typically under a minute end-to-end; the timeout is there to absorb occasional API slowness.