Dev.to WebDev 🛠 Dev 👁 0 📖 2 min read

What I learned building a lead finder for local businesses

I build websites and do SEO for local businesses. For years my biggest problem was not the work, it was finding the next client. So I built a small tool to fix that, and along the way I learned a few things about what ac

I build websites and do SEO for local businesses. For years my biggest problem was not the work, it was finding the next client. So I built a small tool to fix that, and along the way I learned a few things about what actually makes a local business a good lead.

The manual way does not scale

The classic approach is Google Maps: search "dentists in Dallas", open every listing, check if there is a website, look at the reviews, paste it into a spreadsheet. It works, but it takes hours, and you mostly end up with businesses that do not need you.

"No website" is a weak signal on its own

My first idea was simple: find businesses without a website. It turned out that alone is not enough. A lot of listings without a website are closed, tiny, or not interested.

What worked better was combining signals:

  • No website listed on the Google Business Profile
  • Few reviews compared to similar businesses in the same area
  • A weak listing overall: missing photos, hours or description
  • Signs of a real, active business: a solid rating and recent activity

The best leads are usually businesses that already have customers and a good reputation, but a clear gap online. That is a much easier conversation than pitching someone who has nothing.

Turning signals into a score

Instead of a yes/no filter, I ended up with an opportunity score. Here is a simplified example of the idea (not the exact production logic):

function opportunityScore(biz) {
  let score = 0;
  if (!biz.website) score += 40;
  if (biz.reviewCount < 10) score += 20;
  if (biz.rating >= 4.3) score += 15; // real, liked business
  if (!biz.hasPhotos || !biz.hasHours) score += 15;
  if (biz.isPermanentlyClosed) score = 0;
  return Math.min(score, 100);
}

Sorting by a score like this changes the whole workflow: you start with the ten most promising businesses instead of scrolling through a hundred.

Keep the human part human

I deliberately did not add phone number or email scraping, and the tool does not send messages. Every lead links to its public Google Maps listing, you verify it yourself, and you write a personal message. Automated cold outreach to local businesses mostly burns your reputation, and it raises privacy questions I did not want to build into a product.

The result

The tool is called FindLeadly. You search a city and a niche, and it shows local businesses with no website, few reviews or a weak online presence, each with an opportunity score. You can save leads, open them in Google Maps and export them to CSV. There is a free plan with 20 leads per month.

If you freelance in web design or SEO, I would love feedback: what signals do you look for when you decide if a local business is worth contacting?

📰 Read the original article on Dev.to WebDev

Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.