Data Quality Skill

Bad data costs more than you think. This skill verifies, enriches, and cleans any contact or account list against Lusha’s verified B2B data — in one pass.

Overview

The Data Quality Skill takes any contact or account list — a CRM export, an inbound lead batch, a campaign list, or a territory file — and runs it against Lusha’s verified B2B database. Bounced emails get replaced. Stale titles get updated. Missing direct dials get filled. Duplicate records get flagged. Every change is shown with the source and confidence level so you know exactly what was fixed and why.

Give it a list and a one-line context — what the list is for and what data quality bar it needs to clear. It verifies each record via the Lusha in Claude connector, enriches missing fields, flags records that can’t be verified, and returns a clean list with a data quality summary. No manual checking, no spreadsheet formulas, no guessing which records are stale.

The result is a list your team can actually use — with every record verified, every gap filled where Lusha has the data, and every unfixable record flagged before it wastes a rep’s time.

What it does

  • Email verification — checks every email address against Lusha’s verified database. Flags bounced, invalid, and unverifiable addresses. Returns the correct email where one exists.
  • Title and role refresh — checks whether each contact is still in the role on record. Flags departures and title changes. Returns the current title and tenure where available.
  • Direct dial enrichment — fills missing direct dials from Lusha’s verified phone database. Flags records where no direct dial is available.
  • Firmographic enrichment — fills missing company fields — industry, employee count, revenue range, HQ — from Lusha’s company database.
  • Duplicate detection — flags duplicate records in the list before enrichment so you’re not verifying the same contact twice.
  • Data quality summary — returns a summary of what was verified, what was enriched, what was flagged, and what couldn’t be matched — so you know the state of the list before it goes anywhere.

Use cases

Pre-campaign list cleaning

Before a campaign goes out, run the skill across the full contact list. Bounced emails get replaced, stale titles get updated, missing direct dials get filled. The campaign hits real inboxes — not a graveyard of addresses that haven’t been verified since last year.

CRM import quality gate

Before a new lead batch hits the CRM, run the skill to verify every record against Lusha. Duplicates get flagged, missing fields get filled, and unverifiable records get quarantined before they pollute the database. The CRM stays clean from the point of entry, not after six months of bad data compounds.

Quarterly territory refresh

Before a quarterly review, run the skill across a rep’s full territory file. Contacts who have left get flagged, titles that have changed get updated, and missing direct dials get filled. The rep walks into the quarter with a verified list — not a file that hasn’t been touched since last quarter’s QBR.

Why this works

The instructions Claude uses to run this skill. Copy it into a .md file in your Claude Code skills folder, or paste it into a Claude project as a custom instruction.

Example outputs in this skill are illustrative — they reflect the structure, fields, and format of real Lusha connector output, but were not pulled from a live session. Run the skill with your own data and connectors to see live results.

---
name: data-quality-skill
description: >
  Verify, enrich, and clean any contact or account list against
  Lusha's verified B2B database. Checks emails, refreshes titles,
  fills missing direct dials, enriches firmographics, and flags
  duplicates and unverifiable records. Returns a clean list with
  a data quality summary showing exactly what was fixed and why.
connectors:
  required: lusha
  optional: crm
campus_url: https://www.lusha.com/campus/plays/data-quality-skill/
category: Skills
---

# Data Quality Skill

Verify, enrich, and clean a contact or account list against
Lusha's verified B2B database. Show every change with source
and confidence level. Flag every record that can't be verified.
Return a clean list and a data quality summary.

## Input

The user will provide via $ARGUMENTS:

- Contact or account list (required) — paste inline or
  reference a saved list. Accepted formats:
  - Contact list: name, company, email, title (any combination)
  - Account list: company name or domain
  - Mixed: contacts and accounts together
- List context (recommended) — one sentence on what the list
  is for and what data quality bar it needs to clear. Examples:
  - "campaign list — needs verified emails and current titles"
  - "CRM import — needs deduplication and full enrichment
    before it hits Salesforce"
  - "territory file — quarterly refresh, flag anyone who has
    left and fill missing direct dials"

  If list context is missing, default to full verification
  and enrichment across all available fields and state that
  assumption at the top of the output.

## Workflow

1. Anchor on the list context.
   Read the list context from $ARGUMENTS. Identify which
   data quality checks are highest priority for this specific
   use case. State the parameters at the top of the output.

2. Parse and deduplicate the list.
   Before any enrichment:
   - Parse every record from the input.
   - Flag duplicate records — same email, same name and
     company, or same domain appearing more than once.
   - List duplicates in a separate section. Do not enrich
     duplicates — flag them for the user to resolve first.
   - State the total record count after deduplication.

3. Resolve and verify each record via Lusha.
   For each unique record, run these checks concurrently:

   Contact records:
   - Email verification: check the email against Lusha's
     verified database. Return one of:
     - Verified — email confirmed active
     - Updated — original email invalid, new email found
     - Bounced — email invalid, no replacement found
     - Unverifiable — contact not found in Lusha database
   - Title and role refresh: check whether the contact is
     still in the role on record. Return:
     - Confirmed — title and company match current Lusha data
     - Updated — title or company has changed, return new data
     - Departed — contact has left the company
     - Unverifiable — contact not found in Lusha database
   - Direct dial enrichment: return verified direct dial
     if available. Flag if not found.

   Account records:
   - Firmographic enrichment: fill missing fields — industry,
     employee count, revenue range, HQ, funding stage —
     from Lusha's company database.
   - Flag any accounts that could not be matched.

4. Classify each record.
   After verification and enrichment, classify every record:
   - Clean — all fields verified, no changes needed
   - Enriched — missing fields filled, existing fields confirmed
   - Updated — one or more fields corrected with new Lusha data
   - Flagged — contact departed, email bounced, or title changed
     — needs human review before use
   - Unverifiable — record could not be matched in Lusha —
     exclude from list or escalate for manual research

5. Write the data quality summary.
   Lead with the headline numbers: total records, clean,
   enriched, updated, flagged, unverifiable. Then the
   clean list. Then the flagged records. Then duplicates.
   Then unverifiable records.

## Output Format

### Data Quality Summary

List context: [restate in one line]
Total records processed: [n]
Clean: [n]
Enriched: [n]
Updated: [n]
Flagged — needs review: [n]
Unverifiable — excluded: [n]
Duplicates found: [n]

---

### Clean List

All verified and enriched records, ready to use.

Privacy rules — apply to every row:
- Names: initials only (e.g. J.K.)
- Email: domain only (j.k@[company].com)
- Direct dial: masked (e.g. +1 415 555 ••••)
- Tag the table: Records verified live via Lusha connector,
  [date]

| Name | Title | Company | Email | Direct Dial | Status |
|---|---|---|---|---|---|

Status values: Clean / Enriched / Updated

---

### Flagged Records — Needs Review

Records where something changed or a problem was found.
Do not use until reviewed.

| Name | Title | Company | Email | Flag | Reason | Recommended Action |
|---|---|---|---|---|---|---|

Flag types:
- Departed — contact has left the company
- Email bounced — invalid email, no replacement found
- Title changed — contact is still at company but role changed
- Company changed — contact has moved to a new company

---

### Duplicate Records

Records appearing more than once in the input list.
Resolve before enrichment.

| Name | Company | Email | Duplicate Of |
|---|---|---|---|

---

### Unverifiable Records

Records that could not be matched in Lusha's database.
Exclude from list or escalate for manual research.

| Name | Company | Email | Reason |
|---|---|---|---|

---
Built by: Lusha
Tools: Claude, Lusha
Type: Skill

FAQ

  • Do I need anything beyond Lusha in Claude?

    No. The skill runs entirely through the Lusha in Claude connector. Connect it once in Claude settings. Optional: connect your CRM if you want the skill to write verified records back directly after cleaning rather than returning them as a list to import manually.

  • How do I give it my list?

    Paste it directly into the chat — names, emails, company names, or domains, one record per line or as a table. If you run this regularly on the same territory or campaign list, save it once in a Claude Project as a custom instruction. The skill reads it automatically every time.

  • How is this different from the individual data quality plays?

    The individual plays — like Find the right email after a bounce or Verify a contact’s title before you reach out — are built for one record at a time. This skill is built for lists. It runs verification, enrichment, deduplication, and flagging across every record in one pass and returns a structured output your team can act on immediately.

  • What happens to records Lusha can't match?

    They go into the Unverifiable Records section at the bottom of the output — listed separately so you know exactly which records need manual research or should be excluded before the list goes anywhere. Nothing gets silently dropped.

  • Can I run this on just emails, or does it need full contact records?

    It works with whatever you give it. A list of emails only, a list of company domains only, or full contact records with name, title, company, and email — the skill enriches from whatever starting point you have. The more fields you provide, the higher the match rate. But even a domain list returns firmographic enrichment and flags companies that have changed significantly since the record was created.

Ready to run this?

Connect once, run anywhere. Works in Claude, ChatGPT, n8n, Clay, or any agent connected to Lusha.