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

# How Contact Enrichment Works

> How Salesfinity finds mobile numbers for contacts, what it does with the result, and what to expect while a run is in progress.

Contact enrichment finds a **mobile number** for a person from their LinkedIn profile. It is built
for the dialer: the goal is a number that rings on a phone the person actually carries, not a
switchboard.

## Requirements

* Each contact needs a **LinkedIn profile URL**. It is the key Salesfinity uses to identify the
  person. Contacts without one are skipped, and a run with no eligible contacts is refused with
  a message saying so.
* The team needs enough [credits](/enrichment/overview#credits) to cover one per selected
  contact.
* Only one enrichment run per user at a time. Start the next one when the current one finishes
  or after cancelling it.

## Running it from the dialer

<Steps>
  <Step title="Select contacts">
    In a contact list, select the contacts you want to enrich. With [Boss Mode](/dialer/boss-mode)
    on, the count reflects contacts that still lack a strong number.
  </Step>

  <Step title="Open SmartEnrich Contacts">
    The dialog shows your available credits and the cost, one credit per contact. If your team
    has connected its own data provider, choose it here; otherwise the run uses Salesfinity's data
    network.
  </Step>

  <Step title="Start the run">
    The run is queued and you can keep working. A banner on the list tracks progress, and you
    are notified when it completes. You can cancel a run in progress; contacts already processed
    keep their results.
  </Step>
</Steps>

## What happens during a run

<Steps>
  <Step title="Known profiles are filled instantly">
    Salesfinity keeps the results of past lookups. If a selected profile was enriched before, its
    number is applied immediately without a new lookup.
  </Step>

  <Step title="Unknown profiles are looked up">
    Each remaining contact is sent for a lookup, one contact per job so a slow lookup never holds
    up the rest of the list. The lookup runs asynchronously and reports back when it has a result.
  </Step>

  <Step title="Weak numbers are discarded">
    Returned numbers are screened before they reach the contact. Landlines are dropped, and any
    number graded lowest likely-to-answer is dropped, using the same grading as Boss Mode. If
    nothing survives, the contact is marked as not found and is not charged.
  </Step>

  <Step title="The number is added to the contact">
    The surviving mobile number is added to the contact as a new phone number flagged as enriched.
    Numbers the contact already had are never duplicated or replaced, so nothing you imported is
    lost.
  </Step>

  <Step title="The run completes">
    When every contact has reported back, the run is marked complete, credits are charged for the
    contacts where a number was found, and you are notified. The enrichment banner on the list
    shows when it last ran and offers **Enrich again**.
  </Step>
</Steps>

## After enrichment

* **Dial it.** The new number is part of the contact's dialing set immediately.
* **Push it to your CRM.** For contacts imported from a CRM, the enriched number can be written
  back to the record so the next import already has it. See
  [how data moves](/integrations/data-flow#other-things-that-flow-between-systems).
* **Validate it.** Enriched numbers are screened at lookup time, but running a Boss Mode cleanup
  after a large enrichment grades them alongside the rest of the list.

## Enrichment from a sourcing table

When the AI Companion builds a list on a sourcing table, it can enrich the rows the same way.
Because it costs credits, the companion states how many rows will be enriched and shows an
approval card first; it never enriches a table on its own initiative. Each row that receives a
number is charged one credit, exactly as in the dialer.

## Enrichment lists

If you have a CSV you want enriched without adding it to the dialer yet, upload it as an
enrichment list. Salesfinity enriches every row that has a LinkedIn URL, then lets you export the
enriched rows to a dialer contact list or download the CSV.

## Enrichment through the API

The [Enrich Phone](/api-reference/endpoint/enrich-phone) endpoint runs the same lookup for a
single LinkedIn URL and returns a request ID to poll, or calls a webhook of yours when the result
is ready. It is the right choice when your own system owns the contact and only needs the number.
