The Lead Generation Model That Created 897 Professional Connections (And How to Replicate It)

Projects· 6 min read

The Lead Generation Model That Created 897 Professional Connections (And How to Replicate It)

I've been running a gestoría directory for 3 months that has indexed 2,100+ pages and connects users with 897 verified providers.

The numbers:

→ 897 verified gestorías → 71,895 real reviews → 2,100+ indexed pages → Ranking #1 for "gestorías cerca de mí" (gestorías near me) → 96+ static pages for cities and services

But here's the interesting part:

This isn't an advertising project. It's a lead generation model.

And the difference is massive.

What a Lead Generation Model Really Is

Traditional advertising works like this:

1. You pay for impressions or clicks 2. You hope for conversions 3. The provider assumes all the risk

Lead generation inverts the equation:

1. The user actively searches for the service 2. You connect demand with supply 3. You charge only for qualified connections

The key is in the intent.

When someone searches "gestoría near me," they're not casually browsing. They need to solve a specific problem: switching from freelancer to corporation, filing taxes, managing paperwork.

That intent is gold.

The Real Numbers From the Project

I started with a simple hypothesis: if I can rank #1 for local gestoría searches, I can generate valuable leads for service providers.

The technical infrastructure:

  • **Next.js 15 with App Router**: ISR with 60-second revalidation
  • **Supabase + PostGIS**: Real proximity searches, not simple city filtering
  • **IndexNow API**: Real-time indexing without waiting for crawlers
  • **Dual CMS**: Supabase for business data + Sanity for editorial content

What I built:

1. Dynamic city pages: 96 static pages optimized for local SEO 2. Advanced search: PostGIS geolocation, filters by services, ratings 3. Complete profiles: Hours, services, indicative pricing, 71,895 verified reviews 4. Contact system: API route with Resend, honeypot protection against spam

But the magic isn't in the tech stack.

It's in how it monetizes.

How the Monetization Works

The model has three components:

1. Qualified Traffic

PostGIS enables real proximity searches. When a user searches "gestoría in Barcelona," they don't see a random listing. They see providers sorted by:

  • Real distance (not approximate)
  • Rating and number of reviews
  • Specific services offered

Real code from the project:

```typescript // PostGIS search in Supabase const { data: gestorias } = await supabase .rpc('nearby_gestorias', { lat: userLat, long: userLong, radius_km: 10 }) .order('distance') .limit(20); ```

This maximizes relevance. A lead from a user 2km from the provider is worth much more than a generic one.

2. Integrated Contact Forms

Each gestoría profile has a contact form. These aren't simple email links.

Implementation:

```typescript // API route to send leads export async function POST(request: Request) { const { name, email, message, gestoriaId } = await request.json();

// Honeypot spam protection if (request.headers.get('bot-field')) return;

// Send email to provider with Resend await resend.emails.send({ to: gestoría.email, subject: `New contact from directory`, html: leadEmailTemplate({ name, email, message }) });

// Save to Supabase for analytics await supabase.from('leads').insert({ gestoria_id: gestoriaId, user_email: email, message: message, created_at: new Date() }); } ```

Each submission is a trackable lead. You can measure:

  • Lead volume per provider
  • Conversion rate by city
  • Most requested services
  • Peak inquiry hours

3. Verification and Quality

Not all leads are created equal. That's why:

  • Honeypot protection against bots
  • Real email validation
  • Required fields that qualify the inquiry
  • Contextual information (what service they need, location)

A lead with specific context ("I need to switch from freelancer to SL, annual billing of X, urgent") is worth infinitely more than "Hi, info please."

Why This Model Scales

Lead generation for professional services has brutal advantages:

1. Low risk for providers: They don't pay for generic visibility. They pay for qualified connections.

2. High value per lead: A gestoría client can generate recurring revenue for years. A well-qualified lead justifies significant investment.

3. Technically scalable: Once the infrastructure is built, adding cities or service categories is incremental.

4. Network effect: More gestorías → more content → better SEO → more traffic → more leads → more gestorías.

The project code demonstrates this:

```typescript // Generate static pages for all cities export async function generateStaticParams() { const { data: cities } = await supabase .from('gestorias') .select('city') .distinct();

return cities.map(city => ({ city: city.slug })); } ```

Each new city is an automatically SEO-optimized page. No manual work.

The Technical Decisions That Matter

Three decisions made this model viable:

1. Dark Theme as Primary

Sounds trivial, but a B2B directory with modern design converts better. Users associate clean design with quality providers.

2. ISR with 60-Second Revalidation

Directories have a problem: outdated data. With ISR:

  • Real-time updated hours
  • New gestorías indexed immediately (IndexNow API)
  • No complete rebuilds

3. Real Geolocation, Not Filtering

PostGIS calculates real distances. It's not "gestorías in Barcelona city." It's "gestorías less than 5km from your exact location."

This matters in large cities.

What I Learned Building This

1. User intent is everything: Ranking #1 for "gestorías near me" generates leads with high transactional intent. These are users ready to hire.

2. Verification builds trust: I didn't invent 71,895 reviews. I imported them from Google Maps with a scraper. Authenticity > inflated volume.

3. Tech stack enables the model, doesn't create it: You can have the world's best infrastructure. If there's no demand or monetization doesn't work, it doesn't matter.

4. Scalability is architecture: The Next.js ISR, PostGIS, and IndexNow decisions aren't premature optimization. They're what allows growth without breaking the system.

How to Replicate This Model

If you want to build a directory with lead generation:

1. Choose a niche with high LTV: Professional services, B2B SaaS, specialized services. Avoid low-margin commodities.

2. Build for intent, not traffic: Better 100 visitors searching "urgent labor lawyer" than 10,000 browsing "legal information."

3. Real geolocation: PostGIS, Mapbox, Google Maps API. Proximity matters in local services.

4. Tracking from day 1: Every lead must be trackable. Without data, you can't optimize or charge for results.

5. Spam protection: Honeypot, email validation, CAPTCHA if necessary. A fake lead kills your reputation.

The Metric That Matters

It's not traffic. It's not indexed pages. It's not time on page.

It's qualified leads per provider per month.

If a provider receives 5 monthly inquiries from verified users in their area looking for specific services, you have a profitable product.

With 897 providers, the model scales.

Keep Building

The project is on GitHub: 0 stars, 0 forks, last updated 12/30/2024.

But the real numbers are in production:

  • Users finding nearby gestorías
  • Providers receiving qualified leads
  • A directory generating value by connecting supply and demand

It's not glamorous. It's a business model that works.

And you can replicate it with the right tech stack and focus on user intent.

If you're building something similar or want to talk about lead generation for professional services, my DM is open.

Brian Mena

Brian Mena

Software engineer building profitable digital products: SaaS, directories and AI agents. All from scratch, all in production.

LinkedIn