# Open source MadKudu alternative: looot-score

The code is MIT open source. The data is not free and not self-hosted: every real run calls looot and pays per call at the catalog price shown before the run. Score leads by fit against an ideal customer profile you edit.

## Short answer

looot-score is an MIT-licensed web app and CLI that enriches a CSV of leads, scores each one against an ideal customer profile you edit and returns a grade from A to D with the reasons. Every fact names the provider that supplied it. The code is open source. The enrichment data is paid per looot call.

## What it does

Upload a CSV with an email column, or first name, last name and domain columns. For each lead it fetches the person (title, seniority) and the company (industry, headcount, country, tech stack) from named providers.

It scores six criteria from your ICP file: company size, industry, country, job title, seniority and tech stack. Each grade lists the points earned, the fact found and the provider. A fact no provider returned earns nothing and is marked unknown.

Enrichment is stored. Editing the ICP re-scores every stored lead with no looot call. A company is fetched once per domain, however many leads share it.

This is the job that products such as MadKudu do.

## Commands

git clone https://github.com/loootai/looot-score && cd looot-score
npm install --ignore-scripts
npm run demo
npm run score -- --demo
npm run score -- data/sample-leads.csv --dry-run
export LOOOT_TOKEN=...
npm run score -- leads.csv --icp config/icp.json --max-spend 5

## Facts

- Job: Score leads by fit against an ideal customer profile you edit.
- License: MIT
- Language: TypeScript
- Needs: Node.js 20.9 or newer to run it, 22.12 or newer for its tests
- Needs: A looot token with the scopes runs.execute, catalog.read, runs.read and usage.read, for real runs only
- Needs: A funded looot balance, for real runs only
- Demo mode: Yes. npm run demo scores 40 generated leads on a reserved example domain. It needs no token, makes no network call and costs nothing.
- Repository: https://github.com/loootai/looot-score

## Endpoints it calls

- quickenrich: quickenrich-api-employees-email-search (people_enrich_by-email), Title, seniority and company, by email
- dropleads: dropleads-simple-enrich (people_enrich), Title and seniority, by name and domain
- thecompaniesapi: thecompaniesapi-companies-by-email (company_enrich), Industry, headcount and country
- predictleads: predictleads-companies-technology-detections (company_technographics), Tech stack

## What it does not do

- It grades fit only, from rules you can read. It has no behavioural or engagement scoring, no model trained on your closed-won deals and no CRM sync.
- Grades run from A to D. Hard rules cap a lead at D: a disqualified industry or title, or a personal mailbox with no company domain.
- Headcount ranges such as 51 to 200 are scored at their middle value.
- Response parsing was written from provider documentation and fixtures. The README says it was not checked against a recorded paid response, and every call is marked unverified in the code.
- The web app has no sign-in, and the ICP editor writes a config file on disk. Keep it on your machine or behind access control.

## Run it with an agent

Use looot to grade the leads in my CSV against my ideal customer profile. Read https://looot.ai/skill.md first. Then clone https://github.com/loootai/looot-score, run its dry run on my file and show me the quote and the cap. Run the real scoring only after I say yes, and list the A and B leads with the reasons for each grade.

## What does looot-score do?

It enriches a CSV of leads through looot, scores each lead against an ICP file and returns a grade from A to D. Every grade lists its criteria, the points earned and the provider behind each fact.

## Is looot-score free?

The code is free under the MIT license. The enrichment data is not. Every real run is a set of paid looot calls at the catalog price, quoted before the run. Demo mode and the dry run cost nothing.

## How is the grade decided?

Points earned over the points of the criteria in use, times 100, then cut-offs for A, B, C and D that you can change. A criterion with empty lists drops out. A fact no provider returned earns nothing and is marked unknown.

## What does scoring a CSV cost?

One person call per lead, plus one company call and one tech call per domain. The table on this page shows the live catalog price of each endpoint. The dry run prints the quote for your file.

## Does editing the ICP cost anything?

No. Enrichment is stored, so editing the ICP and re-scoring the stored leads makes no looot call.

## What does it not do?

It grades fit only. It has no engagement scoring, no predictive model and no CRM sync. Its parsers were written from documentation and fixtures and are marked unverified.

## Can I try it without a looot account?

Yes. npm run demo and the CLI --demo flag use generated leads and need no token. A real run needs a token and a funded balance.

## How do I run it from an agent?

Give your agent the prompt on this page and the setup link https://looot.ai/skill.md. The repo ships a skill that runs the dry run first, then the real run with a cap.

## Related

- /open-source-alternatives
- /mcp/thecompaniesapi
- /free-tools

## Last read

2026-10-11. Facts come from the repository on GitHub. The price per call is read live from the catalog on the web page.
