> ## Documentation Index
> Fetch the complete documentation index at: https://docs.metal.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Enrichment

> How Metal enriches companies with firmographics, financial metrics, and signals from AI providers, web search, and your uploaded documents.

Enrichment fills in what your firm doesn't already know. Metal combines AI with data providers and your own documents to populate attributes such as firmographics, [financial metrics](/concepts/financial-metrics), headcount, and signals on the resources you track.

Every enriched attribute keeps its provenance. Metal collects candidate values from many sources, ranks and [reconciles](/concepts/reconciliation) them into a single best value, and shows you the citation behind each one.

## How enrichment works

When you enrich a company, Metal gathers data from multiple sources, ranks and reconciles conflicting values, and writes the result back to the record. Enrichment runs asynchronously: you trigger it, and the enriched values appear on the record once processing completes.

<Steps>
  <Step title="Trigger enrichment">
    Call the enrich endpoint for a company.

    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    curl -X POST https://api.metal.ai/v1/companies/665f1c2a9b1e4a0012a3b4c5/enrich \
      -H "x-metal-client-id: $METAL_CLIENT_ID" \
      -H "x-metal-api-key: $METAL_API_KEY"
    ```
  </Step>

  <Step title="Metal sources and resolves data">
    Metal queries providers and AI models, then reconciles the results into a single best value per attribute.
  </Step>

  <Step title="Read the enriched record">
    Fetch the company again to read the enriched fields, such as `sector`, `description`, financials, and timestamps like `lastEnrichedAt`.
  </Step>
</Steps>

<Info>
  Enrichment is asynchronous. After triggering it, poll the company record (or wait for a [webhook](/guides/webhooks) if configured) rather than expecting enriched values in the immediate response.
</Info>

## Discovered values and citations

For each attribute, Metal keeps every value it has discovered — not just the one it displays. Each discovered value carries its **source**, a **confidence** score, and **when** it was found, so you can always trace a value back to where it came from.

Metal [reconciles and ranks](/concepts/reconciliation) these candidates into a single displayed value. You can override the choice by **pinning** a specific value, which takes precedence over future enrichment until you unpin it.

<Frame caption="Pin a discovered value to set the value shown for a field.">
  <img src="https://mintcdn.com/metal-05dd0988/kWbcLNNTbUpq7lH_/images/enrichment-pinned-value.png?fit=max&auto=format&n=kWbcLNNTbUpq7lH_&q=85&s=8363f0b499ffd15ce1658a27b02c3131" alt="The Subsector popover with a value pinned, showing its source and confidence and an Unpin value button" width="1024" height="591" data-path="images/enrichment-pinned-value.png" />
</Frame>

## Sources and what gets enriched

An admin controls which attributes Metal enriches and which sources it draws from under **Settings → Enrichment**. Sources are prioritized — Metal prefers higher-priority connections when it reconciles conflicting values.

<Frame caption="Configure which properties are enriched and prioritize the sources used.">
  <img src="https://mintcdn.com/metal-05dd0988/kWbcLNNTbUpq7lH_/images/enrichment-settings.png?fit=max&auto=format&n=kWbcLNNTbUpq7lH_&q=85&s=440866630e7f145e59215afb1d6d6d96" alt="The Enrichment settings page listing company properties such as Last Valuation, Last Amount Raised, and Last Financials, with source connections for Third Party Data, Web Search, and Platform Data" width="3840" height="2160" data-path="images/enrichment-settings.png" />
</Frame>

Beyond third-party data and web search, Metal extracts values from your own documents — CIMs, financial statements, board decks, and more. An admin chooses which document types to extract from and can add instructions to guide each extraction under **Settings → Extraction**.

<Frame caption="Choose which document types Metal extracts metrics from.">
  <img src="https://mintcdn.com/metal-05dd0988/kWbcLNNTbUpq7lH_/images/extraction-config.png?fit=max&auto=format&n=kWbcLNNTbUpq7lH_&q=85&s=d9e9454281b7fcf31b58a7b034744a2c" alt="The Extraction settings page listing document types like 10K, CIM, Financial Statement, and Quality of Earnings, each with an enable toggle" width="3840" height="2160" data-path="images/extraction-config.png" />
</Frame>

<Frame caption="Add instructions to guide extraction for a document type.">
  <img src="https://mintcdn.com/metal-05dd0988/kWbcLNNTbUpq7lH_/images/extraction-config-detail.png?fit=max&auto=format&n=kWbcLNNTbUpq7lH_&q=85&s=c4dd7f7fc6cb8e99172824e82741cc2c" alt="The CIM document type expanded to show an Extraction instructions field with Enhance and Generate from example options" width="3840" height="2160" data-path="images/extraction-config-detail.png" />
</Frame>

For each document type — built-in or custom — admins can also narrow **which** financial metrics Metal extracts from that type. Expanding a type reveals a **Metrics to extract** checklist of every supported metric. Leaving everything checked (the default) keeps the current behavior of extracting every supported metric. Unchecking a metric tells Metal to skip it for that document type; clearing every metric effectively disables extraction for the type. Changes take effect on the next run, including reruns of existing CIM screenings, which rebuild the extraction prompt from the updated selection.

## Enrichment timestamps

Companies carry timestamps that tell you the state of enrichment:

| Field                     | Description                                      |
| ------------------------- | ------------------------------------------------ |
| `lastEnrichmentStartedAt` | When the most recent enrichment run began.       |
| `lastEnrichedAt`          | When enrichment last completed and wrote values. |

If `lastEnrichmentStartedAt` is newer than `lastEnrichedAt`, a run is in progress.

## Enriching in bulk

To enrich many resources at once, add them to a [list](/api-reference/introduction) and trigger enrichment at the list level. Lists are the spreadsheet-like surface for working with resources in bulk, including computing enriched columns across every entry.

## Best practices

<CardGroup cols={2}>
  <Card title="Create first, enrich second" icon="diagram-next">
    Create a company with at least a `canonicalName` (and a `website` when you have one) before enriching for the best match.
  </Card>

  <Card title="Poll, don't block" icon="hourglass">
    Trigger enrichment and check back later; don't hold a request open waiting for results.
  </Card>

  <Card title="Provide hints" icon="lightbulb">
    The more identifying detail you supply (website, location), the more accurate enrichment is.
  </Card>

  <Card title="Batch with lists" icon="layer-group">
    Use lists to enrich large sets efficiently instead of looping one-by-one.
  </Card>
</CardGroup>
