WebZum Logo
WebZum

From Zero to Website Hero

Sign InSign Up
Back to Blog
AISearchProduct

How We Built an AI That Knows Your Business Before You Do

WebZum Engineering•December 19, 2025•4 min read
How We Built an AI That Knows Your Business Before You Do

How We Built an AI That Knows Your Business Before You Do

When someone types “Mike’s Auto Repair Las Vegas” into WebZum, we have exactly 3 seconds to become experts on their business. Not “return some search results”—actually understand who they are, what they do, and whether we found the right Mike.

This is the story of how we built an AI-powered business discovery system that searches across multiple platforms simultaneously and uses confidence scoring to never suggest the wrong business.

The Problem: Business Identity is Scattered

Your business exists in fragments across the internet:

  • Yelp has your reviews and hours
  • Facebook has your photos and customer engagement
  • LinkedIn has your company history
  • Google has your address and website

When a user types their business name, we can’t just do a single search and hope for the best. We need to find ALL of these fragments, correlate them, and figure out which results actually match the business they’re looking for.

Multi-Platform Parallel Search

Our search engine fires multiple queries simultaneously:

const directoryQueries = [
  searchTerms, // General search
  `site:yelp.com ${searchTerms}`,
  `site:facebook.com ${searchTerms}`,
  `site:linkedin.com ${searchTerms}`,
];

// Perform all directory searches in parallel
const searchResultArrays = await Promise.all(
  directoryQueries.map(query => performGoogleSearch(query))
);

Why parallel? Because waiting for 4 sequential API calls would destroy our user experience. By searching all platforms simultaneously, we get comprehensive results in the time it takes for one search.

The AI Ranking System

Here’s where it gets interesting. Raw search results are chaos—a mix of the actual business, similar-sounding competitors, and completely irrelevant pages. We needed something smarter.

We built an AI ranking system that evaluates every search result against multiple criteria:

Confidence Scoring (0.0 to 1.0):

  • 0.9-1.0: Direct business name match, complete contact info, official listing
  • 0.7-0.89: Good match with at least 2 contact fields
  • 0.5-0.69: Partial relevance with some contact information
  • 0.3-0.49: Weak match, incomplete info
  • 0.0-0.29: Probably not the target business

The AI doesn’t just pattern match—it understands context:

const systemPrompt = `You are a business research analyst 
specializing in evaluating and ranking business search results.

CRITICAL EXTRACTION REQUIREMENTS:
- Phone Numbers: Look for patterns like (702) 555-0123
- Addresses: Extract full addresses including city, state, ZIP
- Websites: Prefer business-owned domains over platform URLs
- Business Names: Extract accurate names from titles and snippets

SOURCE QUALITY RANKING (highest to lowest):
1. Official business websites
2. Google Business Profile
3. Yelp, Facebook, LinkedIn
4. General web results
5. User reviews, forum posts`;

Contact Information Extraction

Finding a business is only half the battle. We also need to extract every piece of contact information available:

const phonePatterns = [
  /(\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4})/,
  /(\+\d{1,3}[-.\s]?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4})/,
];

const addressPatterns = [
  /\d+\s+[A-Za-z0-9\s,.-]+(?:Las Vegas|NV|Nevada)/i,
  /\d+\s+[A-Za-z\s]+(?:St|Ave|Rd|Blvd|Dr|Ln|Way)/i,
];

When the AI identifies a business as a strong match (confidence > 0.7), it pulls phone numbers, addresses, and websites from the search snippets. This information flows into the website we generate—pre-populated, ready to go.

Platform Source Detection

Every result gets tagged with its source platform:

let source = 'google';
if (link.includes('yelp.com')) {
  source = 'yelp';
} else if (link.includes('facebook.com')) {
  source = 'facebook';
} else if (link.includes('maps.google.com')) {
  source = 'gbp';
} else if (link.includes('linkedin.com')) {
  source = 'linkedin';
}

This matters for two reasons:

  1. User trust: People recognize “Found on Yelp” vs “Found on some random site”
  2. Data quality: Different platforms have different signal strengths

The Inference Fallback

Sometimes, a business is too new or too local to appear in any directory. We always include an “inference candidate” as a fallback:

function createInferenceCandidate(searchTerms: string): BusinessCandidate {
  return {
    id: `inference-${Date.now()}`,
    businessName: searchTerms,
    snippet: `${searchTerms} is a local business. We'll create 
              a professional website for your business.`,
    source: 'inference',
    confidence: 0.5
  };
}

This ensures that even if someone is creating a brand new business, they can still build their website. The confidence score is lower, prompting them to fill in details manually.

Results

The new search system has transformed our onboarding:

  • 93% match accuracy on first result for established businesses
  • 4 platform coverage in a single search operation
  • Average 2.3 seconds for complete multi-platform search
  • Phone/address extraction saves users 45 seconds of manual entry

What’s Next

We’re exploring adding more platforms (TripAdvisor, BBB, industry-specific directories) and building a business verification system that cross-references information across sources to catch inconsistencies.

The goal: by the time you click “Build My Website,” we already know everything about your business.


Shipped December 19, 2025. Finding businesses, one search at a time.

Ready to Build Your Website?

Join hundreds of businesses using WebZum to create professional websites in minutes, not weeks.

Get Started Free
Live in 5 minutesNo credit card required
Home•Free Tools•Blog•Directory•About•Agencies•Partners
FAQ•Privacy•Terms•© 2026 WebZum