StudioApps · 11 produktów · PL / DACH / EN / ES
Blog / Sales

Why we do not use machine learning to score leads

A model would calculate it better. Except that a salesperson who does not understand where a score came from simply stops looking at it — and at that point it does not matter how accurate it was.

Published 26.08.2026  ·  6 min read  ·  StudioApps

What we were building

A system for a factoring and leasing broker: pulling companies from a public register, scoring each of them, email campaigns and a sales pipeline in one place. Plus a public site with a commission calculator, live at plusfactor.pl.

At the heart of it sits the score: every company in the database gets a rating from 0 to 100 saying how well it matches the broker's offer. With several hundred companies in a batch, that is the difference between sensible work and phoning down the list.

Why not a model

The first reason is mundane: there was nothing to train on. A model needs history — hundreds of companies where the outcome of the deal is known. The broker was starting from zero. A model trained on a few dozen cases would mainly have learned the randomness of those few dozen.

The second reason matters more and remains true even once there is enough data. The salesperson has to be able to argue with the score. When they see a company at 80 and think it makes no sense, they want to know what earned those points — and then either change their mind or find a fault in the rules. With a model, the only available answer is „that is what came out”, and that ends with the score column being ignored.

The third reason is cost. Explicit rules are calculated locally, without querying a paid service for every company. Rescoring the whole database costs nothing beyond electricity.

How it is built

The score is made of several components with assigned weights — industry, size, legal form, company age, signals suggesting a need for financing. The weights are visible and editable, not buried in code. The broker adjusts them when their priorities change.

On top of that sits a matching matrix: around twenty-four financing institutions, each with its own criteria. A company too small for one fits another perfectly — so the score answers not „is it good” but „good for whom”.

The entire score is calculated from data the broker already holds. No paid queries at runtime — a practical consequence of explicit rules that rarely gets considered when choosing between rules and a model.

What acquiring the data costs — measured, not estimated

Company data comes from a public register available through a paid interface. An earlier note in the project quoted „two grosz per company”. Once measured, it turned out to be dozens of times cheaper: 3,250 register numbers took thirteen queries, that is 1.17 złoty in total — because queries retrieve data in batches rather than one company at a time.

Records retrieved
3,250
Register queries
13
Total cost
1.17 PLN
Companies in first batches
1,046

I tell this story because it is instructive regardless of subject: an estimate given once in good faith can live in a project for months. It took a cost counter built into the panel to show the real number. Since then every złoty spent on data is visible in the system.

Before the system got real campaigns

Before the first real send, we put the system through an audit with adversarial review — one side hunting for faults, the other trying to refute every finding. It produced 26 fixes, three of which could have hurt: protection against sending twice to the same company, restricting view-only access to genuine read-only, and versioning of the confidentiality agreement.

That is the order I recommend for any system touching personal data and outbound mail: first somebody tries to break it, then real campaigns start. The reverse order also works, except the cost of a mistake is paid on a live client.

How to set the weights when there is no history

Everybody who hears about explicit rules asks: how do you know industry should weigh more than company age? The answer is less scientific than one might like, and entirely sufficient.

  1. The initial weights come from the salesperson. Somebody who has spent years phoning these companies knows what distinguishes them. You sit down and write it out: what makes a company a good candidate and what disqualifies it.
  2. The first batch checks whether the scoring makes sense. Take a few dozen companies from the top of the list and a few dozen from the bottom, and have the salesperson judge them by hand, without seeing the points. If the judgements diverge, the fault is in the weights — and that is valuable information, not a failure.
  3. The weights are adjusted after every campaign. Since they are explicit and editable from the panel, a correction takes a minute and needs no supplier.

After a year of such corrections you have something more valuable still: a history a model could be trained on, should one turn out to be needed. The order „rules first, model perhaps later” works both ways round; the reverse does not.

One tool instead of four

The score is the heart, but on its own it settles nothing. The value of this project comes from the company database, the mailing, the calculator site and the sales pipeline being one system rather than four tools stitched together with a spreadsheet.

The practical consequence: a company scored at 80, which received a message, visited the site and calculated a commission, sits in the same place where the broker runs the conversation. Nothing has to be copied across and, more importantly, there is no gap for things to fall through.

Add permissions: thirteen separate rights across four roles, configurable. That sounds like overkill for a one-person business, but it is there for a specific reason — the system touches register data and correspondence, so view-only access has to be genuinely view-only.

Scoring is not the same as a decision

One last point, because it is a common source of disappointment: the score does not tell you who to call. It tells you what order to work through the list in.

The distinction matters. A company at 30 is not a company not worth calling — it is a company that waits when time is short. If the salesperson reads it the other way round, the system starts cutting them off from part of the market, without anybody having decided that.

That is why the panel shows not just the number but its components. A salesperson who sees „30 points, because the industry is outside the profile, but size and age are in favour” decides knowingly. One who sees only „30” simply scrolls past.

When a model does win

To be clear that we are not against them: a model makes sense when you have thousands of closed cases with known outcomes and the relationships are too tangled to write out as rules. Then it is worth it — and then you add an explanation of why a given company scored as it did, because without one you are back where you started.

Starting from zero, explicit rules are not merely cheaper. They are the only version the sales team will actually use.

Facing something similar?

Describe the process that is slowing you down. You will get an assessment of whether building is worth it, a rough cost and a timeline. No sales presentation.

Get in touch