New: API Reference docs are live — integrate Cleanlist enrichment into your apps. View API docs →
Features
Smart Columns

TL;DR: Smart Columns are AI-driven enrichment columns you add to any lead list. There are 17 built-in types covering data cleaning, company research, email validation, AI generation, and ICP scoring. Costs range from 0.1 to 3.0 credits per row.

Smart Columns

Smart Columns turn your lead list into a programmable spreadsheet. Add a column, pick its type, and Cleanlist runs the column against every (or every selected) row in the background — using the same provider waterfall and credit pool as the rest of the platform.

What you can do

CategoryExamples
Data hygieneClean first name, format phone numbers, validate emails
Company researchEnrich company, find competitors, find similar companies, website analysis
Person researchLinkedIn research, contact timezone
Quality checksData quality name check, data quality domain check
AI generationCold intro email, custom AI prompt, custom classification
TargetingICP fit analysis (against any saved ICP profile)

Each column writes its result into a new field on every row, queryable via the portal and exportable like any other column.

The 17 built-in column types

Column typeCost (credits/row)What it does
clean_first_name0.1Normalize a messy first name (capitalization, accents, formatting)
format_phone0.1Convert a phone number to E.164 format
email_validation0.2Run an extra deliverability check (Emailable / ZeroBounce)
enrich_company0.5Pull industry, headcount, description, founded year, social links
linkedin_research0.5Summarize a contact's LinkedIn profile (recent activity, role, tenure)
find_competitors0.5Identify a company's top competitors
find_similar_companies0.5Find lookalike companies
website_analysis0.5Summarize a company website (positioning, products, ICP signals)
icp_fit_analysis0.5Score a contact / company against a saved ICP profile
data_quality_name_check0.5Detect malformed or low-quality names
data_quality_domain_check0.5Detect personal / catch-all / disposable domains
contact_timezone0.5Infer a contact's local timezone from location data
custom_ai1.0Run a custom AI prompt over each row (e.g., "Write a 1-line opener")
custom_classification1.0Classify rows into your own categories
cold_intro_email3.0Generate a personalized cold outreach email

All costs come from your organization's regular credit pool. Failed runs cost 0 credits.

How execution works

Smart Columns run asynchronously, the same way enrichment workflows do:

  1. You create the column (choosing a type and any per-column config)
  2. Cleanlist queues a Temporal workflow on the smart-columns-queue
  3. Each row is processed in parallel
  4. As rows complete, the portal updates live (no refresh needed)
  5. You can re-run just the failed rows from the column header menu

Rows that already have a value can be skipped to save credits.

When to use Smart Columns vs raw enrichment

ScenarioUse
You need email or phone for a fresh contactPublic API enrichment (partial, phone_only, full)
You already have a list and want to enrich the company of each rowenrich_company Smart Column
You want to score contacts against an ICPicp_fit_analysis Smart Column
You want a personalized email per rowcold_intro_email Smart Column
You need to clean up a messy importclean_first_name, format_phone, data_quality_*

Smart Columns are portal-only today — they're not exposed via the Public API. You can still integrate by uploading rows via the portal (or via the public bulk enrichment endpoint, which writes to your DEFAULT list) and then layering columns on top.

Custom AI columns

The custom_ai and custom_classification columns let you run your own prompt against every row. You get:

  • Access to every field on the row ({{first_name}}, {{company.domain}}, {{primary_email}}, etc.)
  • Choice of output format (text, JSON, classification label)
  • A live preview that runs against 3 rows before you commit

This is ideal for:

  • Drafting first-line opener variants
  • Tagging rows by buying intent or persona
  • Pulling specific facts from a company website summary
  • Generating custom enrichment fields not covered by the built-in column types

Tips for keeping costs predictable

  • Filter first. Apply a list filter, then run the column on the filtered selection.
  • Re-run only failed rows. The column header menu has a Run failed only option.
  • Test on a small sample. Right-click → Run on selection to try a column on 5–10 rows before scaling.
  • Stack thoughtfully. cold_intro_email (3 credits) is much cheaper if you've already run enrich_company (0.5) and linkedin_research (0.5) — the AI has more context to draft with.

Related