←Attio plays
Tooling

Enrich Attio companies and write a fixed fit score

A Kestrel build, not client work, run on test companies in our own Attio workspace. It picks every company that has no score from the current rules version, pulls firmographics from Crustdata through Deepline in batches, scores each company with fixed weights and writes the score, tier, reasons and firmographics back as Attio attributes. Two of the other Attio plays, champion job changes and lookalikes, use this score as their gate.

Works ifYou want every company in Attio scored the same way, with the reason written next to the score.

Built for · Kestrel · Attio test workspace
CrustdataDeeplineAttioTypeScript

Built asDeepline PlayOn demandcapped at $0.40 a run

Get the prompt for your coding agent

The system

~/builds/attio-enrich-and-score
01Attio

Query

Companies without a current score

Rules version is not the current one.

Attio
34
Crustdata company search, 25 domains per callcached per batchCrustdataDeepline
Gate: found? in a target industry?not found = no score · outside = capped at D
02Score

Fixed rules

Size, growth, funding, country, industry

Every point written out as a reason.

ABCD
1 · 6 · 20 · 5

Not found

Not scored, reason written

2
03Write back

Fit

Score, tier, reasons, version

Attio

Firmographics

Headcount, country, funding

Attio
Every company in Attio scored the same way, with the reasons next to the score.

What it solves

A company in Attio with no score from the current version of your rules.

Why it matters

A score you can explain and reproduce is one your team will use to sort a list and that other automations can gate on. An LLM guess changes between runs.

How it works

01

Find the companies to score

One Attio query: every company whose rules version isn't the current one. New companies and companies scored by older rules both come back. Already scored ones don't.

02

Enrich in batches

Crustdata company search through Deepline, 25 domains per call: headcount, 6-month growth, country, last funding round and date, LinkedIn industry. Responses are cached per batch.

03

Gate: known, and in a target industry?

A company Crustdata doesn't know is written as not scored. A company in an industry outside your list is capped at tier D, whatever the other signals say. The rest are scored on fixed weights: A from 70, B from 50, C from 30.

04

Write back to Attio

Score, tier, the reasons for every point, the time and the rules version on the company, plus employee count, HQ country, funding stage and last funding date.

Build notes

  • The first rules had no industry check, and a childcare company passed another play's gate at tier C. The current rules read the LinkedIn industry and cap anything outside the target list at D.
  • Crustdata's search limit counts rows, not companies, and one domain can return several look-alike rows. With the limit set to the number of domains, a batch can come back short. It is now 4 times the batch.
  • Round types that say nothing reliable about stage, such as unknown series, corporate rounds, grants and debt, leave the funding stage empty instead of guessing. The score uses the date of the last raise, so this never changes a score.
  • The rules version is stored on every company. A re-run right after the 34 picked up nothing, and changing the rules rescans everything in one query.

Questions

Why fixed rules and not an LLM score?

Rules give the same score for the same input, and every point is written out in the reasons field. Other plays use the score as a gate, so it has to be reproducible. The first version of the rules ran three times on the same 10 companies and data and gave identical tiers each time.

What happens to a company the provider doesn't know?

It gets no score and no tier, and the reasons field says it wasn't found. If it had a score from an older version of the rules, that score is cleared, so a stale tier can't survive a rules change. 2 of the 34 companies ended up like that.

More builds

All builds →
Tooling

Find contacts at companies with 2 to 10 staff

Your buyers work at companies too small for contact databases to cover.

Open→
Tooling

Build lead lists with checks before shipping

Your lead lists go straight into email campaigns and cold calls, and one wrong name costs you trust.

Open→
Tooling

Sync sequencer replies to Attio stages and tasks

You run sequences in one or more tools and want every reply to update Attio without copying it over by hand.

Open→

The next step

Let's get started.