Solution · Your existing pipeline
The best roofing leads you own are already in your CRM.
Every roofing company is sitting on hundreds of old leads nobody called back. The roofs on those addresses have aged since. Some of them are now ready, and you already have the phone number.
The standard advice is to buy more leads. It is also the most expensive option available, and it asks you to trust a list of strangers from a vendor you have no reason to believe. Meanwhile the dead weight in your own CRM — the estimate that went cold in 2023, the storm canvass that never got worked, the referral that went quiet — is a list you already trust, already paid for, and already have contact details for.
What that list has always been missing is a reason to call any specific person on it today. Working it means starting at the top and dialling until you give up, which is why nobody works it. A roof condition is the missing signal, because it changes on its own schedule: a roof that was five years from replacement when the lead went cold is now two years from it, and some of them have had a hail event since.
Roof condition is readable from above, which means the whole back catalogue can be re-read without anyone driving anywhere. Roofbird takes the addresses you already hold, looks at each roof from satellite and street imagery, ranks them against each other, and hands back the ones worth a call. Same list, sorted by something that actually predicts a job.
How to score the leads already in your CRM
- 1
Connect the CRM you already run
JobNimbus, AccuLynx or SalesRabbit, using a key you create inside your own account. Nothing is imported and nothing is copied out — Roofbird reads the addresses it needs and leaves everything else alone.
- 2
Pick which leads
This is the part that matters, because nobody wants their whole database read. Filter to the segment you actually care about: a city or a state, a pipeline stage, everything created before a date, or anything nobody has touched in a year. The options are read from your own records, so the status names are your CRM's spelling rather than something you have to guess at.
- 3
See how many match before you commit
It samples your CRM and tells you how many records fall inside your filter, and if none do, which part of the filter rejected them. That check reads your records but scores nothing, so it costs you nothing. You decide to spend after you know the number, not before.
- 4
Start it once and let it run
Tell it how many to score and it works through them in the background, in batches. You can close the page. You can stop it at any time and everything scored so far is kept. Nothing starts on its own and nothing carries on past the size you authorised.
- 5
Let it place each address and read the roof
Each record is placed on the map and its roof read from imagery. Addresses that cannot be pinned to a specific building are skipped rather than guessed at, because scoring a street centroid produces a confident read of whichever house happened to be nearest — which is worse than no answer.
- 6
Work the top of the returned list
You get your own records back, ordered worst roof first, each with a plain sentence about what the AI saw. Replace-now and worn are the bands worth calling; recent means the roof has been done and the lead is dead for roofing whatever the CRM says about it.
- 7
Optionally write the score back
If you map a custom field, the score can be written onto the record so your CRM can sort and filter by it natively. This is off unless you ask for it, and it only ever writes to fields you nominated — your notes and your pipeline stages are never touched.
- 8
Call the ones you already have numbers for
This is the part that makes it different from a cold list. These are people who once asked you for something, which makes the call a follow-up rather than an intrusion — and follow-ups to a prior enquiry sit on very different footing than a cold dial, both commercially and legally.
Why an old lead can be a better lead
A cold list is a list of strangers, and the hard part is not the roof, it is the standing. You are a company they have never heard of, calling about a house you have never visited. An old CRM record inverts that. They contacted you, or you quoted them, or somebody canvassed them and had a conversation. There is a reason on file to be calling, and often a name to use. The reason it never converts is not that the relationship is bad, it is that nobody has a reason to pick that specific record out of four hundred others today. That is exactly the gap a current roof read fills. "We quoted you in 2023 and I noticed the south slope has started losing granules since" is a specific, checkable, non-salesy opening that only exists because somebody looked. It is also true, which is the part that matters when they walk outside and look up.
What it costs, and what it does not
Reading a roof from your CRM costs exactly what reading a roof from a scan costs: one from your monthly scored-roof allowance. It is the same AI read of the same kind of image, and the only difference is where the address came from. Records that get skipped for want of a usable address cost nothing, because nothing was read. You already have the contact details, which is the whole point of working your own list — so no credit is spent on looking one up. Scoring a CRM record draws on the same credit allowance a scan does, one credit per house read, and nothing more. And because ranks are cached, a street somebody has already read is free. If you scan a neighbourhood and later score CRM records on the same streets, the second read costs nothing.
What the ranking does and does not claim
The score is comparative, and being straight about the scope of that comparison matters more than making it sound better than it is. The model ranks roofs against each other, so a batch of a hundred produces an ordering of those hundred. The tier — replace now, worn, midlife, recent — is the part that holds across batches, so it is what the list is sorted on first. The percentage inside a tier only compares a roof against the others read alongside it. A CRM graded in eight batches is not one league table of eight hundred, and presenting it as one would be a chart that looks more precise than the thing it measures. We also do not claim to know what is under the shingles. This is a read of what is visible from above and from the street, dated, with the imagery date attached so you can see how fresh the picture was. A roof read from four-year-old Street View is a roof that may have been replaced since, and you should be able to see that before you open with what we saw.
It reads, and that is all it reads
Pointing a tool at a system of record deserves suspicion, so: scoring reads addresses. It does not read your financials, your job costs, your production schedule or your customer notes, and it does not copy your database anywhere for its own use. Writing back is off unless you turn it on, and when it is on it writes only to the specific custom fields you nominated. Notes, pipeline stages, milestones and anything your team typed are never modified — a bulk job that overwrote those would be unrecoverable on your side, which is reason enough never to build the option. You can disconnect at any time. Records already created in your CRM stay yours; we never delete on your side.
FAQ
›Can I score just one segment instead of everything?
Yes, and it is the normal way to use it. Filter by city, state, ZIP, pipeline stage, creation date, or how long a record has sat untouched, and only those records are read. Anything outside the filter is looked at and discarded for free, so you never spend on leads you did not ask about.
›Does it score every lead in my CRM?
Only the ones you ask for, up to the number you authorise. A 10,000 record database is one decision rather than a hundred button presses: you set the segment and the size, it runs through them in background batches, and it stops the moment it hits the size, your quota, or Stop. It never starts on its own.
›How do I know it is worth doing before I pay for it?
Run the match check first. It samples your CRM and tells you how many records are in your segment without scoring any of them, which costs nothing. If the number is small or zero, it also tells you which part of the filter rejected the rest.
›Does this use up my monthly scan allowance?
Yes. A roof read from your CRM counts the same as a roof read from a scan, because it is the same read. Records that could not be placed on a map are skipped and cost nothing. The remaining allowance is shown next to the button before you press it.
›Do I have to unlock contacts to use this?
No, and that is the appeal. These are your records, so you already have the phone numbers. Contact unlocks are not involved at any point.
›Will it change anything in my CRM?
Nothing, unless you set up a field for it to write to. By default it reads addresses and gives you a list. Even with write-back on, it only touches custom fields you nominated — never notes, stages or anything your team wrote.
›What happens to records with a bad address?
They are skipped and reported as skipped, with the reason. An address that only resolves to a street or a ZIP centroid would put the imagery crop on whichever building is nearest, and a confident read of the wrong house is worse than an honest gap.
›Which CRMs can it read?
JobNimbus, AccuLynx and SalesRabbit today. AccuLynx requires their AppConnections add-on to be enabled before it will issue an API key, which is their requirement rather than ours.
Read next
Find out what is in your own pipeline
Connect your CRM on the free trial and score a hundred old records. If none of those roofs turned out to be ready, you have learned that for nothing.
Get started free →