01
Pages are built before anyone asks. They’re finished and waiting. The old site assembled every page from scratch, on the fly, for every visitor.
Website build · Tucson, AZ
Somebody types a question and something answers it in a sentence. Whatever gets read out is the only business in the room. This site was built to be the thing that gets read.
Haul It Off Junk Removal · WordPress → Next.js · Live June 2026
100
Google’s technical SEO score. Out of 100.
98
Speed score on the same test
23
Pages answering a specific question about a specific place
1
Place his business name is written down
The scorecard
This is Lighthouse — Google’s own testing tool, free, public, and runnable by anyone against any website on earth. Including yours. Including the guy you’re losing jobs to.
100
SEO
98
Performance
91
Accessibility
77
Best Practices
We’re showing you the 77 too. That one’s the ad tracking his campaigns run on — third-party scripts, deducted by Google whether you need them or not. We could hide it. Every agency does. You’d rather know which numbers we can move and which ones come with the tools you already run.
Source · Google Lighthouse · haulitoffjunkaz.com · August 9, 2026 · run it yourself at pagespeed.web.dev
01
Pages are built before anyone asks. They’re finished and waiting. The old site assembled every page from scratch, on the fly, for every visitor.
02
Copies sit on servers around the country. Someone in Tucson gets a nearby copy, not a round trip to one machine in a rack somewhere.
03
No plugin stack. A typical WordPress site runs a pile of add-ons on every load, each one somebody else’s code. There isn’t one here to run.
04
The words arrive first. The text is in the page the moment it lands. Nothing has to execute before a machine can read it.
The part you’ve never seen
A customer lands and sees a headline and a phone number. When a search engine or an AI assistant fetches the exact same page, this is what it takes away.
What a customer sees
Junk gone. Today.
Tucson junk removal and cleanouts. You pay for the space you fill, not the hour.
Get a free quote →
5 stars, 5.0 · 205 reviews
Open 24 hours
(520) 808-2268
What a machine sees
// delivered on the first request — no scripts required
{
"@type": "LocalBusiness",
"name": "Haul It Off Junk Removal",
"telephone": "(520) 808-2268",
"address": {
"streetAddress": "7315 N Oracle Rd #207",
"addressLocality": "Tucson",
"addressRegion": "AZ",
"postalCode": "85704"
},
"openingHours": "Mo-Su 00:00-23:59",
"aggregateRating": {
"ratingValue": "5.0",
"reviewCount": "205" // checked against the live profile
},
"areaServed": [ /* only towns he actually runs */ ],
"makesOffer": [ /* every service, linked to its own page */ ]
}Most junk removal sites return nothing here
Hyper-local
They ask a whole question with a place in it. So the site is 23 answers to real questions, not five pages of description.
Asked
“Who hauls off a hot tub near Oro Valley”
A page for that service, in that area, with the drive context from the yard on N Oracle Rd.
Asked
“Garage cleanout in Catalina Foothills”
Real neighborhoods, named correctly. Two “towns” the build invented were actually Tucson neighborhoods — retyped, and the copy rewritten so it reads right to a local.
Asked
“Does anyone pick up on a Sunday”
He runs 24/7. That’s now stated everywhere a machine looks for it, not just on the contact page.
Structure
It links both directions
Every service lists the areas it covers. Every area lists the services offered there. A crawler can walk the business from either end and come out with the same map.
Entity
Search engines and AI assistants don’t read a website like a person. They resolve it into a record: this name, this address, this phone, this company.
371
Places his name was typed
Place it lives now
When the name is spelled three different ways across a site, that record goes fuzzy — and a fuzzy record is several weak businesses instead of one solid one. His name appeared 37 times across 12 files. Ten were typed by hand, free to drift apart forever.
Now it’s stored once. Every page, every title, every listing, every email signature asks that one record. It can’t drift again.
Found while we were in there: service pages were printing two different versions of the company name inside the same page title — the line Google shows in results. Fixed.
The ads — and the conversion data that was lying
They were never leads.
59% → 5.1%
Reported conversion rate — the measurement getting honest
5
Fake conversion actions removed from the lead count
8,181
Negative keywords added
$15.00 → $48.45
Target cost per lead, corrected to reality
We took over the ads at the end of May 2025. The account looked incredible on paper: leads at $4.57 and $7.10 across the prior campaigns, one of them named after the agency that built it.
Then the arithmetic stopped working. Back out the clicks from spend and cost-per-click and the account was reporting a 59% conversion ratein Q1 2025. Fifty-nine percent. Nobody in junk removal turns six of every ten clicks into a lead. Not one account we’ve ever seen, ours included. Across the account’s lifetime the number was 22.9% — still impossible.
A number that good isn’t good. It means you’re counting something that isn’t a lead.
We went through it one action at a time. Counted as “conversions” in a junk removal account:
Every one of those inflated the lead count and pulled the cost per lead down. The owner was being told he got 345leads in November 2025. He didn’t. He was making hiring and truck decisions against a number that was mostly page views.
Worse, Google’s automated recommendations were auto-applying bid strategy changes on top of it — at one point switching campaigns to optimize for “conversion value,” where the values attached were $1.00 defaults on things like YouTube subscriptions. The machine was buying more of the garbage because the garbage was what it had been told to want.
The part where we were wrong too
For roughly the first six months we ran this account, we reported those same inflated numbers. Q3 2025: 670 leads at $7.17. Q4 2025: 581 leads at $21.37. We didn’t fabricate them — they came straight out of the platform — but we passed them along before we understood what was in them, and any report we sent in that window overstated his lead flow.
We’re publishing that here because a case study that only implicates the last guy isn’t a case study, it’s an advertisement.
Alongside it, the traffic itself: 8,181 negative keywordsadded in dated batches across fifteen months, plus a “Waste Management & Free Seekers” exclusion list — free junk removal, where can i dump my mattress for free, city of tucson bulk trash pick up, donde tirar basura gratis, republic services. People looking for the dump, not for a company. Location targeting tightened to people physically in Tucson rather than anyone reading about it.
The reported conversion rate walked down as the fiction came out: 59% → 42.7% → 36.6% → 22.1% → 9.5% → 5.1%. Cost per lead moved the other way, from a fictional $4–9 to $33–50.
That’s not us getting worse. That’s the number becoming true. Across the other operators on this page — Tucson, Houston, York, Portsmouth, Portland — real junk removal and dumpster leads land in the $26–99range. Haul It Off now sits inside that band for the first time in the account’s history.
He is not getting fewer customers than he was. He is getting an accurate count of them.
We are not claiming we lowered his cost per lead — on paper we raised it. We are not claiming his lead volume grew; we can’t compare volume across a measurement change, and we won’t pretend otherwise. No full quarter has run on the rebuilt tracking, so this page reports none. What we’re claiming is narrower and, we’d argue, worth more: his numbers are real now, and they weren’t before.
Early signal, offered as a trend and not a result: August 2026 recorded 89 leads in its first nineteen days, against 52 in all of July — on the rebuilt tracking.
Paid ads figures come from account-level Google Ads exports for the account Adimize manages (quarterly cost, conversions and average CPC; the full campaign list; device totals; and filtered extracts of the complete change history report for August 19, 2024 – August 19, 2026), all pulled August 19, 2026. Every dated action in the rebuild timeline is recorded in that change history with its user attribution; the extracts committed here carry every cited row plus all 287 negative-keyword batches verbatim — row selection only, no field edited — rather than the full 974-change export, which remains a backfill item. Conversion rates are derived, not exported: clicks are calculated from quarterly cost divided by quarterly average CPC, then conversions divided by clicks. The lifetime 22.9% figure uses exported device-level totals (22,182 clicks, 5,075 conversions) and requires no derivation. We took over the ads at the end of May 2025; Q2 2025 straddles the takeover. Figures before and after the December 2025 goal changes are not directly comparable — that is the point of this chapter — and no cost-per-lead improvement is claimed. Monthly reported-conversion counts (345 → 15, and the July and August 2026 figures) come from the committed monthly conversions export (August 2022 – August 19, 2026), which reconciles to the quarterly series in every quarter. The August 2026 figure covers August 1–19, 2026 and is labeled as a trend, not a result. Cross-account cost-per-lead ranges cited are drawn from the other case studies published on this site. No revenue or ROAS claims.
Straight answer
The foundation is in. The AI-search visibility campaign on top of it — the work listed on the right — hasn’t started. Anyone telling you those are the same thing is selling you the second one at the price of both.
Built and live
Not yet run
Your turn
It’s free, it takes ninety seconds, and nobody has to talk to you to run it. Then score the competitor beating you. If those numbers bother you, that’s the conversation.