How we research, build, launch and rent local lead generation sites
This is the working process behind a network of ten local service sites in the US market. It covers how a niche gets picked, how a city gets validated, how the pages get written, what the stack costs, how long a build actually takes, and where the model is harder than it looks.
10live sites
3niches
~8 weekszero to ten sites
~25pages per site
1 dayto clone site 10
Section 01
The model in one page
Rank & rent means you build the asset, you rank the asset, and you rent the phone calls. You are not selling SEO as a service. You own a site that ranks for a high intent local query, a homeowner calls the number on it, and a contractor pays you for that call. If the contractor stops paying, you keep the site.
That single structural difference drives every decision below. Because you own the asset, the money is in picking a market you can actually win, not in doing heroic optimization work on a market you cannot. Roughly eighty percent of the outcome is decided before a single line of HTML is written.
A Pick a winnable market
High ticket homeowner service, no national franchise consolidation, weak local competition in the search results. Fail here and no amount of content fixes it.
B Build a credible local asset
A real looking brand, a full site with service and area coverage, a local phone number, consistent business details everywhere.
C Rent the calls
Forward the tracked number to a contractor. Start by giving leads away free to prove the pipe works, then price it.
Order of operations
We built all ten sites before monetizing any of them, then started outreach from whichever site produced the first genuine inbound lead. That was deliberate: pitching a contractor before you have traffic means pitching a promise, and contractors have heard that pitch from every lead vendor already.
Section 02
Niche research: eliminating before evaluating
Niche selection is a filtering exercise, not a brainstorming exercise. We keep a written scorecard of every niche we have looked at, including the rejected ones, because the rejections are the reusable knowledge. Around sixteen niches have been through it. Three survived.
Every candidate niche gets pre-screened on five dimensions before we spend any time on search results analysis. Failing any one dimension drops the niche outright.
Filter 1: Ticket size
The average job has to be large enough that one lead is genuinely valuable to a contractor. If a job is worth a few hundred dollars, no contractor will pay a meaningful amount per call, and the rent will never justify the build.
This one filter alone kills most of the obvious ideas: gutters, fencing, drywall, railings, gates. Clean search results, no competition, and completely unrentable.
Filter 2: Homeowner commercial intent
The searcher has to be a homeowner ready to hire, not a researcher and not a commercial buyer. We use advertising cost per click as a proxy: if advertisers are not paying real money for the keyword, the intent is weaker than it looks.
This filter is what separates a remodeling niche from handyman territory. Handyman work has volume but no urgency and no ticket.
Filter 3: Franchise and private equity consolidation
The most important filter, and the one most people skip. Several home service categories have been rolled up by private equity or covered by national franchise networks. When that has happened, the top results in every city belong to the same brand, backed by an authority profile you cannot outrank as a new site.
The test is simple: search the niche in three to five different mid size cities and see whether the same national name keeps appearing near the top. If it does, drop the niche. Whole categories are effectively closed this way.
Watch for the franchise variant too, which is subtler. Some networks build genuinely local, content rich city pages maintained by a real franchise owner. Those behave like local competitors, not like generic corporate pages, so they cannot be dismissed.
Filter 4: Results page cleanliness
A fast manual look at the search results before running any tooling. What you want to see is small local businesses with amateur websites. What you do not want is directories, aggregators and national brands filling the page.
Filter 5: Market depth
If searching the niche in your target city returns results from a different city or state, the local search volume is too thin. Google is padding the page because it does not have enough local supply. You can rank in a market like that and still get no calls.
The counterintuitive part
Low competition is not the goal. Low competition plus high value plus real volume is the goal. Some of the cleanest, easiest search results we found were in niches that were worthless to rent, and we nearly built in one of them.
Section 03
City validation: where the real decision happens
Once a niche survives pre-screening, we pick a handful of candidate cities and validate each one individually against the actual search results. We aim to confirm four viable cities before committing to a niche, because a niche that only yields one or two cities is not worth learning.
How cities get shortlisted
We use population, income and housing data as a first pass. The logic behind each is worth stating because the numbers themselves matter less than the reasoning.
Signal
Why it matters
City population band
Big enough for real search volume, small enough that national players and large agencies have not saturated it. Major metros and state capitals get excluded.
Median household income
The homeowner has to be able to afford a five figure discretionary project.
Owner occupancy rate
Renters do not commission structural improvements. This is a better predictor than population.
Single family housing share
Apartment stock cannot consume the service at all. Category dependent but decisive when it applies.
Region and climate
For outdoor living work, warm regions have a longer season and therefore perennial demand rather than a spring spike.
Geographic clustering
We build in clusters rather than scattering. Neighbouring markets share content research, contractor outreach and local knowledge.
Then the search results decide
For each candidate city we pull the organic results for the primary buyer intent keyword, strip out everything that is not a real local business, and look at what is left. Four questions, all of which have to come out favourably.
1 Is there an authority ceiling we cannot pass?
We check the domain strength of the genuine local competitors holding the top positions. Above a certain level, a new site with no history will not get there in a reasonable timeframe, and the city is out.
2 Which competitors actually count?
Not every top result is a real obstacle. A blog post, a project gallery, a generic multi city location page or a service page that was never built for this city can be outranked by a purpose built homepage. A strong, locally maintained page cannot. Learning to tell these apart is the single highest leverage skill in this whole process.
3 Does an exact match domain already exist?
If someone already owns the keyword domain and has built anything on it, that is a structural disadvantage. If nobody owns it, that is an opportunity, and we register it ourselves.
4 Would position two or three be enough?
If exactly one strong local incumbent holds first place and everything behind it is weak, aiming for second or third is still a viable business. Homeowners compare two or three contractors before calling. We do not apply this when the leader is a national brand, because then second place is a much harder sell to a contractor.
Tooling
We use a paid search results analysis tool that exports competitor data per city and per keyword, alongside manual Google checks captured as screenshots. We deliberately read the "people also ask" box too: cost questions, permit questions and timeline questions confirm buyer intent, while unrelated or civic questions suggest Google is unsure about the query, which usually means thin volume.
Section 04
Brand and domain
The brand has to read as a real local company, not as a keyword string. Our naming formula is city plus service plus an optional quality qualifier, which produces names that look like businesses while keeping the keyword in the domain.
The formula
City + qualifier + service. Qualifiers come from two families: premium words that imply quality, and trust words that imply credentials. The result should be pronounceable, short enough not to be cut off in search results, and clearly distinct from any existing business in that market.
The domain
Exact match on the brand, registered through the same provider that hosts the sites so that domains, DNS and hosting sit in one account. Ten domains in one dashboard is a real operational advantage once the network grows.
Check before you buy
Verify no real company in that metro already trades under a similar name. We have hit a same name collision in a different state during contractor research, which is harmless, but a collision in the same market would be a genuine problem.
Section 05
Site architecture
Every site in the network has the same shape. About twenty five pages, all static HTML, no CMS, no database, no build step. Each page is a single self contained file with its inline styles, which sounds primitive and is exactly why it loads fast and never breaks.
/homepage: the primary ranking target/contactstandalone page, destination for every call to action/services/ten service pages, one per offering
service-name.html
/areas/ten area pages, one per surrounding town
area-name.html
/articles/informational articles for topical authority
article-name.html
/faqadded later on newer builds/sitemap.xmlsubmitted to Search Console/robots.txtmust not block AI crawlers, see section 07/images/locally named image files/worker.jsform handler, voicemail, call routing
The three page types do different jobs
Homepage
Targets the main money keyword for the city. All external links and authority point here. It also names every surrounding town in a service area section, which lets it pick up suburb searches without a dedicated page.
Service pages
One per service, targeting service plus city. Cross linked to each other to form a cluster. Each opens with the brand name linked back to the homepage.
Area pages
One per surrounding town, ranked by how profitable a lead there would be rather than by population. Deliberately not in the navigation menu, so link authority stays concentrated on the homepage.
Internal linking
Consistently the most underrated lever. A strong service page supported by area pages, articles and an FAQ outperforms an isolated page with more backlinks. Every page links back to the homepage, no internal link opens in a new tab.
Section 06
Content strategy
Content is generated with AI and then has to be de-genericised, which is the part most operators skip and then pay for. Our own network is the cautionary tale: we shipped ten sites fast, and then spent weeks removing the fingerprints.
Homepage: longest, most specific, most local
The longest page on the site. Built around ten fixed brand attributes that stay consistent across every page, so the whole site sounds like one company with one point of view rather than a pile of generated text.
Required sections: a benefit led headline containing the main keyword, an opening paragraph that starts with the brand name and the main service, a service area list naming every surrounding town, a services overview linking to all ten service pages, the differentiators, an inline quote form, social proof, an FAQ, and a footer with the business name, address and phone in identical form on every page.
Service pages: fast to the point
Shorter than the homepage. Each targets service plus city plus state. The first words are the brand name linked to the homepage. The page topic has to be unmistakable within the first hundred words.
Each page mentions the main city plus two or three nearby towns in the body, and links to two or three sibling service pages. We do not rehash homepage content unless the service is genuinely core to the niche.
Area pages: where templating gets you caught
This is the highest risk content on the site. Ten pages about the same service in ten different towns will, if you are careless, differ only by the town name. Google's own guidance treats that pattern as a doorway page problem.
Our fix was to rewrite every area page to open with a genuinely specific, verifiable local sentence: a real neighbourhood, a real housing characteristic, something checkable. We measured page to page duplication before and after and drove it down deliberately. It is manual work and there is no shortcut.
Articles: topical authority and the cost question
Informational pages answering what homeowners actually ask, sourced from the "people also ask" box and autocomplete. Cost guides are the workhorses: they attract volume, they signal subject expertise, and they can rank beyond the target city.
Longer than service pages, always with an FAQ section, always linking back to the homepage and the relevant service page, and linking out to one genuinely authoritative external source that is not a competitor.
Two writing rules we now treat as absolute
No em dashes
The single strongest stylistic tell of unedited AI text. We found and removed several thousand across the network, including ones hidden inside structured data blocks. Commas, colons and full stops do the same job.
No filler vocabulary
A banned list: seamlessly, delve into, elevate your, transform your, stunning, state of the art, cutting edge, it is important to note. The target voice is a local contractor explaining a job, not a content farm.
Where we still fall short
Real expertise signals need a real named person with real credentials. We use brand attribution on articles and we refuse to invent expert quotes, which means that part of our credibility profile is genuinely incomplete rather than quietly faked. If you can attach a real person to your sites, do it from day one.
Section 07
SEO and AEO in 2026: two surfaces, audited separately
Search has split. There is the traditional results page and map pack, and there is the generative answer layer: AI Overviews, ChatGPT, Perplexity, Gemini, Claude. Being cited in the second is not the same as ranking in the first, and they reward partly different things.
Traditional local search
Still governed by relevance, proximity and prominence. The strategic shift is from keyword matching toward entity verification: the question is whether your business can be confirmed as real, active and consistent across the site, the business profile, structured data and third party listings. Conflicting details anywhere weaken everything.
The generative answer layer
Engines retrieve, rank and then synthesize, citing a handful of sources. Each platform sources differently, so it is worth auditing per platform rather than as one blob. Overlap between platforms is lower than most people assume.
The levers that survive scrutiny
Front load the answer
A large share of AI citations come from the first portion of a page's text. Clear heading hierarchy, question shaped subheadings, direct answers at the top. Structure is doing more work here than word choice.
Earned mentions beat your own website
The most useful and most uncomfortable finding: AI search shows a systematic preference for third party sources over brand owned content, plus a bias toward large recognised brands. A brand is substantially more likely to be cited through someone else's page than its own.
For rank and rent that is significant, because it means the site alone will not get you cited. You need a consistent off site footprint saying the same things: directory listings, reviews, forum presence, video, industry mentions. Our own directory listing sprint across the network was done for exactly this reason, not for the referral traffic.
Recency
Recently updated pages get cited materially more often than stale ones, and pages left untouched for long periods lose citations they previously held. A visible update date plus a real refresh cadence is a cheap lever most local sites ignore.
Structured data, with a correction
We put a single JSON-LD block on every page describing the business: name, address, phone, hours, coordinates verified from the map rather than guessed, price range, service area, and a service catalogue. Organization and breadcrumb markup support entity understanding.
The correction worth passing on: FAQ and how-to markup no longer produce rich results in Google. They are still valid markup and may still assist AI extraction, so we keep them where the content genuinely is question shaped. But if you read a 2025 guide telling you FAQ markup is a top tier tactic, that guide is out of date.
Non negotiable rule: structured data must match what is visible on the page. Mismatches invite trouble.
Do not block the AI crawlers
Check robots.txt actually permits GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot and Google-Extended. Trivial to verify, easy to get wrong, and it silently costs you the entire generative surface.
On llms.txt: the evidence that it affects citations today is weak. Adoption is low and no major provider has confirmed using it. It costs minutes, so it is harmless to add, but treat it as speculative rather than as a tactic.
Core Web Vitals, in proportion
Loading, responsiveness and layout stability, measured on real mobile traffic. A page group is judged by its worst metric. Treat this as a tie breaker rather than a primary lever: worth passing, not worth obsessing over. Static single file HTML passes comfortably without any special effort, which is one of the quiet advantages of the architecture.
The structural limit you should know before you start
A rank and rent site without a verified Google Business Profile cannot appear in the map pack at all, and cannot accumulate reviews. On local service queries the map pack takes a large share of the clicks. That means an unclaimed site is competing only for the organic share, and review signals are simply unavailable to it. Directional figures vary between sources and I would verify them yourself, but the direction is not in dispute.
The honest consequence: an unclaimed site competes on on-page quality, links, behavioural signals and directory citations only. That is a real business, but it is a smaller pool than the traffic numbers suggest. The only clean route to the map pack is a real contractor who can verify a real profile truthfully, which happens after you have a tenant, not before.
Section 08
The tool stack
Deliberately small and cheap. The whole network runs on a handful of services, most of them free or nearly free at this volume. The expensive inputs are the domains and the research tooling, not the infrastructure.
Layer
Tool
What it does and why
Cost
Build and content
Claude
Writes the copy, writes the HTML and CSS, runs the audits, executes the bulk edits across hundreds of files. Also runs the repeatable processes as saved skills, so a site build follows the same checklist every time instead of depending on memory.
Subscription
Knowledge and state
Obsidian
Plain markdown vault holding every playbook, research note, prospect record and daily handoff. This is the part people underestimate. The vault is what makes the network operable, because each work session starts by reading the current state rather than reconstructing it. AI plus a structured vault is a much stronger combination than AI alone.
Free
Hosting
Cloudflare Workers
Static assets served from the edge with a small serverless script per site for the form handler and call routing. Fast, effectively free at this traffic, and deployed with one command.
Free tier
Domains and DNS
Cloudflare Registrar
Every domain in the same account as the hosting. One dashboard for registration, DNS and deployment.
At cost
Call tracking
Twilio
A local number per site in the right area code. Handles voicemail with a custom greeting, recording, transcription, a whisper message that tells the contractor where the call came from, and forwarding once a tenant signs. The call log is also the proof you deliver leads.
Per number, per minute
Transactional email
Brevo
Sends the lead notification and the automatic reply to the enquirer. Free tier covers a network this size across multiple domains.
Free tier
Inbound email
Cloudflare Email Routing
Routes a per site address to one central inbox, so every site has a credible business email without ten mailboxes.
Free
Bot protection
Cloudflare Turnstile plus a honeypot field
Two layers, because one is not enough. Form spam on lead generation sites is relentless.
Free
Search data
Google Search Console
Each site registered as a domain property, verified by DNS record. Impressions and average position are the signal that decides when a site is ready to monetize. We also read it through its API on a schedule rather than by hand.
Free
Site auditing
Ahrefs
Automated crawls flagging redirect chains, over long meta descriptions, broken internal links. Useful precisely because it catches the debris your own changes leave behind.
Subscription
Market validation
Search results analysis tool
Exports competitor and authority data per city and keyword. This is the tool that decides whether a market is buildable.
Subscription
Mobile QA
Playwright
Renders every live site at real phone dimensions, opens the mobile menu and captures screenshots. Built after browser resizing tools proved unable to change the actual viewport. It found layout bugs that code inspection had missed twice.
Free
Pre deploy QA
Custom shell script
Several hundred assertions across the network: required tags present, phone numbers consistent, schema valid, navigation intact, no banned phrases. Nothing deploys until it passes.
Free
Analytics
GA4
One property per site. Honestly secondary: Search Console and the call log matter more for this model.
Free
The part that actually compounds
Not any individual tool. It is that the process lives in written, versioned files that both a human and an AI assistant read at the start of every session: a build checklist, a niche playbook, an outreach playbook, a QA gate, a daily handoff. That is what turns "I built a site" into "I can build the next one the same way."
Section 09
Lead capture plumbing
Each site has one small serverless script that does five jobs. It is copied from the previous site and adjusted, which is both the efficiency and the risk.
Form handling
Receives the contact form, checks the hidden honeypot field, verifies the bot challenge server side, then sends a notification to us and an automatic reply to the enquirer. Order matters: verify after the honeypot check, never inside it.
Voicemail
Answers with a spoken greeting, records, transcribes, and emails the recording and transcript. Most calls to a new site go to voicemail, so this is the actual lead capture path, not a fallback.
Call routing
Once a contractor signs, the number forwards to them with a whisper message identifying the source. Recording stays on as delivery proof.
URL hygiene
Redirects http to https, and the .html version of every URL to the clean version. Skip that second redirect and your host will serve every page at two addresses, Google will index both, and your ranking authority splits between them.
Two failures worth inheriting from us for free
The clean URL redirect belongs in the template from day one. We added it after noticing a site's impressions split across duplicate addresses. Retrofitting it across ten sites, then chasing the sitemap and internal link references still pointing at the old form, then fixing the audit warnings that generated, cost far more than writing it once at the start.
Never report an action you have not confirmed. Our notification email said an SMS had been sent to the caller. It was sent, but the messages were not being delivered by the carriers, and the notification reported the send rather than the delivery. For weeks the record said callers had been contacted when nobody had. Log what actually happened, not what you asked for.
Section 10
QA and deploy
One rule: nothing deploys until the QA script passes with zero failures. Warnings are documented and allowed through. Failures are not.
The script checks the mechanical things that are easy to get wrong at scale and impossible to spot by eye: required meta tags, canonical tags, valid structured data, correct phone number, navigation present, banned phrases absent, images referenced correctly. Deployment itself is one command per site, or one script for the whole network.
Verify live, not locally
After deploying, request the live URL and check what actually comes back. Edge caching will serve you the old version after a correct deployment more often than you would expect, and a cache purge is sometimes required per URL. "I deployed it" and "it is live" are different claims.
Section 11
Post launch
Search Console, thoroughly
Add the property, verify by DNS, submit the sitemap, and then manually request indexing for every important page individually. New sites with no authority get stuck in crawl budget limbo, and service pages can sit unindexed for weeks even with a perfect sitemap and correct internal links. Manual requests fix it immediately. Homepage first, then service pages, then areas, then articles.
Directory citations
Business listings on the major directories with the business name, address and phone matching the site exactly. This is tedious manual work, most of it behind account creation walls. Worth doing anyway: it is the cheapest form of the third party corroboration that both local search and AI citation reward.
Social presence
A business page per brand with consistent details and a link to the site. Low effort, and it makes the entity look real to both humans and machines.
Then wait, and watch two numbers
Impressions and average position in Search Console, and the call log. Nothing else matters at this stage. When impressions start appearing, the site is ready to be monetized.
Section 12
Finding a tenant
The build is the easy half. This is the hard half, and it is where most of our remaining open problems live.
The rule we follow: no outreach until the site has produced a real inbound lead. Before that you are pitching a promise. After that you are handing over a customer, which is a completely different conversation.
The opening move
First contact carries a real lead and asks for nothing. Who to call is chosen deliberately: contractors who are listed but not ranking, with few reviews and a weak web presence, are receptive. The best reviewed company in town is already swamped and will not care. Owner operators, often identifiable because the company carries the owner's first name, answer their own phone and can make a decision.
Expect to be treated as a scam
This is the most useful thing we learned, and it took several markets to accept it. A stranger offering free leads is indistinguishable from a scam, because the majority of such offers are scams. Suspicion is the default response, not bad luck. Plan for low reply rates from the beginning and frame outreach as asking for help with a customer you cannot serve, rather than as offering a marketing service. We rewrote all our outreach on that principle after a market went silent and we mistook a structural problem for a copywriting one.
Pricing, and being straight about it
Our current model is a flat per delivered job, paid when the contractor gets paid, during a trial period, moving to a flat recurring fee afterwards. We deliberately anchor on a flat fee rather than a permanent commission, because a flat fee is payment for keeping the site ranked, which is the work, whereas commission only pays for the individual lead, which is the outcome. Present one offer, not a menu.
Numbers, honestly
Any specific figure I could give you comes from other operators rather than from a large sample of our own closed deals, so treat published rank and rent pricing as directional. We have one signed tenant. That is enough to prove the pipe works and not enough to prove any price. Also settle how you will get paid before you have money on the table, particularly across borders, because a contractor who cannot easily pay you will simply not pay you.
Section 13
How long it actually takes
Real timings from our own build log, not estimates.
Early May 2026
First niche, first sites, first working pipeline
The first site in the first niche is where all the cost sits. Design system, page templates, form handler, phone setup, email routing, structured data pattern: everything has to be invented once. Several weeks of iteration, most of it on plumbing rather than pages.
Late May to mid June
Second niche, three more sites
Faster, but not fast. The niche needed its own visual identity and its own content architecture, and the plumbing came across almost unchanged. This is where the process itself got written down as a reusable checklist.
Mid to late June
Third niche, four sites, ten total live
By the fourth niche site the process was mechanical. Sites nine and ten, roughly twenty five pages each, were built, wired with their own phone numbers, configured and deployed inside a single working session. Custom domains attached the same day.
July onward
Polish, and it is not small
This is the phase nobody advertises. Content de-templating, removing AI stylistic tells, mobile layout bugs across three device widths, duplicate URL cleanup, structured data repairs, directory listings, indexing chases, email deliverability. Weeks of it. Sites that were "live" in June were not genuinely finished until well into July.
Situation
Realistic time to live
First site in a brand new niche
Two to four weeks, mostly infrastructure and template design
Second and third site in a known niche
A few days each
Nth site, template mature
One focused session for the build and deploy
From live to genuinely finished
Add several more weeks of polish, whatever the build time was
From live to first real inbound lead
Weeks to a couple of months, and not evenly distributed. Some sites produced leads while others produced nothing.
The trap in these numbers
"One day per site" is true and misleading. It is true for the build. It excludes market validation, domain registration, phone provisioning, directory listings, indexing work, and the polish phase, and it only becomes true after you have paid for the first site in that niche. Judge the model on time to first paying tenant, not time to deploy.
Section 14
Template or from scratch
Both, in a specific pattern: one template family per niche, built from scratch once, then replicated within that niche.
Niche 1 template
Its own palette and type pairing. The most polished site in the family becomes the reference build, and later sites copy it rather than the original.
Niche 2 template
Visually distinct: different colours, different heading font, different homepage layout. Same underlying architecture.
Niche 3 template
Distinct again. The last two sites in this family are direct clones of the first two with city specific content, images and coordinates swapped in.
Why not one template for everything
Ten near identical sites in different cities is a recognisable pattern, and Google's spam guidance explicitly names multiple sites with slight variations funnelling to one destination. Our sites are materially different from that: different niches, different cities, different brands, different phone numbers, one contractor each. Keeping the template families visually and structurally separate is part of what keeps that distinction real rather than merely arguable.
What gets copied and what gets rewritten
Copied nearly unchanged: the serverless script, the deployment config, the CSS system, the page skeletons, the structured data pattern, the form markup, the QA script.
Rewritten every time: all body copy, the service list, the area list, the geographic coordinates, the images and their filenames, the brand, the phone number, the business address, every meta tag.
The cost of cloning, stated plainly
Every bug in the template is now a bug in ten sites. We have had the same fix applied ten times more often than we would like: a navigation breakpoint problem that showed up at tablet width across the network, an email sender address copied from the wrong site so leads misfiled under the wrong brand, image references pointing at files that only existed on the source site, JavaScript accidentally nested inside a structured data block on the two oldest sites so their markup failed to parse. Cloning multiplies velocity and it multiplies defects at the same rate. Fix the template, not the copy.
Section 15
What we got wrong
The most valuable part of any playbook. In rough order of how much they cost us.
1. Building ten sites before proving one could be rented
Defensible as a decision, expensive as an outcome. We have ten built assets and one signed tenant. The ranking and monetization work is harder and slower than the build work, and we discovered that after committing all the build effort. If starting again: two sites, one tenant, then scale.
2. Underestimating the business profile problem
Without a verified business profile a site cannot enter the map pack, which is a large share of local clicks, and cannot collect reviews. We built the whole network knowing this abstractly and not weighting it properly. There is no honest workaround: the route runs through a real contractor verifying a real profile, which happens after you have a tenant.
3. Assuming the identity and compliance layer would be easy
The largest single blocker across the whole project has been business verification with the telephony provider, which gates message delivery and, at times, outbound calling. It is a regulatory requirement, not a support ticket, and it ultimately depends on having a registered business entity in the right jurisdiction. Solve this early, before it silently breaks something you have already promised a client.
4. Trusting code inspection for anything visual
We verified mobile layouts three times through code review and live page fetches and passed each time, while real bugs remained. Entire layout columns were missing from the markup, so there was no broken image to find. Render the page at real device dimensions and look at it. We eventually built the tooling to do that, and it caught a bug on its first run.
5. Letting the record drift from reality
Our task list has repeatedly told us a blocker was cleared when it was not, and that a market was unworked when it had been worked. Twice we acted on the wrong version. If you keep a written system of record, treat correcting it as real work, and verify status against the live system rather than against your own notes.
6. Testing against ourselves
The subtlest one. Two capabilities were recorded as proven based on tests that never left our own infrastructure: a call from one of our numbers to another of our numbers, and a message from one of our numbers to another. Both passed. Both real world equivalents failed. A test that does not cross the boundary you are worried about is not a test.
7. Publishing before de-templating
Ten sites of essentially unedited AI copy went live, and the cleanup took longer than the writing did. Thousands of stylistic tells, near duplicate area pages, filler vocabulary throughout. Write it generated, ship it edited.
Section 16
Direct answers to the questions you asked
How do you research the niche?
By elimination, against five pre-screening filters: ticket size, genuine homeowner buying intent, absence of national franchise or private equity consolidation, cleanliness of the search results, and real market depth. Failing any one drops the niche. Around sixteen niches went through this and three survived. The franchise consolidation check is the one most people skip and the one that most often decides the answer. See section 02.
How do you pick the city?
Two stages. First a demographic shortlist: population band that has volume without saturation, household income high enough to afford the work, owner occupancy and single family housing share high enough that the service is even relevant, and a preference for building geographic clusters rather than scattering. Then the search results decide, on four questions: is there an authority ceiling we cannot pass, which top results are genuine competitors versus pages that can be outranked, does someone already own the keyword domain, and would second or third place still be a viable business. We look for four viable cities before committing to a niche. See section 03.
What is the content strategy, and how do SEO and AEO fit together?
Content is a homepage carrying the main city keyword, ten service pages, ten surrounding area pages, and informational articles for topical authority, all internally linked so the homepage accumulates the authority. Generated with AI, then edited hard: no em dashes, no filler vocabulary, and every area page rewritten to open with something verifiably local, because ten pages differing only by town name is a doorway pattern.
On the AI answer layer, four things earn their place: front load the answer because citations concentrate in the top portion of a page, keep structured data clean and matching the visible content, keep content genuinely fresh, and build a consistent off site footprint. That last one is the important one, because AI search demonstrably prefers third party sources over your own website. Also worth knowing: FAQ markup no longer produces rich results in Google, so older guides overrate it. See sections 06 and 07.
What is the tool stack?
Claude for building and writing and auditing. Obsidian as the knowledge and state layer, which matters more than it sounds. Cloudflare for domains, DNS, hosting, inbound email routing and bot protection. Twilio for a tracked local number per site with voicemail, recording, transcription and forwarding. Brevo for transactional email. Google Search Console for the data that decides when a site is ready. Ahrefs for site audits. A paid search results tool for market validation. Playwright plus a custom shell script for QA. Full table with costs in section 08.
The honest answer to "what makes this work" is not any of those tools. It is that the process is written down as playbooks and checklists that get read at the start of every session, by a human and by an AI assistant. That is the actual compounding asset.
How long does it take to perfect a site and get it live?
The first site in a new niche: two to four weeks, most of it infrastructure and template design rather than pages. Later sites in the same niche: a few days, dropping to a single focused session once the template is mature. Sites nine and ten in our network, about twenty five pages each with their own phone numbers, were built and deployed in one session.
Then be honest about the second number: from live to genuinely finished, add several more weeks whatever the build took. Content de-templating, mobile bugs, duplicate URLs, structured data repairs, directory listings, indexing chases. Sites that went live in June were not really finished until well into July. See section 13.
Do you reuse a template, or start from scratch each time?
One template family per niche, built from scratch once, then replicated within that niche. Three niches, three visually and structurally distinct templates. Copied nearly unchanged: the serverless script, deployment config, CSS system, page skeletons, structured data pattern, QA script. Rewritten every time: all copy, service and area lists, coordinates, images, brand, phone, address, every meta tag.
Deliberately not one template for all ten, because near identical sites across cities is exactly the pattern Google's spam guidance names. And the price of cloning is that every template bug becomes a bug in every copy. We have fixed the same defect across ten sites more often than I would like to admit. See section 14.
Would you do it this way again?
The process, yes. The sequencing, no. Building the full network before proving a single site could be rented put all the effort into the half of the model that turned out to be easier. The build is mechanical. Ranking is slow. Persuading a contractor that a stranger offering free leads is not running a scam is the actual hard problem, and it is the one you should test first, with two sites rather than ten.