Aggrandize Docs
Features

Contact enrichment

Fill missing contact details from external sources — single contacts via the assistant, or hundreds at a time via the contacts list bulk action.

Contact enrichment fills in details your CRM is missing — email, job title, LinkedIn, location, seniority, role, industry, skills, and more — by looking each contact up against an external people-data provider (People Data Labs).

This page covers every place enrichment surfaces in the CRM: how to enrich one contact, how to enrich many at once, what's on the contact detail page after a successful match, how follow-up flags work, and how to track an in-flight batch.

Cost note. Enrichment uses AI credits. You're billed only for successful matches at a fixed per-match rate — no charge when the provider returns no result. See AI credits for current pricing.

When to use it

Enrichment is best when:

  • A contact came from an import with sparse data — just a name and a company.
  • You're working a deal and the contact has no email or phone to reach out.
  • You want seniority and role to qualify a lead before outreach.

It's wasteful when the contact is already well-populated, or when the contact is spam / a notification address / a generic info@ inbox — those will either return no match or burn a credit on data you don't need.

Single contact — via the assistant

Ask the assistant in the chat dock:

"Enrich Devon Walsh."

The assistant looks the contact up by email first (high precision). If the contact has no email, it falls back to name + linked company, and only applies the match when the name the provider returns agrees with the contact's name — a wrong-person match is deliberately blocked.

You'll see an approval prompt before any credit is spent. If the provider has no record, the assistant tells you and no credit is charged. If the lookup succeeds but every returned field is something you already have, the assistant reports enriched: false — no fields changed, no credit charged.

The assistant can also do a quick duplicate check before enriching, if you ask. "Before enriching Devon Walsh, are there any likely duplicates?" surfaces same-name + same-company siblings, including inactive contacts you might not see in the list view — useful when an imported list created multiple records for the same person.

Bulk enrichment — from the contacts list

When you have a cohort to enrich — a freshly imported tag, a filtered slice of the list — bulk enrichment lets you start a background job in one click.

Selecting contacts

Tick the checkbox on any contact row to enter selection mode. Filter and select all matching this filter to operate on the whole cohort, not just the visible page.

Selection mode — three contacts selected, bulk action bar visible
crm.aggrandizelabs.com/contacts

Contacts

142 contacts

Classify12Create contact
Search contacts...
FiltersAll StatusAll Categories
3 selectedClear
Assign
NameEmailCategory
Jordan Piercejordan@harborbuild.exampleClient
Priya Shahpriya@apexframing.exampleSubcontractor
Devon Walshdevon@northwindarch.exampleLead
Mira Okaformira@flatironcivil.exampleUnclassified
Aaron Liuaaron@bluestripeglass.exampleVendor
Tasha Goodwintasha@ironworksengineers.exampleService Provider

When the selection is anything from 1 to 5,000 contacts, the bulk action bar shows an Enrich N button. Above 5,000 the button is disabled with a tooltip — narrow your selection first.

The Enrich bulk action is restricted to org owners and admins. Members see the standard bulk actions but not the Enrich entry — enrichment is a real spend, gated to the people responsible for credit usage.

The cost-challenge modal

Clicking Enrich N opens a modal that previews the cost. Two shapes, keyed on the estimated max cost:

Under the challenge threshold (small batches): a confirmation with the count, the estimated max cost, and a plain Start enrichment button. One click and the job runs.

Under threshold — 5 contacts, $1.50, plain confirm
crm.aggrandizelabs.com/contacts
Enrich 5 contacts
Looks up missing email, job title, LinkedIn, and location via People Data Labs.
Contacts selected5
Estimated max cost$1.50
You're billed only for successful matches at $0.30 each. Already-enriched contacts are skipped automatically.

At or above the threshold (currently $10): the same preview, plus a typed cost-challenge — you must type the dollar amount before the Start button enables. This is deliberate friction for large batches; muscle-memory clicking a $300 max-cost run isn't a path we want to make easy.

Over threshold — 50 contacts, $15.00, typed challenge required
crm.aggrandizelabs.com/contacts
Enrich 50 contacts
Looks up missing email, job title, LinkedIn, and location via People Data Labs.
Contacts selected50
Estimated max cost$15.00
Type the cost to confirm. This batch is over $10, so we ask you to enter the dollar amount before starting.
Type $15.00 to enable Start:
You're billed only for successful matches at $0.30 each. Already-enriched contacts are skipped automatically.

Notes that appear in both shapes:

  • Estimated max cost is the worst case (every contact matches). The realized cost is usually lower — the provider returns no match for some contacts (free).
  • Already-enriched contacts are skipped automatically — they don't re-charge.

After you click Start

  • The modal closes and selection clears.
  • A toast appears in the bottom-right confirming the job has started. The toast has a View job → link straight to the job's detail page and a Copy ID button that puts the full job identifier on your clipboard — useful for sharing the run with a teammate or pasting into chat.
  • The enrichment runs in the background; you don't have to wait on the page.
  • You can check progress two ways: ask the assistant ("how's my last enrichment?") or open the Enrichment Jobs page directly.

The Enrichment tab on contact detail

When a contact has been enriched, their detail page gains an Enrichment tab in the tab strip (alongside Activity, Email, Tasks, etc.). The tab opens to a single scrollable view with everything the provider returned, organized so the most valuable signals come first.

Enrichment tab — enriched contact, clean (no follow-ups)
crm.aggrandizelabs.com/contacts/anna-morado
ActivityEmailTasksNotesEnrichment
PDL· Medium confidence· enriched 2 days ago
Seniority
VPDirector
Role · Industry
Real Estate · Operations
Construction
Skills · 6
Site SelectionLease NegotiationMarket AnalysisTenant RepresentationCommercial Real EstateRetail Strategy
Interests · 3
ConstructionRetailUrban Planning
Social profiles · 2
  • linkedin.com/in/anna-morado
  • github.com/amorado
Company · Five Below
Domain
fivebelow.com
Industry
Retail
Size
10,000+
Personal data · 1 email
Reveal

When the contact has never been enriched, the tab shows an empty state with a one-click Enrich now button (owner/admin only):

Enrichment tab — empty state
crm.aggrandizelabs.com/contacts/devon-walsh
ActivityEmailTasksNotesEnrichment

Not enriched yet

Look up Devon Walsh in People Data Labs to fill missing fields and capture seniority, skills, and social profiles.

Provenance bar

A purple bar at the top names the source (PDL), the confidence level (High / Medium / Low), and how long ago the contact was enriched. A Re-enrich button on the right re-runs the lookup for owners and admins. Clicking it opens a confirmation dialog that states the per-match cost before any credit is spent — re-enrichment fills any fields a person hasn't manually edited; values you typed are never overwritten.

Re-enrich is gated when it would inevitably burn a credit. If the contact has an unresolved email-collision flag and the underlying collision is still real (another contact still holds the email), the system refuses the re-enrich and surfaces the colliding contact's name. Resolve the duplicate first; then the next re-enrich actually lands.

Headline cards — Seniority and Role · Industry

Two compact cards lead the layout:

  • Seniority — pill badges for each level the provider identified (C-Suite / VP / Director / Manager / Senior / Entry, or Owner / Partner for non-corporate roles).
  • Role · Industry — the provider's role taxonomy slot (e.g., Real Estate, Operations) plus the industry classification (e.g., Construction, Retail).

These are the highest-signal fields for prospecting — the contact-list view also exposes them as filter chips (see List view).

Skills and Interests

Two side-by-side chip lists. Skills carry the provider's tagging of professional capabilities; interests are softer signals (industries followed, communities, technologies). Empty lists are hidden — the card only renders when there's something to show.

Social profiles and Firmographics

  • Social profiles lists every linked profile the provider returned — LinkedIn, Twitter / X, GitHub, Facebook, Instagram, Crunchbase, AngelList. Each opens in a new tab.
  • Firmographics shows the linked company's data the provider filled in (industry, employee count) when the contact is linked to a company that the provider could match. Empty when there's no linked company or no firmographic signal.

Personal data (gated)

When the provider returns personal email addresses for a contact (gmail, yahoo, etc., not their work email), they're held behind a deliberate reveal — a Reveal button under a "Personal data" header. One click exposes them. The gate is per-session and per-tab; the act of clicking Reveal is the audit trail for now (a persistent audit log is planned but not built).

Personal data revealed — after clicking Reveal
crm.aggrandizelabs.com/contacts/anna-morado
ActivityEmailTasksNotesEnrichment
PDL· Medium confidence· enriched 2 days ago
Seniority
VPDirector
Role · Industry
Real Estate · Operations
Construction
Skills · 6
Site SelectionLease NegotiationMarket AnalysisTenant RepresentationCommercial Real EstateRetail Strategy
Interests · 3
ConstructionRetailUrban Planning
Social profiles · 2
  • linkedin.com/in/anna-morado
  • github.com/amorado
Company · Five Below
Domain
fivebelow.com
Industry
Retail
Size
10,000+
Personal data · 1 email
  • anna.morado.personal@gmail.com

We chose deliberate-reveal over hidden-by-default-with-default-show because personal data is a meaningful privacy boundary even for legitimate sales use — pause-and-click forces the user to acknowledge they want to see it.

Follow-up cards

When the provider's match created an unresolved condition, a yellow Follow-up needed card lists each flag with a Resolve → button that dispatches the right prompt to the assistant.

Enrichment tab — with two unresolved follow-up flags
crm.aggrandizelabs.com/contacts/anna-morado
ActivityEmailTasksNotesEnrichment
PDL· Medium confidence· enriched 2 days ago
Seniority
VPDirector
Role · Industry
Real Estate · Operations
Construction
Skills · 6
Site SelectionLease NegotiationMarket AnalysisTenant RepresentationCommercial Real EstateRetail Strategy
Interests · 3
ConstructionRetailUrban Planning
Social profiles · 2
  • linkedin.com/in/anna-morado
  • github.com/amorado
Company · Five Below
Domain
fivebelow.com
Industry
Retail
Size
10,000+
Follow-up needed · 2
  • Email collision: PDL returned anna.morado@fivebelow.com — already used by another contact in this org.
    Resolve →
  • Company mismatch: PDL matched a different company ("Five Below" / fivebelow.com) than the one currently linked.
    Resolve →
Personal data · 1 email
Reveal

Four flag types:

  • Email collision — The provider returned an email, but another contact in your org already holds it. The system stashes the colliding email and surfaces the holder. The Resolve flow looks up the other contact and proposes a merge.
  • Suggested company — The provider matched the contact to a company that isn't in your CRM yet. Resolve asks the assistant to create the company and link the contact, if it looks right.
  • Company mismatch — The contact is linked to a company in your CRM, but the provider's domain for them is different. Could mean PDL is wrong, could mean your CRM has the wrong company linked. Resolve walks both records side by side.
  • Name mismatch — The provider's match returned a different name than the contact. Resolve runs the candidate-review flow (assistant tool) to pick the right person from up to N alternatives.

The cards auto-dismiss when the underlying condition resolves — even without re-enriching. If you delete the contact holding a colliding email, or manually link the suggested company, the cards disappear on next page load.

List view enhancements

The contacts list gains four enrichment-aware features.

Row indicator

A small dot at the start of every row:

  • ⚠ amber — the contact has at least one unresolved follow-up flag. Resolving them is one click into the Enrichment tab.
  • ● purple — the contact is enriched and clean (no follow-ups).
  • nothing — not enriched.

Hover the dot for a quick tooltip of how many follow-ups are open.

Seniority · Role column

A new column shows the contact's seniority badge (or ) plus the role / industry slot. Lets you scan a filtered list at a glance — "show me VPs in Construction" without opening each contact.

Filter chips

Above the list, a row of filter chips covers the enrichment dimensions:

  • Enriched / Not enriched — coarse filter.
  • Seniority — c_suite / vp / director / manager / senior / entry, plus owner / partner.
  • Role — the provider's role taxonomy slot.
  • Industry — free-text token (e.g., construction, retail).
  • Confidence — high / medium / low.
  • Follow-upemail_collision, suggested_company, company_mismatch, name_mismatch, or "any unresolved."

Combine freely with the standard filters (category, tags, owner, etc.).

Review banner

When any contact in your current filter has an unresolved follow-up, a slim banner appears above the list: "3 contacts need a follow-up resolution" with a quick link to filter down to just those. Lets you triage your enrichment outcomes in one pass.

Enrichment Jobs page

A dedicated page at Contacts → Enrichment Jobs lists every batch enrichment run for your org. A tab strip at the top of the contacts area lets you flip between Contacts and Enrichment Jobs without losing your filter state.

The list

Each row is one batch run:

  • Started — how long ago the job kicked off (hover for the absolute timestamp).
  • Filter — a one-line summary of what cohort was enriched: a tag name ("Tag: ICSC 2026"), a criterion ("Missing email"), or a count ("42 contacts selected").
  • Contacts — the total number processed.
  • Outcomes — a small stacked bar showing the split between matches and misses, with the numeric counts beside it.
  • Credits — total charged for the run.
  • Status — pending / running / completed / failed, color-coded.

While a job is pending or running, the page polls in the background and updates the status badge and counts every few seconds — no need to reload.

Enrichment Jobs — list page with one running batch and three completed runs
crm.aggrandizelabs.com/contacts/enrichment-jobs
ContactsEnrichment Jobs

Enrichment Jobs

Every PDL enrichment your org has run. Click a row to see per-contact outcomes.

StartedFilterContactsOutcomesCreditsStatus
12 minutes agoTag: ICSC 2026142
38 / 4 of 142
$11.40running
2 hours agoMissing email86
41 / 7 of 86
$12.30completed
1 day ago12 contacts selected12
9 / 1 of 12
$2.70completed
3 days agoTag: Q2 Outreach218
0 / 0 of 218
$0.00failed
Auto-refreshes while a job is pending or running.

The detail page

Click any row to open the per-job detail page. The top of the page is a summary card with the status, start time, filter, and a four-card outcome breakdown:

  • Enriched — successful matches that wrote at least one field.
  • No match — the provider had no record.
  • Name mismatch — the provider returned someone, but the name didn't agree with the contact's. Auto-applying was deliberately blocked.
  • Provider error — a transient failure (rate limit, network, etc.).

Each card shows the count and the percentage of the run. The total credits charged sit alongside.

Below the summary, four collapsible groups (one per outcome) list every contact in that bucket. Click any contact to open their detail page; click a Resolve → button on a flagged contact to dispatch the same canned prompt the Enrichment tab uses.

Job detail — Name mismatch group expanded with Resolve → buttons
crm.aggrandizelabs.com/contacts/enrichment-jobs/7e1cee36
ContactsEnrichment Jobs
runningStarted 12 minutes ago·Tag: ICSC 2026
Enriched
38
70%
No match
12
22%
Name mismatch
4
7%
Provider error
0
0%
54 contacts processed
$11.40 charged
Enriched· 38
No match· 12
Name mismatch· 4
  • Jack GriffithResolve →
  • Bobby TanResolve →
Provider error· 0

When you arrive at a contact's detail page from a job, the back button at the top of the contact page reads "← job 7e1cee36…" instead of the usual "Contacts" — click it to return to the job you were inspecting. This lets you sweep through several contacts in a single batch without manually navigating back through the contacts list each time.

When it's useful

  • Confirming a recent batch finished cleanly.
  • Investigating why a batch had more no-matches than expected — open the No match group and scan the contacts to spot patterns (e.g., subsidiaries the provider doesn't index).
  • Working the Name mismatch group to run candidate review on contacts that almost matched.
  • Auditing credit usage for a billing period.

Permissions

SurfaceWho can use it
Single-contact enrichment (assistant)Any org member (with credit balance, with approval)
Bulk enrichment from the contacts listOwner / admin only
Re-enrich gesture on a contact's Enrichment tabOwner / admin only
Enrichment tab on contact detail (view)Any org member
Enrichment Jobs pageAny org member (you can see what's running, but only owners/admins can start new ones)

Limits

  • 5,000 contacts per batch — narrow your selection if you've selected more.
  • One enrichment job at a time per org — start a second while the first is running and the system asks you to wait.
  • Already-enriched contacts are skipped in bulk runs (no re-charge) unless you explicitly re-enrich them one at a time from the Enrichment tab.

Frequently asked

Does the provider always find a match?

No. The provider has the best coverage for U.S. professional contacts with an email or a strong name + company signal. Coverage is thinner for service-industry workers, very junior staff, or contacts in countries with limited public professional-data sources. The bulk-action UI shows you the estimated max cost before you commit; the realized cost is usually lower because some contacts return no match (free).

Can I undo an enrichment?

Enrichment is fill-only — it never overwrites a field a person has manually typed. So most enrichment runs are non-destructive. The fields the provider populated on your contact are tagged internally; if you ask the assistant to "clear the enrichment data on Devon Walsh," it can remove just those fields.

My contact has a follow-up flag I can't make go away.

Flags auto-clear when their underlying condition resolves. If the email-collision flag stays after you've handled the colliding contact, try the Resolve button on the Enrichment tab — it walks the assistant through the cleanup. If the flag persists across a re-enrichment, that's a bug — please reach out.

What does the provider see about my CRM?

Only the lookup keys you send — email, or first name + last name + company name. The provider doesn't see the rest of your CRM data, your other contacts, your deals, or your billing details. Returned results land only on the contact you enriched; no cross-contact leakage.

On this page