DEV Community

Cover image for Rank on Google: Local SEO for Small Businesses to Get More Clients
joseph quesada
joseph quesada

Posted on • Originally published at wedoitwithai.com

Rank on Google: Local SEO for Small Businesses to Get More Clients

As content strategists and developers at We Do IT With AI, we understand that for small to medium businesses (SMBs), local SEO isn't just a buzzword; it's a critical lifeline for lead generation. This post outlines how we combine modern web development practices (Next.js, Vercel) with AI-assisted workflows to create high-impact, SEO-optimized landing pages and web apps for local businesses. We'll dive into the technical implementation details that drive the business outcomes discussed in our main blog, focusing on practical snippets and architectural choices.

Imagine this: a new customer just moved to your town and needs a great restaurant, a reliable salon, or a cozy hotel. They pull out their phone, type 'restaurants near me' or 'best salon in [city]', and what pops up? Is it your business, or your competitor's? If you're not on the first page of Google, you're missing out on customers right now.

What not showing on Google costs your business today

Being invisible online costs you real money. A small restaurant in San José told us they estimated losing 15-20 reservations a week because customers couldn't easily find their menu or contact details online. That's easily $300-$500 in lost revenue weekly, just from not showing up on Google. Multiply that by a year, and it’s a significant hit to your bottom line. While experts gather at conferences like MozCon to discuss the latest SEO trends, the core problem for small and medium businesses (SMBs) remains: if customers can't find you, they can't choose you.

Many local businesses rely on word-of-mouth, but that's not enough in today's digital world. Your potential customers are searching Google every single day. If your competitors are ranking higher, they're getting those calls, those reservations, those walk-ins. It's not about having the fanciest website; it's about having a website that Google understands and trusts enough to show to local searchers.

The actual fix: Simple SEO for Small Businesses

You don't need to be an SEO (Search Engine Optimization, which just means ranking on Google) expert to understand what works. Think of it like making your business easy to find with a clear sign, a good location, and great customer service. Online, it's similar:

1. Optimize Your Google Business Profile (formerly Google My Business)

This is your most powerful free tool. It's the little box that appears on the right side of Google Search or at the top of Google Maps when someone searches for your business. Make sure it's 100% complete and accurate:

  • Name, Address, Phone (NAP): Consistent everywhere.
  • Hours: Always up-to-date.
  • Categories: Pick the most relevant ones (e.g., 'Restaurant', 'Hair Salon', 'Boutique Hotel').
  • Photos: High-quality pictures of your place, products, and team.
  • Reviews: Respond to every review, good or bad.

2. Build a Mobile-Friendly & Fast Website

Most local searches happen on phones. If your website takes ages to load or is hard to navigate on a small screen, people will leave. Google knows this and penalizes slow, clunky sites. A modern, AI-assisted landing page like the ones we build is designed from the ground up to be lightning-fast and look perfect on any device.

You can quickly check your site's speed on Google's PageSpeed Insights. Our goal is always a score in the 90s, ensuring your potential customers don't abandon your site before they even see your menu or services.

3. Use Local Keywords on Your Site

Think like your customers. What would they type into Google? Instead of just 'restaurant', use 'best seafood restaurant Jacó' or 'hair salon Escazú with highlights'. Incorporate these phrases naturally into your website's content, especially in:

  • Titles and Headings: Like this article's title, making it clear what your page is about.
  • Descriptions: The short text that appears under your title in Google search results.

For example, a good meta description for a restaurant might look like this:

<meta name="description" content="Saborea los mejores mariscos frescos de Jacó. Restaurante familiar con vistas al mar. ¡Reserva tu mesa hoy!">
Enter fullscreen mode Exit fullscreen mode

This tells Google exactly what your page offers and entices users to click.

4. Get and Respond to Customer Reviews

Reviews build trust, not just with customers, but with Google too. Encourage satisfied customers to leave reviews on your Google Business Profile, Facebook, and other relevant platforms. And always, always respond. A simple 'Thank you for your visit!' goes a long way. This social proof is a huge ranking factor for local SEO.

5. Integrate WhatsApp for Instant Communication

Once a customer finds your site, make it easy for them to connect. A prominent WhatsApp button on your landing page can increase inquiries by 20-30%. People prefer quick chats over filling out forms or waiting for emails. This direct line to you helps convert curious visitors into paying customers, often in just seconds.

<a href="https://wa.me/YOURPHONENUMBER?text=Hola%2C%20quisiera%20saber%20más%20sobre%20sus%20servicios." target="_blank">
  <img src="/whatsapp-icon.png" alt="Chatea con nosotros por WhatsApp" style="width:50px;">
</a>
Enter fullscreen mode Exit fullscreen mode

This simple HTML snippet, which we handle for you, adds a clickable WhatsApp icon, pre-filling a message to make it even easier for customers.

DIY Local SEO vs. Hiring We Do IT With AI

You COULD try to do all this yourself. You'd need to learn about keywords, Google Business Profiles, website speed optimization, structured data, and keep up with Google's constant updates (which are often the subject of those big SEO conferences). It's easily 10-15 hours a week of dedicated work, plus the time to learn. And even then, without specialized tools and experience, you might miss crucial details that keep you off the first page.

Or, you could focus on running your amazing business. For just $100/month, our agency handles all this for you. We build you a modern, AI-assisted landing page designed for local SEO, ensure it's fast and mobile-friendly, integrate WhatsApp, and manage your online presence. That covers your hosting, database, maintenance, and even content updates. You get more leads and a professional online image, without lifting a finger on the tech side.

Real Case: Restaurante 'El Sabor Costarricense'

A small 'soda' (local restaurant) in Heredia, 'El Sabor Costarricense', struggled to attract tourists and new residents, despite having fantastic food. Their old website was slow, didn't appear on Google Maps, and had no clear way to contact them online. After we built them a new AI-assisted landing page focused on local SEO, optimized their Google Business Profile, and added a WhatsApp button, they saw incredible results.

Within two months, 'El Sabor Costarricense' went from an average of 2-3 walk-ins per day from Google searches to 10-15. Their phone calls for reservations doubled, and they started getting an average of 5 WhatsApp inquiries daily. Their owner, Doña Flor, told us: "Ahora los turistas llegan preguntando por el 'casado' que vieron en Google. ¡Nunca pensé que una página web haría tanta diferencia!" (Now tourists arrive asking for the 'casado' they saw on Google. I never thought a website would make such a difference!). This is the kind of tangible outcome our clients experience.

FAQ

  1. Can I update the content myself?
    Yes! We design our sites so you can easily update menus, services, prices, or special offers through a simple interface, without needing to touch any code. We can also handle it for you as part of your monthly plan.

  2. How long until I see results?
    For local SEO, you can often see initial improvements in visibility and traffic within 4-8 weeks, especially with a properly optimized Google Business Profile and a fast site. Significant ranking improvements can take 3-6 months, as Google learns and trusts your site.

  3. Why not just use Wix or Squarespace?
    While platforms like Wix or Squarespace are easy to use, they often come with hidden costs in performance and SEO limitations. Our custom, AI-assisted sites are built with modern technologies like Next.js for superior speed, better SEO control, and more flexibility for integrations (like WhatsApp), giving you a stronger foundation for growth that generic platforms often can't match. They might seem cheaper upfront, but can cost you more in lost leads and missed opportunities long-term.

Ready to make your business shine on Google and attract more local customers? Book a free assessment with WeDoItWithAI today! We'll show you how simple and affordable it can be to dominate your local market.


Developer's Corner: Implementing Local SEO with Next.js and AI

While the main article focuses on the business impact of local SEO for SMBs, achieving these results relies on a robust and well-engineered technical foundation. At WeDoItWithAI, we leverage modern web technologies and AI to deliver high-performance, SEO-friendly landing pages and web apps.

We primarily build our applications using Next.js, hosted on Vercel, and integrate various AI tools to streamline the development and optimization process. This stack provides inherent advantages for SEO, such as server-side rendering (SSR) or static site generation (SSG) for faster initial page loads and better indexability by search engines.

Architecture Overview

Our typical architecture for an AI-assisted landing page for an SMB client looks something like this:

graph TD
    A[Client Browser] -->|Request| B(Vercel Edge Network)
    B -->|Serve Static/SSR| C(Next.js App)
    C -->|API Calls| D(Backend API - e.g., Node.js/FastAPI)
    D -->|Data Storage| E(Database - e.g., PostgreSQL/Supabase)
    D -- AI-Assisted Content Gen --> F(OpenAI/Gemini API)
    C -- Webhooks/Integrations --> G(WhatsApp API)
    C -- SEO Optimization --> H(Structured Data, Meta Tags)
    H -- Monitored by --> I(Google Search Console)
Enter fullscreen mode Exit fullscreen mode

Components Explanation:

  • Next.js App: Our frontend framework of choice, enabling highly performant and SEO-friendly applications through SSR/SSG. It allows us to manage _app.js, _document.js, and specific page components to inject SEO metadata effectively.
  • Vercel Edge Network: Provides global CDN and intelligent routing, ensuring extremely fast load times crucial for Google's Core Web Vitals and user experience.
  • Backend API (Optional): For dynamic content, complex business logic, or integrating with external services. Can be serverless functions on Vercel or a dedicated Node.js/FastAPI service.
  • Database: Typically PostgreSQL or Supabase for reliable, scalable data storage for dynamic content like menus, product lists, or booking information.
  • OpenAI/Gemini API: Utilized for AI assistance in content generation (e.g., crafting meta descriptions, blog post drafts, or quick copy for landing pages), keyword research augmentation, and even automating initial responses for chatbots.
  • WhatsApp API: Crucial for SMBs to enable direct, instant customer communication, integrating seamlessly into the web app for lead conversion.
  • Structured Data, Meta Tags: Implemented directly within Next.js components to provide rich snippets in search results. For local businesses, LocalBusiness schema is paramount.
  • Google Search Console: Essential for monitoring indexing status, crawl errors, and performance metrics, guiding ongoing SEO improvements.

SEO Implementation Snippets

Here's how we approach implementing key SEO elements within a Next.js application:

1. Dynamic Meta Tags & next/head

For a LocalBusiness page component, we dynamically set meta tags:

// pages/restaurantes/[slug].tsx
import Head from 'next/head';
import { useRouter } from 'next/router';
import type { GetServerSideProps } from 'next';

interface RestaurantProps {
  restaurant: { 
    name: string; 
    description: "string; "
    address: string; 
    phone: string; 
    image: string;
  };
}

export default function RestaurantPage({ restaurant }: RestaurantProps) {
  const router = useRouter();
  const { slug } = router.query;

  return (
    <>
      <Head>
        <title>{restaurant.name} | {restaurant.address.split(',')[0]} - ¡El mejor!</title>
        <meta name="description" content={restaurant.description} />
        <meta property="og:title" content={`${restaurant.name} en ${restaurant.address.split(',')[0]}`} />
        <meta property="og:description" content={restaurant.description} />
        <meta property="og:image" content={restaurant.image} />
        <meta property="og:url" content={`https://wedoitwithai.com/restaurantes/${slug}`} />
        <link rel="canonical" href={`https://wedoitwithai.com/restaurantes/${slug}`} />

        {/* Local Business Schema JSON-LD */}
        <script
          type="application/ld+json"
          dangerouslySetInnerHTML={{
            __html: JSON.stringify({
              "@context": "https://schema.org",
              "@type": "Restaurant", // or LocalBusiness, Hotel, etc.
              "name": restaurant.name,
              "image": restaurant.image,
              "address": {
                "@type": "PostalAddress",
                "streetAddress": restaurant.address.split(',')[0],
                "addressLocality": restaurant.address.split(',')[1],
                "addressRegion": "Heredia", // Example
                "postalCode": "40101", // Example
                "addressCountry": "CR"
              },
              "telephone": restaurant.phone,
              "url": `https://wedoitwithai.com/restaurantes/${slug}`,
              "priceRange": "$$", // Example
              "servesCuisine": "Costa Rican", // Example
              "acceptsReservations": "True"
              // ... more properties like aggregateRating, openingHours
            })
          }}
        />
      </Head>
      {/* Page content goes here */}
      <h1>Bienvenido a {restaurant.name}</h1>
      <p>{restaurant.description}</p>
      {/* ... */}
    </>
  );
}

export const getServerSideProps: GetServerSideProps = async (context) => {
  const { slug } = context.params as { slug: string };
  // Fetch restaurant data from API or DB based on slug
  const res = await fetch(`https://api.example.com/restaurants/${slug}`);
  const restaurant = await res.json();

  if (!restaurant) {
    return { notFound: true };
  }

  return {
    props: { restaurant },
  };
};
Enter fullscreen mode Exit fullscreen mode

This snippet demonstrates how next/head combined with getServerSideProps allows us to dynamically inject page-specific metadata and structured data (JSON-LD) for enhanced SEO. The LocalBusiness schema is crucial for local search visibility, providing Google with explicit details about the business.

2. AI-Assisted Meta Description Generation

While the example above uses a pre-defined description, in practice, we often use AI to generate or refine these. For instance, given a restaurant's name, cuisine, and key selling points, an OpenAI call can produce several compelling meta descriptions. This reduces manual effort and ensures optimized, click-worthy snippets.

# Python (FastAPI/Node.js backend example) for generating meta descriptions
import openai

def generate_meta_description(business_name, business_type, keywords, call_to_action):
    prompt = f"""Generate 3 concise and compelling meta descriptions (under 150 characters) for a {business_type} called '{business_name}'.
    Focus on keywords: {', '.join(keywords)}. Include a strong call to action like '{call_to_action}'.
    """
    response = openai.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}]
    )
    return [choice.message.content.strip() for choice in response.choices]

# Example usage:
# descriptions = generate_meta_description(
#     "El Sabor Costarricense", 
#     "Costa Rican restaurant", 
#     ["casado", "Heredia", "comida típica"],
#     "¡Visítanos hoy!"
# )
# for desc in descriptions:
#     print(desc)
Enter fullscreen mode Exit fullscreen mode

This integration allows for rapid iteration and testing of SEO content, ensuring our SMB clients always have optimized online visibility. This AI-driven approach is a core part of how 'We Do IT With AI' delivers modern, effective solutions.

Architecture Overview

Our typical architecture for an AI-assisted landing page for an SMB client looks something like this:

graph TD
    A[Client Browser] -->|Request| B(Vercel Edge Network)
    B -->|Serve Static/SSR| C(Next.js App)
    C -->|API Calls| D(Backend API - e.g., Node.js/FastAPI)
    D -->|Data Storage| E(Database - e.g., PostgreSQL/Supabase)
    D -- AI-Assisted Content Gen --> F(OpenAI/Gemini API)
    C -- Webhooks/Integrations --> G(WhatsApp API)
    C -- SEO Optimization --> H(Structured Data, Meta Tags)
    H -- Monitored by --> I(Google Search Console)
Enter fullscreen mode Exit fullscreen mode

Components Explanation:

  • Next.js App: Our frontend framework of choice, enabling highly performant and SEO-friendly applications through SSR/SSG. It allows us to manage _app.js, _document.js, and specific page components to inject SEO metadata effectively.
  • Vercel Edge Network: Provides global CDN and intelligent routing, ensuring extremely fast load times crucial for Google's Core Web Vitals and user experience.
  • Backend API (Optional): For dynamic content, complex business logic, or integrating with external services. Can be serverless functions on Vercel or a dedicated Node.js/FastAPI service.
  • Database: Typically PostgreSQL or Supabase for reliable, scalable data storage for dynamic content like menus, product lists, or booking information.
  • OpenAI/Gemini API: Utilized for AI assistance in content generation (e.g., crafting meta descriptions, blog post drafts, or quick copy for landing pages), keyword research augmentation, and even automating initial responses for chatbots.
  • WhatsApp API: Crucial for SMBs to enable direct, instant customer communication, integrating seamlessly into the web app for lead conversion.
  • Structured Data, Meta Tags: Implemented directly within Next.js components to provide rich snippets in search results. For local businesses, LocalBusiness schema is paramount.
  • Google Search Console: Essential for monitoring indexing status, crawl errors, and performance metrics, guiding ongoing SEO improvements.

SEO Implementation Snippets

Here's how we approach implementing key SEO elements within a Next.js application:

1. Dynamic Meta Tags & next/head

For a LocalBusiness page component, we dynamically set meta tags:

// pages/restaurantes/[slug].tsx
import Head from 'next/head';
import { useRouter } from 'next/router';
import type { GetServerSideProps } from 'next';

interface RestaurantProps {
  restaurant: { 
    name: string; 
    description: "string; "
    address: string; 
    phone: string; 
    image: string;
  };
}

export default function RestaurantPage({ restaurant }: RestaurantProps) {
  const router = useRouter();
  const { slug } = router.query;

  return (
    <>
      <Head>
        <title>{restaurant.name} | {restaurant.address.split(',')[0]} - ¡El mejor!</title>
        <meta name="description" content={restaurant.description} />
        <meta property="og:title" content={`${restaurant.name} en ${restaurant.address.split(',')[0]}`} />
        <meta property="og:description" content={restaurant.description} />
        <meta property="og:image" content={restaurant.image} />
        <meta property="og:url" content={`https://wedoitwithai.com/restaurantes/${slug}`} />
        <link rel="canonical" href={`https://wedoitwithai.com/restaurantes/${slug}`} />

        {/* Local Business Schema JSON-LD */}
        <script
          type="application/ld+json"
          dangerouslySetInnerHTML={{
            __html: JSON.stringify({
              "@context": "https://schema.org",
              "@type": "Restaurant", // or LocalBusiness, Hotel, etc.
              "name": restaurant.name,
              "image": restaurant.image,
              "address": {
                "@type": "PostalAddress",
                "streetAddress": restaurant.address.split(',')[0],
                "addressLocality": restaurant.address.split(',')[1],
                "addressRegion": "Heredia", // Example
                "postalCode": "40101", // Example
                "addressCountry": "CR"
              },
              "telephone": restaurant.phone,
              "url": `https://wedoitwithai.com/restaurantes/${slug}`,
              "priceRange": "$$", // Example
              "servesCuisine": "Costa Rican", // Example
              "acceptsReservations": "True"
              // ... more properties like aggregateRating, openingHours
            })
          }}
        />
      </Head>
      {/* Page content goes here */}
      <h1>Bienvenido a {restaurant.name}</h1>
      <p>{restaurant.description}</p>
      {/* ... */}
    </>
  );
}

export const getServerSideProps: GetServerSideProps = async (context) => {
  const { slug } = context.params as { slug: string };
  // Fetch restaurant data from API or DB based on slug
  const res = await fetch(`https://api.example.com/restaurants/${slug}`);
  const restaurant = await res.json();

  if (!restaurant) {
    return { notFound: true };
  }

  return {
    props: { restaurant },
  };
};
Enter fullscreen mode Exit fullscreen mode

This snippet demonstrates how next/head combined with getServerSideProps allows us to dynamically inject page-specific metadata and structured data (JSON-LD) for enhanced SEO. The LocalBusiness schema is crucial for local search visibility, providing Google with explicit details about the business.

2. AI-Assisted Meta Description Generation

While the example above uses a pre-defined description, in practice, we often use AI to generate or refine these. For instance, given a restaurant's name, cuisine, and key selling points, an OpenAI call can produce several compelling meta descriptions. This reduces manual effort and ensures optimized, click-worthy snippets.

# Python (FastAPI/Node.js backend example) for generating meta descriptions
import openai

def generate_meta_description(business_name, business_type, keywords, call_to_action):
    prompt = f"""Generate 3 concise and compelling meta descriptions (under 150 characters) for a {business_type} called '{business_name}'.
    Focus on keywords: {', '.join(keywords)}. Include a strong call to action like '{call_to_action}'.
    """
    response = openai.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}]
    )
    return [choice.message.content.strip() for choice in response.choices]

# Example usage:
# descriptions = generate_meta_description(
#     "El Sabor Costarricense", 
#     "Costa Rican restaurant", 
#     ["casado", "Heredia", "comida típica"],
#     "¡Visítanos hoy!"
# )
# for desc in descriptions:
#     print(desc)
Enter fullscreen mode Exit fullscreen mode

This integration allows for rapid iteration and testing of SEO content, ensuring our SMB clients always have optimized online visibility. This AI-driven approach is a core part of how 'We Do IT With AI' delivers modern, effective solutions.


Want This Implemented for Your Business?

At WeDoItWithAI, we deploy production-ready AI solutions for companies. Book a free 30-minute assessment.

Top comments (0)