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 asDeepline PlayOn demandcapped at $0.40 a run
Get the prompt for your coding agentThe system
Query
Companies without a current score
Rules version is not the current one.
Fixed rules
Size, growth, funding, country, industry
Every point written out as a reason.
Not found
Not scored, reason written
Fit
Score, tier, reasons, version
Firmographics
Headcount, country, funding
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
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.
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.
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.
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 →Find contacts at companies with 2 to 10 staff
Your buyers work at companies too small for contact databases to cover.
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.
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.
The next step