Enrich the accounts

Source cascades, cost per account and fill rates.

Layered canyon walls at sunset

Enrich only the fields that change a decision, in the order that costs least, and measure the fill rate on a sample before paying for the whole list. Most enrichment budgets go on columns nobody ever filters on.

The example continues: you sell payroll software to French SMEs and deduplication left 11,700 unique accounts. All sample results and volumes below are invented for the illustration.

Enrich only what feeds a decision

Take each criterion from your observable ICP and write what it decides. A field with no decision attached gets cut.

Field Decision it feeds Where it comes from Priority
Headcount In or out of the ICP, tier Registry band, LinkedIn page Required
NAF code Sector, and so the collective agreement Registry Required
Number of establishments Multi-site complexity Registry Required
Domain Key for everything else Company site, LinkedIn page Required
LinkedIn company URL Finding people in the next chapter Search by name Required
Technologies on the website Depends on what you sell Technology detection Optional
Revenue Rarely changes a payroll deal Registry filings, often missing Cut

Be honest about what a source can see. Website technology detection reads what runs on the site, such as the CMS or the analytics. It is a strong criterion if you sell to marketing teams and a weak one here, because a payroll system doesn’t show up on a public website.

Order each field’s sources from cheap to expensive

A source cascade means trying several sources for one field, in a fixed order, and stopping at the first valid answer. You pay for later sources only on the rows the earlier ones missed.

Field First Then Last resort Valid when
NAF, establishments SIRENE file None None Code present
Headcount Registry band LinkedIn page Read the site Non-empty and not NN
Domain Existing value LinkedIn page Top organic search result, checked Passes the blocklist
LinkedIn URL Existing value Search by name Manual The page name matches name_norm

Registry headcount and LinkedIn headcount measure different things. The first is a declared band that can lag by a year or more, the second counts people who list the company on their profile. I keep both and use the registry for the ICP filter when it is filled in.

Record where each value came from and when. In practice that is two extra columns per field:

UPDATE accounts
SET headcount = COALESCE(headcount_registry, headcount_linkedin),
    headcount_source = CASE
      WHEN headcount_registry IS NOT NULL THEN 'sirene'
      WHEN headcount_linkedin IS NOT NULL THEN 'linkedin'
    END,
    headcount_collected_at = CURRENT_DATE;

In a sheet, =IF(C2<>"",C2,D2) for the value and =IF(C2<>"","sirene",IF(D2<>"","linkedin","")) for the source do the same work. Those two extra columns are what let you explain a strange number six months from now and refresh only what is stale.

Red sandstone layers in a slot canyon

Measure the fill rate on a sample before you pay for the list

Take 200 accounts spread across your size bands and sectors, since small companies usually come back emptier than large ones. Run the cascade, then compute two numbers per field: how often you get a value, and how often that value is right. For the second, check 50 filled rows by hand against the company’s site.

=COUNTA(F2:F201)/ROWS(F2:F201) gives the fill rate on pasted values.

Field Filled of 200 Fill rate Right, of 50 checked Usable rate
SIREN from name 176 88% 47 83%
Domain 162 81% 48 78%
LinkedIn company page 148 74% 45 67%
Headcount from LinkedIn 138 69% 38 52%
Technologies detected 120 60% 41 49%

The usable rate is fill rate times accuracy, and it is the figure to plan with. A field at 52% can’t be a hard filter: an empty cell tells you the source had nothing, and says nothing about the company. Use such a field to add points in scoring and keep the accounts where it is empty.

River at the bottom of a layered canyon

Running the cascade with Derrick

I co-founded Derrick, so take this with that in mind. For a list this size I’d work in the web app or the Google Sheets sidebar, where each feature adds columns to the list; the API suits a job that has to rerun on a schedule.

Step Feature What goes in What comes out Credits per row
1 SIRET/SIREN Enrichment SIREN, SIRET or name Directors, headcount, address, legal fields 1
2 Filter on headcount and NAF Your columns Accounts still in the ICP 0
3 Search Companies Company name LinkedIn company URL 1
4 Enrich Companies LinkedIn URL or domain Website, staff count, range, city, phone 1
5 Website Technologies Website URL Detected stack 2

Where it falls short: Enrich Companies reads the company’s LinkedIn page, so a local business without one comes back empty, and that case has its own chapter. The LinkedIn-based features run on your own connected LinkedIn account, so check LinkedIn’s terms of use before running them at volume. The data is what the company wrote on its page, so a stale description or staff range comes through as it stands. Step 2 is there to save money: legal data first, so you only pay for the rest on accounts that qualify.

Without Derrick, join the free SIRENE file on the SIREN, look up the company page or website by hand for your top accounts, and buy a firmographic or technographic dataset only for the field your sample showed you can’t fill otherwise.

Work out the cost per usable account

Each step costs its unit price times the rows that actually reach it, so the order of the cascade drives the bill. Here, the filter at step 2 keeps 6,000 of the 11,700 accounts, 1,500 of them have neither a domain nor a LinkedIn URL, and you only run technology detection on the 1,500 best candidates.

Step Rows reached Credits per row Credits
Legal data 11,700 1 11,700
Search Companies 1,500 1 1,500
Enrich Companies 6,000 1 6,000
Website Technologies 1,500 2 3,000
Total 22,200

Running every step on every row would cost 58,500 credits for the same result. I count every row as billed, which gives you a ceiling. At the Standard plan’s €0.002 per credit (10,000 credits for €20 a month, see current pricing), 22,200 credits is €44.40, spread over a few months or put on a larger plan.

Then divide by what you can actually use. If 5,100 of the 6,000 accounts come out with every required field, your cost is €44.40 / 5,100, a little under one cent per usable account. The same formula works for any provider, and it makes quotes comparable.

Credits are the smaller part of the budget. Count the hours spent checking samples and clearing the review queue, at your loaded rate, next to the tool cost.

Your next step: pick your required fields, run the 200-account sample, and fill in the usable-rate table. Fields that stay under your threshold move to scoring bonuses, the rest go to the full run, and the accounts that survive move on to finding the right contacts.