Skip to content
~/ tommybuilt .dev

// blog /

Two Directories and a Repository. Here Is What Actually Ranks.

by Tommy
  • #seo
  • #directories
  • #solo_dev
  • #data

I have built a handful of these, and three of them are the ones I keep pointing at. Two are honest directories. GlowUpFinder for beauty and aesthetic services, and HomeTradePro for vetted home-service and trades pros. The third, BuilderAI.tools, is a directory of open-source AI tools, and if you want to be strict it is more of a repository. So call it two directories and a repository, and we will leave the bookkeeping there. Here is what building all three taught me.

A directory looks simple and is mostly one hard problem in a trench coat. The hard problem is data. Anybody can build the template. A listing page, a city page, a category page, a search box, a map. That part takes a weekend with the right stack. What decides whether the whole thing lives or dies is whether there is real data behind every one of those pages, and getting real data at volume is the actual job.

GlowUpFinder is the clearest example. It has somewhere north of 22,000 listings across a hundred-plus cities, and not one of them was typed in by hand. They come out of a pipeline that pulls from the Google Places API, cleans the results, sorts them into categories, and writes them into a Cloudflare D1 database. The template was a few days. The ingestion pipeline, the deduping, the category mapping, the handling for cities that come back thin, that was the project. Every page you can browse is a row that pipeline put there.

HomeTradePro is where that work paid off. It is the same idea pointed at a different niche, vetted home-service and trades pros instead of salons, with around 8,700 listings fed the same way out of Google Places and running on the same Cloudflare stack. On the first directory every decision was new and most of them were wrong. By the time I built this one the pipeline shape was a known quantity and the SEO checklist was muscle memory, so the only thing left to actually think about was the niche and the quality of the data. The craft lives in the reps. The second one went fast in exactly the places the first one was brutal.

This is the lesson that cost me the most. Programmatic pages with no real data behind them are thin pages, and Google has gotten very good at spotting thin pages and burying them on purpose. Generate ten thousand URLs in an afternoon, let nine thousand of them say almost the same thing with a city name swapped in, and you have built a liability. Those near-duplicate pages drag down the few that are genuinely good, and search starts treating the whole domain as suspect. A page earns its spot by answering a real search with something real. The map has to have pins on it. The listings have to exist.

Which brings me back to BuilderAI.tools, the one I keep calling a repository. The data there is a curated catalog of software instead of scraped local businesses. The shape is different and the data problem is exactly the same. There is no Google Places pipeline here. Instead there is a worker that runs every week, uses Anthropic to go find new tools worth listing, and drops them in as drafts for me to approve before they go live. The real work was keeping the catalog fresh and honest without me typing in every entry by hand. The listing template barely mattered. Curated or scraped, the value is in the data and the work behind it.

The boring infrastructure is not optional, and it is more boring than you are imagining. Every one of these got the same day-one treatment before a single listing went in. Canonical tags so the city and category pages do not cannibalize each other. A real sitemap, paginated, because once you cross a few thousand URLs you cannot hand search one giant file and hope. JSON-LD on the listings so the pages can show up as rich results. Internal links that actually connect cities to categories to listings instead of leaving orphan pages floating with no way in. None of it shows up in a screenshot, and all three of these would rank worse without it.

Most directories on the internet are dead. They are dead because nobody solved the data problem, so the pages were thin, so search ignored them, so the traffic never came, so the owner gave up. The ones that work are boring underneath. A real pipeline feeding real pages, wired up correctly on day one, then left alone to compound. That is the whole trick. It is more work than it looks and less clever than it sounds.

// keep reading