Ranking

Ordered by confirmed work near you. Nothing else.

This page is how you check that.

The formula

This is the whole of it. Every business in a set of results gets one score, and the score is the product of four terms.

S = ln(1 + Vw) × Cb × (Rb / 5) × Fr

ties: nearest docket, then business id

Read from packages/core/src/ranking.ts. Ties are settled after the score, not inside it.

What each term is

Four terms, in the order they are multiplied. The arithmetic beside each one is the arithmetic in the code.

VwWeighted volume of confirmed work
Σ tier weight × distance weight
over every public docket

Every public docket the business holds, each weighted by what kind of record it is and how far it is from the point you searched. Work far away still counts, at a tenth, which is why the table below matters more than the count does.

CbConfirmation ratio
(confirmed + 3.5)
  / (marked done + 5)

Of the jobs the business marked done, the share a client confirmed. The prior of 3.5 over 5 is there so that one confirmed job out of one does not outrank forty out of fifty.

RbRating, out of five
(rating total + 5 × 4.3 × 4)
  / (4 × confirmations + 5 × 4)

The four ratings a client gives — quality, tidiness, communication and price — averaged over every confirmation this business has, and pulled toward the middle by a prior worth five confirmations. Divided by five in the score, to bring it into zero to one.

FrFreshness
0.5 + 0.5 × (done in 12 months
  / public dockets)

The share of the business’s public dockets that were done in the last twelve months. A business with no public dockets sits on the floor of 0.5, and its score is zero in any case.

The two tables Vw reads
verified 1  ·  confirmed 0.6  ·  past 0.3

0 to 2 km    × 1
2 to 5 km    × 0.6
5 to 10 km   × 0.3
beyond 10 km × 0.1

Distance bounds are inclusive, so a job at exactly two kilometres is in the first band. A job added retrospectively weighs 0.3 for 12 months after it was confirmed, and nothing after that. A logged docket — a photograph nobody confirmed — carries no weight and does not satisfy the radius.

The distance, which is a tie-break and not a term

Two businesses on the same score are separated by the distance to their nearest public docket, and then by their identifier. The identifier is the only tie-break left, and it is the one thing in this list that no business can influence.

Before the arithmetic

Four things decide whether a business is scored at all, and one decides where its block of results sits.

The trade you searched for is one the business lists. Nothing else about it is matched.

It is verified, or it is awaiting verification and has at least one job a client confirmed. A suspended business never appears.

It holds at least one public docket inside the radius you searched. The bound is inclusive.

For electrical and gas work it holds a current match against the public register for that trade. Without one it does not appear in that trade at all, whatever its record.

Lapsed insurance does not remove a business. It moves it below every business whose cover is current, ordered among those by the same arithmetic.

Three worked examples

Each card was scored by the same function a search calls, from the inputs printed on it. Nothing on them is typed; the figures are rounded for reading only.

01

Three verified jobs, all inside two kilometres

A quarter of the volume above, on the searcher’s own doorstep, every one photographed on site. It comes first.

Public dockets3, verified on site
Distance to each1.2 km
Marked done in the last 14 days3
Ratings4.7 out of 5, over 3 confirmations
Dockets done in the last 12 months3 of 3
Vw = 3.000
Cb = 0.813
Rb = 4.450
Fr = 1.000

S  = 1.002
02

Twenty jobs marked done, six confirmed

Twice the near work of the business above, and it still ranks below it: fourteen customers were asked and did not answer.

Public dockets6, verified on site
Distance to each1.5 km
Marked done in the last 14 days20
Ratings4.4 out of 5, over 6 confirmations
Dockets done in the last 12 months6 of 6
Vw = 6.000
Cb = 0.380
Rb = 4.355
Fr = 1.000

S  = 0.644
03

Twelve confirmed jobs, all fourteen kilometres out

Volume on its own. Every job is real and every one was confirmed, and none of it is near the person searching.

Public dockets12, client confirmed
Distance to each14 km
Marked done in the last 14 days14
Ratings4.5 out of 5, over 12 confirmations
Dockets done in the last 12 months9 of 12
Vw = 0.720
Cb = 0.816
Rb = 4.441
Fr = 0.875

S  = 0.344

Shapes of a record rather than businesses, at 3 decimal places.

Rank is never sold

Rank is never paid.

There is no plan, no listing fee, no bid and no boost anywhere in the arithmetic above, and there never will be. The only route up this list is work that a client confirmed.

If you ever see a result that does not fit this page, write to hello@affirmat.com and we will show you the inputs behind it.

Go deeper