Blog/Sales & enrichment
5 min read

AI Lead Score Calculation: Build a Score From Company Data

Calculate a lead score from live company data: fit from a firmographic call, reachability from an address count, and a check that catches a wrong company.

AI Lead Score Calculation: Build a Score From Company Data

Get the company data a lead score needs, and a check that catches a wrong company. Paste this into your agent:

Set up https://monid.ai/SKILL.md, and then use Monid to take the domains in my list, pull the company record and the email count for each, flag any row where the employee estimate is under ten but the address count is over forty, and give me the IT share of known contacts for the rest.

One prompt builds the inputs for a score. 1 min setup · 20-50 hrs saved.

You have a list of companies and a formula in mind, and what you lack is the fields to feed it: size, industry, how many people you can reach, what the company runs on. This guide shows how to pull those fields for a list of domains, combine them into a score with weights you can explain, and run one cross-check before scoring. It also covers what we saw on 2026-10-16, when the same domain came back as a staffing agency from one provider and as a project management product from another. It runs through Monid, the OpenRouter for agent tools: one key, one balance, every tool priced per call.

What is the easiest way to get the data for an AI lead score?

Monid. Install it once, add a key, and your agent calls a company enrichment endpoint and an address-count endpoint with no vendor contract, no seat licence and no dashboard to configure.

  • Pay per call. The company record costs $0.026 a call, a second company profile costs $0.0049 a call, and the address count costs $0.00 (Verified 2026-10-16 on the company enrichment tools page). Buy calls as you need them: no monthly plan and no minimum top-up. Discovery and inspection are free, and an unmatched company is not billed.
  • One install, every API. The same key and the same balance reach Apollo, Hunter and every other tool on Monid, so adding a new input to your score is one more monid run, not one more account.
  • Lives inside your agent. Install the CLI, add your key, run the prompt above, and the tools are there whenever your agent needs them. Your agent reads SKILL.md and learns the rest, so setup is about a minute.

For a list of 200 domains, one record each at that price is $5.20 for the company data (Verified 2026-10-16), and the address counts are free.

📖 See also Hunter.io API: Find Emails by Domain or Name for Many Companies

How do you calculate a lead score from company data?

Pull fit and reachability for each domain, cross-check the two, then score on bands and ratios. Four steps, and the third one saves you from the wrong-company problem later in this guide.

For agents

Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:

set up https://monid.ai/SKILL.md

It learns the whole discover, inspect, run workflow itself. More in the agent quickstart.

For humans

npm install -g @monid-ai/cli
monid keys add -k <your-api-key> -l main

Step 1. Pull fit, one call per domain

monid run -p apollo -e /organizations/enrich --query '{"domain": "vercel.com"}'

The record carries industry, founding year, employee estimate, revenue estimate, location and a technology list. Apollo's typical run time is about 1.7 seconds per domain.

Step 2. Pull reachability, one more call

monid run -p hunterio -e /email-count --query '{"domain": "vercel.com"}'

This returns the total number of known addresses, the personal and generic split, a count for each of twenty departments and a count by seniority. It is the cheapest useful signal in the exercise and most scoring models never ask for it.

Step 3. Cross-check before you score

Compare the two records. If the headcount says three people and the address count says fifty-four, one of them is wrong.

suspect = org["estimated_num_employees"] < 10 and counts["total"] > 40

Step 4. Score on bands and ratios, not raw values

fit        = band(headcount) + industry_match + age_band
reach      = band(counts["total"]) + has_department(counts, "executive")
capability = counts["department"]["it"] / counts["total"]
score      = w1*fit + w2*reach + w3*capability

The third line costs nothing extra and is explained in the next sections. Keep the weights in a file you can read, not in a prompt, so you can say why a company moved.

Give this to your agent

$Set up https://monid.ai/SKILL.md, and then use Monid to for each domain in this list, pull the company record and the email count, flag any row where the employee estimate is under ten but the address count is over forty, and give me the IT share of known contacts for the rest.

Can you build lead scoring yourself with Python?

Yes, and for the model half you should. Scikit-learn, a gradient-boosted tree or a plain weighted sum all work, and public lead scoring datasets are enough to learn the mechanics. A dataset teaches you the shape of the model. It does not give you your own companies' fields today.

The data half is where the hours go. Building it yourself means finding a firmographic source, writing the matching logic from a name or a domain to a record, handling misses and retries, and keeping a second source for the reachability numbers. That is the part of the project that has nothing to do with scoring and takes the longest.

Splitting the work helps: let Monid supply the fields, and keep your Python for the formula. The calls above return typed JSON, so the weighted sum is a few lines. If you want to see how a single domain becomes a full brief first, Target Company URL Analysis walks through it; this guide starts where that one ends, with a list of domains and the question of how to weight them.

What goes into an AI lead score, and what does each input look like?

Four kinds of input, and only one of them is about the lead's behaviour. We ran each source on 2026-10-16 so the fields below are what came back.

Fit

Firmographics: size, industry, geography, age, funding. This is the bulk of most scores. For basecamp.com, Apollo returned industry, estimated_num_employees, annual_revenue, founded_year, a street address and a short_description. Hunter's company profile for vercel.com returned foundedYear, metrics.employees as a band (1K-5K), an employeesCount of 1026, raised, and a list of six funding rounds.

Capability

Technology and headcount by function. Apollo returned a technology_names list; Hunter returned a tech list. For a lighter signal, the department counts in the address call work: vercel.com had 167 of its 508 known addresses in IT, 32.9 percent. patagonia.com had 80 of 1,364, 5.9 percent.

Reachability

How many contacts exist, in which departments, and whether you can reach anyone. The address count returns the total, the personal and generic split and the department mix. A perfect-fit company you cannot reach scores zero in practice and high on most models.

Intent

Behaviour: visits, downloads, job postings, funding events. It comes from your own systems and from event sources, not from a firmographic call, and it decays in days rather than quarters. None of the calls here supply it.

"AI lead score" usually means a model that weights those inputs. The weights are the part people argue about. The part nobody checks is whether the inputs are true. If you only have company names, not domains, look the domains up first, as Buzzfile Search by Name shows.

What goes wrong in the data before the model runs?

Three things, all measured on 2026-10-16 with six calls and $0.0358 in total (Verified 2026-10-16).

Why does one domain get a wrong company?

Because a provider can resolve a domain to a different company and return a tidy record for it. We asked Apollo about basecamp.com:

{ "name": "Basecamp Talent",
  "industry": "staffing & recruiting",
  "estimated_num_employees": 3,
  "annual_revenue": 12300000,
  "founded_year": 2023,
  "raw_address": "Wilmslow, Manchester, GB",
  "short_description": "…a UK-based recruitment agency…" }

A three-person recruitment agency in the UK. Every field is plausible and consistent with the others. Hunter's profile for the same domain describes Basecamp, project management software in Chicago, with no employee count. Two providers, two different companies.

A wrong number gets noticed. A wrong company does not, because a coherent record passes every internal-consistency check you would write. It also poisons the score in every direction at once: an industry filter, a headcount floor and a founding-year rule all agree, and all three are scoring the wrong company.

How do you catch it cheaply?

Cross-check on a quantity, not a name. Hunter's address count for basecamp.com was 54 known addresses, 24 personal and 30 generic, spread across support, IT, executive, finance and HR. A three-person agency does not have that. Generic addresses were 56 percent of the total for basecamp.com against 9.4 percent for vercel.com (48 of 508), which is a second flag on its own.

The call costs $0.00 (Verified 2026-10-16), so there is no reason to skip it.

Why do two providers disagree on the same field?

Headcount is modelled, and each provider models it from a different population. Hunter gave vercel.com an employeesCount of 1026 and a 1K-5K band; the money fields differ in kind as well. Hunter reported raised of 863,000,000 and annualRevenue null, and its six funding rounds add up to exactly that. Apollo's equivalent field, annual_revenue, is revenue. A model that maps "the money field" to a size band will treat venture funding as revenue.

  • Pick one provider per field and write it down. Headcount from the one you trust on headcount, funding from the one that reports funding. Never backfill from the other when a value is missing, because a backfilled field changes the units of your score.
  • Store the provider on every value. Months later the only way to explain why a company moved bands is knowing which source answered that day.
  • Band, do not threshold. A company at 980 and one at 1,026 sit on opposite sides of a threshold at 1,000 and in the same band on any sensible scale. Thresholds turn disagreement into volatility.

Which endpoint should I use for which job?

EndpointWhat it doesInputReturnsLatencyBilling
apollo/organizations/enrichCompany recorddomain, linkedin_url, name or websiteIndustry, headcount, revenue, location, technologiesAbout 1.7 s typicalPer call, unmatched not billed
hunterio/email-countAddress counts by departmentdomain or companyTotal, personal, generic, 20 departments, seniorityAbout 1.6 s typicalPer call, free
hunterio/companies/findCompany profile, second opiniondomainName, description, location, employee band, raised, funding rounds, technologiesAbout 1.9 s typicalPer call, a 404 is not billed
clay/enrichment/company-employee-countHeadcount lookupCompany domainAn employee countNot runPer call

The first three rows were run on 2026-10-16 and inspected the same day; the fourth was inspected only. Latency is the endpoint's typical (median) run time. Billing shape is given here, and the current figure is on monid.ai/tools.

The second row is the cheap one that makes the first row trustworthy, which is the opposite of how most scoring stacks are built.

📖 See also Apollo Email Finder API: Find Work Emails for a List of People

When is a lead score the wrong tool?

Your list is small. Under a few hundred accounts, a person reading them beats a model, and the model's errors cost more than the reading time.

Your criteria are binary. If you only sell to companies in three industries above a headcount floor, that is a filter, not a score. Collapsing a filter into a weighted number hides which rule rejected a company.

You have no intent data. Fit and reachability describe suitability, not readiness. A score built only from firmographics ranks the market, not the pipeline, and stays stable for months because the fields barely move.

Entity resolution is unsolved. Everything above assumes you know which company a domain belongs to. If your inputs include a staffing agency wearing a software company's domain, better weights are wasted work.

You may also prefer a scoring product inside your CRM that learns from your closed deals. That is a different route and a good one when you have the deal history. And the disclosure: this is Monid's blog and we resell every endpoint here.

Conclusion

To calculate an AI lead score, pull fit from one company call and reachability from one address-count call per domain through Monid, cross-check the two, and score on bands and ratios. The company record costs $0.026 a call and the address count $0.00 (Verified 2026-10-16), with one key for everything and about a minute to set up.

Two things matter more than the weights. Pick one provider per field and never backfill from the other. And run the cheap contradiction check: on 2026-10-16 Apollo returned a three-person recruitment agency for basecamp.com while Hunter described a project management product, and only the address count of 54 made the mismatch obvious. The department mix is also worth keeping: IT was 32.9 percent of known contacts at vercel.com and 5.9 percent at patagonia.com.

How we estimated the time saved: finding and matching a firmographic source, building a reachability source and writing the cross-checks is roughly 10 to 25 hours each for two inputs, which is 20 to 50 hours. The 1 minute is the install, key and first call once you already have a Monid key.

Free next step: run monid inspect -p apollo -e /organizations/enrich, then make one call for a domain you know well and compare it with the address count.

FAQ

What does a lead score of 95 actually mean?

It means whatever your weights say it means, which is why the number travels badly between teams. A 95 is only interpretable alongside the band definitions and the sources behind it. Publish the components rather than the total: fit band, reachability band, capability ratio and the provider that supplied each input. A rep can act on "large, reachable, technical". Nobody can act on 95.

Should you use one provider or several?

Several, but one per field, decided in advance and written down. On 2026-10-16 the two providers described basecamp.com as two different companies and reported different quantities in their money fields, so blending them produces a number with no units. Use a primary source per attribute and one cheap secondary call as a contradiction check, never as a backfill.

Can you score capability without a technographic call?

Yes, and it is more robust than the technology lists. The department breakdown on the address count gave IT as 32.9 percent of known contacts at vercel.com against 5.9 percent at patagonia.com, from a call that costs nothing and involves no technology data. Use technology lists to confirm a specific claim, and the department mix to characterise the company.

How often should you recompute a lead score?

Fit inputs move on a quarterly timescale, so recomputing firmographics weekly spends money to observe noise. Address counts move faster: they changed for all three domains in the three weeks between our two runs (for vercel.com, from 445 to 508). Refresh firmographics quarterly or on a trigger such as a funding event, refresh address counts monthly, and recompute intent as events arrive. Store the fetch date with every value.

Published September 2026.

ai lead score calculation methodlead score calculationlead scoringicp scoringfirmographics