Build profitable directories in 4 days using Claude Code and AI web scraping
Data moats in boring niches beat fancy tech — a crude directory with Lorem Ipsum text can generate $20,000+ leads if it solves a real search problem
Challenges: Most founders think you need polished products and advanced features to generate revenue
Applies when: Applies to local service directories where price transparency and comparison shopping are difficult, especially in B2B niches
Evidence: His original portapottymatch.com with Lorem Ipsum text and AI-generated content generated multiple leads including a $20,000+ order from New Mexico State Fair, proving market need exists regardless of polish
Frey shows how to build profitable online directories in 4 days for under $250 using Claude Code and an open-source web crawler. His luxury restroom trailer directory generated high-value leads including a $20,000+ order from New Mexico State Fair, despite starting with a bare-bones WordPress site with Lorem Ipsum still on the homepage.
Wanted to test if there was demand for porta potty comparison without investing heavily in development
Created portapottymatch.com in WordPress with Lorem Ipsum text, same AI-generated descriptions for all listings, and identical stock photos
Generated multiple inbound leads including $20,000+ order from New Mexico State Fair despite poor presentation
Solved a real search problem in a market with limited comparison tools — people needed to find luxury restroom trailers for events and had few options for comparing providers
"I built this thinking like no one could reasonably trust this directory... But to my surprise, I just built this and left it up and I got like some leads coming in"
Needed comprehensive data for luxury restroom trailer providers nationwide
Scraped Google Maps using OutScraper to get 71,000 rows of potential porta potty businesses covering entire US
Got massive dataset but 90%+ was irrelevant junk data requiring extensive cleaning
Casting a wide net ensured comprehensive coverage of the market, even though most data would be filtered out later
"I got 71,000 rows and potential listings and cover the entire state"
Had 71,000 rows of mostly irrelevant data that needed basic filtering
Wrote prompt telling Claude Code to remove listings with no business name, address, permanently closed ones, and obvious non-relevant businesses like big box retailers
Reduced dataset from 71,000 to 20,000 potential listings
Automated the most obvious filtering tasks that would have taken hundreds of hours manually while maintaining high accuracy for clear-cut decisions
"this simple prompt got me from 71K down to 20,000 listings"
Still had 20,000 listings that needed manual verification of whether they actually offered luxury restroom trailers
Installed open-source Crawl4AI web crawler locally, connected it to Claude Code, and wrote prompts to automatically visit each website and identify luxury restroom trailer keywords
Reduced 20,000 websites down to 725 verified luxury restroom trailer providers in 3 hours
Automated the most time-intensive manual task using AI to read and understand website content at scale, something that would have taken 1,000+ hours manually
"this is really what would have taken me like a 1,000 hours just a couple years back"
Needed detailed information about each provider's trailer inventory, amenities, and service areas
Made separate Crawl4AI passes for each data type: trailer inventory (2-stall, 3-stall, etc.), amenities/features, service areas, and images. Examined results after each pass to identify edge cases and reran 2-3 times per category
Built comprehensive database with filterable amenities, stall counts, service areas, and high-quality images for each listing
Single-focus passes produced higher quality results than trying to extract everything at once, and iterative refinement caught edge cases that would have degraded data quality
"the first mistakes that I did when I started enriching my data with craw for AI was I would just give it this massive laundry list of things to get... it just didn't work"
Scraped images were low quality - logos, favicons, and poor photos mixed with good trailer images
Sent top 3 image candidates per listing to Claude Vision API with prompts to identify the highest quality trailer images and filter out logos/irrelevant images
Got high-quality, relevant images for each listing that enhanced the directory's credibility
Visual AI could distinguish image quality and relevance better than filename/alt-text analysis alone, crucial for user trust in the directory
"the first time I did this I got like logos and crappy images and favicons and it was like am I really about to clean this image data?"
Competitive directories dominate broad categories like 'bathroom contractors' or 'senior living'
Focused on 'luxury restroom trailers' instead of general porta potty rentals, and suggested even more specific niches like 'senior living homes for people with dementia' or 'ADA accessible bathroom contractors'
Easier to rank in search results and attract highly qualified leads willing to pay premium prices
Ultra-specific niches have less competition and serve users with very specific needs who are past the discovery phase and ready to make decisions
"you might rank for senior living homes for people with dementia, which if we look on Hrefs actually gets like over a 1,000 monthly searches"