Free tool

See which leads actually fit your ICP

Upload your prospect list, define your ideal customer and instantly see who is worth prioritising. Your file is processed in your browser and is never uploaded.

1

Upload your prospect list

A CSV with a heading row. Up to 5,000 rows and 8 MB.

Drop a CSV here, or choose a file.

No columns in particular are required. The more of job title, industry, employees and country your file has, the more of your ICP can be checked.

Your file is processed in your browser and is not uploaded to our servers. Nothing from it is stored anywhere, and no row reaches an analytics event.

2

Define your ideal customer

Fill in what matters. Leave a field empty and it is left out of the scoring entirely rather than counting against anyone.

Comma separated. Every word has to appear in the row's title, so keep them short.

Target seniority

Read from a seniority column if you have one, otherwise worked out from the job title.

Upload a file to enable this.

How the fit score works

Every criterion you set carries a weight, and the weights add up to 100 when all five are in use.

CriterionWeightHow it is matched
Job title30Every word of a target title must appear in the title on the row, so "Head of Growth" matches "Global Head of Growth" and not "Growth Marketing Manager". A short synonym table covers CEO, CTO, VP and founder.
Industry25Normalised through a small alias table (saas becomes software, fintech becomes financial services), then matched on containment in either direction.
Seniority15Read from a seniority column if your file has one. Otherwise derived from the job title, most senior first, and labelled as derived in the breakdown.
Company size15Parsed from whatever the column holds: a number, a band like 51-200, 1,000+, or 10k. A band resolves to its midpoint.
Country15Normalised through a country alias table that also reads location strings, so "London, United Kingdom" is the United Kingdom. A two-letter code is only trusted as the whole cell.

Two numbers come out of that, and keeping them apart is the whole idea.

Fit is the weight you matched as a share of the weight that could be read from your file. A row with no industry column is not punished for it in the fit score.

Data coverage is how much of your ICP could be evaluated at all. It is the honesty check on the fit score: a row scoring 100 on one readable criterion out of five has a coverage of around 30 per cent, and should not be at the top of anyone's call list.

How a row gets classified

ClassificationRule
Strong fitFit 80 or above, with at least 60% of your criteria readable from the file
Partial fitFit 50 or above, or a high fit read from too little of the row to trust
Outside ICPFit below 50
Not enough dataUnder 40% of your criteria could be read from the file

Those thresholds are 80 for a strong fit, 50 for a partial one, 60 per cent coverage before a high fit is trusted, and 40 per cent below which a row is reported as not having enough data. They are fixed, documented and the same for everyone, so two people scoring the same list get the same answer.

Missing data is never treated as a match. A blank industry cell is unknown, and unknown lowers coverage instead of quietly passing. Nothing in this tool infers a company attribute that is not in your file.

What stays in your browser

All of it. The file is read with the browser's own FileReader, parsed and scored by JavaScript on this page, and held in memory until you press Reset or close the tab. There is no request to Signl, no third-party service, no enrichment lookup and no storage.

Analytics on this page record counts only: how many rows were loaded, how many landed in each band, how many criteria were set. No names, no emails, no company names, no file name and no cell contents. That is a property of the code rather than a policy promise, which is the only version of this claim worth making.

The export is generated in the same way. The scored CSV is built in the tab and handed to your browser's download, with your original columns and values preserved exactly as they were read, plus seven columns of scoring.

Limits of scoring a CSV

  • It can only see what you uploaded. If your list has no industry column, industry cannot be scored, and the tool says so rather than guessing the company.
  • Job title matching is strict on purpose. "Head of Growth" does not match "Growth Marketing Manager". Loose matching produces confident wrong answers, which is the worse failure here.
  • Seniority is sometimes derived. Where your file has no seniority column, the level is read from the job title and labelled as derived in the breakdown so you can see which it was.
  • It is a filter, not a qualification. A strong fit means the person looks like someone you sell to, not that they want to talk. Fit is who; intent is when, and a list cannot tell you that.
  • Nothing here is enriched or verified. Signl has not touched your file, so the values are as accurate as the list you uploaded.

Fit tells you who, not when

A scored list answers which rows are worth a message. It cannot tell you which of them has the problem this month, because that information is not in a CSV; it is in what those people say in public.

That is the gap between a list and a signal, and it is covered in LinkedIn buying signals and in the wider guide to LinkedIn social listening. If you want to write the ICP this tool scores against into something that runs every day, define your ICP covers the fields Signl uses, which are the same five.

Questions, answered.

Is my prospect list uploaded anywhere?

No. The file is read by your browser, scored by JavaScript on this page, and held in memory until you reset the tool or close the tab. There is no upload, no server call and no storage: the page has no code that could send a row anywhere. The only thing that leaves is the scored CSV you choose to download.

How is the fit score calculated?

Each criterion you set carries a weight: job title 30, industry 25, seniority 15, company size 15, country 15. The score is the weight you matched as a share of the weight that could be read from your file, so a missing column lowers your data coverage rather than counting against the person.

Why is a row with a perfect match only a partial fit?

Because fit and coverage are separate numbers. A row whose only readable field is a matching job title scores 100 on fit and about 45 on coverage, and calling that a strong lead would be false confidence. A strong fit needs a fit of 80 or more with at least 60 per cent of your criteria readable from the file.

What happens to duplicate rows?

They are flagged, kept and left out of the counts. Duplicates are matched on the LinkedIn profile slug first, then email, then name and company together. Rows are never silently deleted from your file: the export has the same number of rows you uploaded, with a column saying which earlier row each duplicate matches.

Stop manually qualifying every lead.

Signl finds and qualifies the people engaging with the conversations in your market, so the list arrives already scored against who you sell to.

Free tool

Buyer Intent Keyword Generator

Generate the searches that surface people describing the problem you solve.

Seniority levels used: Founder / Owner, C-level, VP, Head of, Director, Manager, Individual contributor.