> For the complete documentation index, see [llms.txt](https://academy.shade.inc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://academy.shade.inc/guides/custom-objects-and-metadata/design-a-metadata-schema-that-scales.md).

# Design a metadata schema that scales

Choose field types, options, AI prompts, and naming rules that stay consistent as you add drives and people.

**Outcome:** a short, deliberate set of metadata fields that your team fills in consistently, that AI can fill where it's reliable, and that you can copy to every new drive.

**Who it's for:** admins and leads setting up metadata for the first time, or cleaning up a drive where fields have multiplied.

**Time:** about an hour to design, and a few minutes per drive to apply.

## Before you start

* Read [Metadata and Custom Fields](https://academy.shade.inc/ai-tools/custom-and-automated-metadata) for the field types and settings.
* List the questions people ask when they look for media, such as "Where are the approved hero shots for ACME?" Each field should help answer one of them.

## Principles

{% stepper %}
{% step %}

### Start with five to eight fields

Every field is something someone has to fill in, or something AI can get wrong. Begin with the fields that answer your most common searches. A typical starting set:

| Field        | Type                                    | Filled by                    |
| ------------ | --------------------------------------- | ---------------------------- |
| Status       | Single-select                           | People                       |
| Project      | Relation (to a Projects object) or Text | Automation or people         |
| Content type | Single-select                           | AI                           |
| Tags         | Tags                                    | AI, with new options allowed |
| Rating       | Rating                                  | People                       |
| Usage rights | Single-select                           | People                       |

Shade already extracts file data (dates, dimensions, EXIF, and IPTC), so don't create fields for those.
{% endstep %}

{% step %}

### Use selects for anything you filter on

If you'll filter or group by a field, make it a single-select or tags field, not text. "Approved", "approved", and "APPROVED " are three different values in a text field, and one value in a select.

Keep option lists short and mutually exclusive. If you need more than about 15 options, the field probably wants to be a relation to a custom object instead.
{% endstep %}

{% step %}

### Let AI fill what it can see

Turn on **Autofill with AI** for fields that describe what's in the image or video, such as shot type, setting, objects, or jersey numbers. Write prompts as instructions:

* "Determine which one of the shot types best applies to the video or image."
* "Choose the tags that best apply. If a tag is not available, create one. Tags should be one or two words."

Keep AI off for business facts it can't see, such as client, usage rights, and approval. AI autofill works on images and video.
{% endstep %}

{% step %}

### Lock fields that drive decisions

For fields like **Status** and **Usage rights**, turn on **Lock metadata editing**, so only drive managers and above can change them. Add a **Description** to every field explaining when and how to use it.
{% endstep %}

{% step %}

### Name fields for the person searching

Use plain names that read well as column headers and filter labels, such as **Shot type** rather than `shot_type_v2`. Use the same names in every drive, so views and exports line up.
{% endstep %}

{% step %}

### Put the schema on a template drive

Build the final schema on an empty template drive and create new drives with **Duplicate Drive**. Schema changes don't flow into earlier copies, so when you change the template, apply the same change to existing drives by hand. See [Drive Templates](https://academy.shade.inc/workspaces-and-drives/drive-templates).
{% endstep %}
{% endstepper %}

## Cleaning up an existing drive

* **Archive** fields nobody uses. Archiving hides the field but keeps its values, and you can turn it back on later.
* Merge near-duplicate select options before you add new ones.
* After you change an AI prompt, use **Do you want to rerun and override all cells?** only when you want every existing value replaced.

## Related guides

* [Model projects and clients as custom objects](/guides/custom-objects-and-metadata/model-projects-and-clients-as-custom-objects.md)
* [Auto-organize new uploads](/guides/automations/auto-organize-new-uploads.md)
* [Build a searchable archive](/guides/search-ai-and-archives/build-a-searchable-archive.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://academy.shade.inc/guides/custom-objects-and-metadata/design-a-metadata-schema-that-scales.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `build a script that syncs our docs to a CMS` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
