Video summary
I Built a Rank and Rent Style Directory from Scratch with Wordpress
Main summary
Key takeaways
Overview / Origin Story (Lead-Gen Directory “Rank & Rent” Idea)
- The creator learned that business directories can be monetized via lead submission forms: a person is paid to place a lead form on every listing (short-lived deal, ~5 days).
- The hypothesis: users who visit directory listings are willing to convert into leads.
- They build an experimental WordPress directory to test whether blogs + directory listings can generate leads in a niche that’s typically hard to rank: carpet cleaning in California.
Niche Research + Why This Structure is “Hard”
- Target niche: Carpet cleaning (California), framed as:
- Huge search demand (millions for “carpet” questions; large local-intent volume).
- A “trap niche” warning: despite volume, ranking is harder due to competition and many established players (e.g., Yelp, HomeGuide, Angi).
- Strategy:
- Use top-of-funnel informational blogs (e.g., “how to remove cat urine smell”) to drive users into the directory.
- Monetize via lead capture embedded on listing pages.
Tools / Stack Used
- WordPress + Elementor Pro + GeoDirectory (similar general stack to prior builds).
- AI throughout the build:
- ChatGPT/Claude Code for research, content cleanup, and data cleaning/enrichment.
- An AI enrichment SaaS: EnrichDirectory (created by the creator and a collaborator).
Directory Page Model Decision (Pillar vs Listing Pages)
The creator decides based on:
- Keyword intent and competition patterns in SEO tools
- Competitor structure (many competitors rank with individual business listing pages)
- Manual checks via Google Maps branded queries
Conclusion: proceed with individual listing pages (not a pillar-page directory).
Domain / Hosting Setup (Hostinger)
- Uses Hostinger “managed WordPress hosting” to:
- Register domain
- Install WordPress
- Benefit from Black Friday pricing and features (SSL, templates, migration, etc.)
Data Scraping at Scale (Google Maps → Listings)
- Scraper: OutScraper
- Key fields captured:
- Name, website, phone, full address, lat/long
- Review count, photos, working hours
- A Google Maps location link (used later for enrichment)
- Scale:
- Initially scraped very large datasets (eventually mentioned: 114,000 listings, costly).
- Then filtered to California (about 5,200-ish before additional cleaning).
Data Cleaning Workflow (Heavy QA + AI-Assisted Cleanup)
1) Filter out irrelevant/low-quality entries
- Remove “permanently/temporarily closed”
- Remove businesses with no reviews
- Remove missing critical fields (e.g., missing street)
- Remove entities that aren’t truly carpet cleaners (e.g., Walmart/Home Depot; hardware/flooring/laundromats patterns)
2) AI-assisted cleanup
- ChatGPT flags obvious non-matching businesses.
- Claude Code generates/executes scripts to remove irrelevant rows.
3) Quality thresholding
- Removes listings below a review-count cutoff (example: fewer than 10 reviews) to keep “best of the best.”
Result: dataset shrinks dramatically after multiple passes (down to thousands, and later further reduced by enrichment filters).
Data Enrichment (Turn Reviews into Structured “Why This Matters” Signals)
- Enrichment goal: extract repeated review themes relevant to intent, such as price, smell, stains, pet odors.
- Enrichment columns/questions include:
- “Is pricing fair and transparent?”
- “Does this remove bad smells?”
- “Does it remove cat/dog smells and stains?”
- EnrichDirectory outputs:
- Per-attribute results split into:
- boolean (true/false)
- explanation (why the tool decided)
- evidence snippet (often quoting the review fragment)
- Per-attribute results split into:
Important dependency: enrichment requires each record to include the location link.
“Troll” Hyper-Specialized Pivot: Cat + Dog Odor Proven Listings
After enrichment, they apply stricter filters:
- Keep only listings where both cat and dog odor fields are true
- Prompt Claude Code to remove anything not matching the criteria
Final dataset size stated: 395 listings with evidence for both cat and dog odor removal.
Listing Content Generation (AI Descriptions)
- Re-generates GeoDirectory listing descriptions using review-derived context.
- Starts with straightforward AI descriptions.
- Then reprompts to add more storytelling/anecdotal evidence (avoiding plagiarism).
- Output is intended to be aligned to the narrowed cat/dog odor intent.
GeoDirectory Implementation (Import Format Matching)
- Installed WordPress plugins:
- Elementor Pro
- GeoDirectory (and optional extensions)
- iCode to import a GeoDirectory-style demo/template
- Customization steps:
- Create a test listing and verify required fields, permalinks, and page rendering
- Remove irrelevant custom fields from the “properties” post type (real-estate template → carpet cleaning niche)
- Rename labels and slugs to match the niche (e.g., “carpet cleaners”)
Import Pipeline: CSV Formatting to Match GeoDirectory
- They export a sample listing CSV from GeoDirectory to match required formats, notably:
- HTML formatting in post content
- Strict business hours JSON/timezone format
- Column naming conventions (including lowercase column headers)
- AI-assisted formatting fixes:
- Working hours converted into GeoDirectory’s expected format using ChatGPT
- Street addresses split into street and street 2 to avoid mapping/geocoding issues
Image Import Gotcha (Header/Featured Image Issue)
- Problem: “header image” didn’t appear after import.
- Cause: leaving media ID empty was required for new listings; including it broke image handling.
- Fix:
- Remove the media ID in the CSV image field
- Re-import so the featured image displays properly
SEO + URL Improvements (Permalinks)
- GeoDirectory default permalinks were too long.
- They adjust GeoDirectory permalinks to create cleaner URLs, e.g.:
/carpet cleaner/cal/<city>/<postname>- California is emphasized through the location logic.
Theme Building in GeoDirectory (Templates)
Customized GeoDirectory templates:
- GD single (individual listing page)
- GD archive (search results / archive listing pages)
- GD archive item (the card/box component)
Homepage changes:
- Minimal SEO structure (main keyword like “carpet cleaning services in California”)
- Blog section
- FAQs
- Internal links to locations
Lead Capture per Listing
- Each listing includes an embedded lead form (built with Tally.so), designed to funnel prospects into centralized lead capture.
Location Pages + Indexing Concern
- Dynamic location pages can have unfriendly slugs that may not be indexed.
- Workaround:
- Use GD template widgets (e.g., “edit GD locations”) to generate/find clean internal link targets to city pages.
- They mostly link location pages internally to avoid “orphan pages,” accepting that location pages may not bring traffic.
Blog Production Pipeline (Keywords → AI Briefs → WordPress)
- Target informational queries from Ahrefs (pet stains/odor questions).
-
Process:
- Export top ~1000 keywords to a CSV
- Use Claude Code to select best blog topics (stains/pets)
- Use Claude Code to write full SEO blogs
- Use a single reusable Elementor blog template to insert content into WordPress
-
Example blog topics created:
- “How to get pee smell out of the carpet” (methods + DIY vs professional)
- “How to get dog pee out of the carpet” (similar pet/biological stain topics)
- Adds a CTA inside DIY sections for price quotes via the California professional network.
Analytics + Indexing Setup
- Uses Google Site Kit for:
- Google Analytics
- Google Search Console
- Submits sitemap:
wp-sitemap.xml
- Encourages waiting for crawl/indexing.
Explicit Limitations / Expectation Setting
- This is framed as an MVP / experiment, not a guaranteed “grand slam.”
- Suggested improvement areas:
- more thorough enrichment
- stronger on-page SEO / keyword clustering
Main Speakers / Sources
- Speaker/creator: YouTube author (first-person throughout the build), constructing a WordPress directory “from scratch.”
- Tools/vendors mentioned:
- Hostinger, OutScraper, GeoDirectory (and iCode)
- Elementor Pro, EnrichDirectory (creator’s SaaS), Tally.so, Ahrefs
- Claude Code, ChatGPT
- Google Site Kit / Google Search Console / Google Analytics