Enrich the accounts
Source cascades, cost per account and fill rates.

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.
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.
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.