From John

Why we built My Site Buddy

A 2 minute, 46 second story about the work that was getting buried and what changed when Web Moves built My Site Buddy.

Read the full story and transcript

Four weeks, documented

Four weeks of website work
for 27 hours
of the owner’s time

A multi-state pest-control business updated its website, content, and three ad platforms. This project record shows the work, how leads were tracked, and the checks before anything went live.

PROJECT 06
Client
Name withheld
Business
Pest control · heat treatment
Footprint
7 offices · two states · 179 city pages
Platform
WordPress
Window
7 August – 4 September 2026
Owner's time
~27 hours across 13 active days

Measured, not remembered

258
Pages live
27 h
Owner's time
3
Ad platforms connected
1,136
Job photos published
2,099
Call files diarized
31
Database migrations

How the time compared

Same scope. Less calendar time.

This estimate compares the same work done by specialists with the measured project timeline.

Estimated time by hand one full-time specialist

M1 M2 M3 M4 M5–7

With My Site Buddy alongside the owner's actual job

W1–4 More time for the business
Four to seven months of estimated work, completed in four weeks

The same scope was completed. A person checked every change, and six ad campaigns are ready for the owner’s approval.

Owner time

About 27 hours of owner time.

The owner’s time comes from the session transcripts, not a guess. It includes time spent reading, deciding, and typing between messages.

Different time-gap rules produce different totals. We show the range and use the middle figure rather than claiming false precision.

Choose the time-gap rule

Gaps under 2 minutes count as working
13.9 h
Gaps under 5 minutes count as working
26.6 h
Gaps under 10 minutes count as working
39.0 h
Gaps under 20 minutes count as working
53.5 h

There were 26 sessions across 13 active days and 755 instructions. The shorter time gap likely leaves out some reading time; the longer gap likely includes other work. This counts chat time only, and the account is shared by two people.

600–1,100 hours of estimated specialist work, with about 27 owner hours

What was completed

What changed, step by step.

Twelve parts of the project moved at the same time. Each work item shows the change and the estimated time it would take by hand.

WORK ITEM 01 / 12

The website redesign — 16 panels, live

A supplied design bundle of sixteen page layouts became real templates rather than mock-ups, each re-laying-out the page's own content instead of substituting new copy.

  • Home, location, service area, resource hub, article, service, pricing, about, contact, guide, video library, prep checklist, team, bio and legal — all switched on in production
  • Built against the real design tokens, with 20 logo files, 13 press marks and 7 certification marks extracted from the bundle rather than cropped from screenshots
  • Service prose moves into pop-ups but is never deleted; the checklist reads the real 31 items; contact reuses the live form; pricing keeps the live calculator
  • "Look exactly like the designed html files" became a standing rule — every judgement call was reverted, with one exception: the ban on the word "safe", a pesticide-labelling requirement that overrides the design's own labels
Estimated time by hand
~150–300 hrs
With My Site Buddy
in the sprint

WORK ITEM 02 / 12

The call corpus — evidence instead of marketing copy

The CRM could not say who answered an inbound call; its API exposes a user on outbound only. Rather than accept that, the answer was rebuilt from the recordings themselves.

  • Reps identify themselves in the greeting, so the transcript is the attribution — a method validated against the CRM's own interface on a call it attributes by name
  • 90 individual transcripts and a 2,099-file diarized batch with speaker labels retained, which is what makes a quote attributable at all
  • 195 calls analysed for answered-by, with inbound/outbound split and answered-versus-voicemail counts
  • Two limits documented rather than hidden: transcripts only exist from early August, and speech recognition renders one staff name as another real colleague's — so a quote is never attributed on the transcript name alone
Estimated time by hand
~40–70 hrs
With My Site Buddy
in the sprint

WORK ITEM 03 / 12

Quotes, questions and photographs on the pages

That corpus became on-page evidence under strict publishing rules, screened by script and never edited into shape.

  • 3,580 screened quote records across 179 pages, and 1,174 real customer questions across 179 cities, rendered as "asked on a call from [city]" rather than invented FAQ filler
  • Quotes publishable only when the caller is anonymous; staff named; card details never transcribed; an automated PII screen drops a quote outright on a trip
  • Every quote ships with its markup — real headings, cite, time datetime, Person schema for named crew — because answer engines chunk a document on its heading tree
  • 1,267 job photos reviewed one at a time, 1,136 published across 45 cities; the automated detector measured 75% recall with blind spots in exactly the worst class, so it only orders the queue and is never a gate
Estimated time by hand
~95–185 hrs
With My Site Buddy
in the sprint

WORK ITEM 04 / 12

New pages, written to pass the detector

A pricing guide, a bed-bug FAQ hub, demand-aligned FAQs, a team page, five city listicles and a paid-search landing page — each shipped as a repeatable migration.

  • The FAQ hub followed keyword research: city-level exact demand is thin, while generic questions carry the volume, so generic biology FAQs were replaced with demand-aligned ones on 30 service-area pages
  • Freshly composed house-voice copy failed AI detection three times out of three; copy transplanted from the site's own verified-human corpus passed three out of three
  • So 67 of 142 cities were given genuinely human-passing prose from donor copy, and 75 were left alone rather than filled with something that would fail
  • City pages are never judged on a page-level score — job logs and ZIP lists are non-prose the detector misreads as machine-written
Estimated time by hand
~60–120 hrs
With My Site Buddy
in the sprint

WORK ITEM 05 / 12

Google Ads — created together, then paused

Six regional Search campaigns were created together and left paused. Nothing could run or spend until the owner approved it.

  • 258 exact-match keywords — every one literally containing "bed bug" — 42 ads, 86 negatives keeping general pest-control traffic out, 138 geo-targets, 72 assets
  • 676 successful operations, no partial failure
  • Clear launch limits: a shared daily budget, a hard ceiling on acquisition cost per booked job, a target lead cost, the second state excluded, and Search Partners and Display turned off
  • Conversions first cleaned up: email removed as a tracked conversion, biddable goals reduced to phone-call and form-submit leads
Estimated time by hand
~25–50 hrs
With My Site Buddy
in the sprint

WORK ITEM 06 / 12

Microsoft Ads — the full circle

The loop closes: the platform learns which click produced actual revenue, not just which click produced a form fill.

  • The click identifier is captured on arrival, persisted in a first-party cookie, posted with the form and written onto the CRM contact
  • A daily job polls for won opportunities, reads that identifier back off the contact, and reports the booked job as an offline conversion
  • Access details are stored outside the public website folder. Updates use file locking, and the system refuses unsafe files
  • Deduplicated so an overlap cannot double-submit, and no names, emails or click IDs are written into any log
Estimated time by hand
~30–60 hrs
With My Site Buddy
in the sprint

WORK ITEM 07 / 12

OpenAI ads — and the diagnosis that mattered

A conversion-optimised campaign, then a month of zero conversions traced to two independent causes rather than one assumed one.

  • OpenAI's geo catalogue has no city level, so 136 service cities were mapped onto 785 postal-code targets, with the full mapping saved to the repo
  • 6,620 impressions, 84 clicks and a month of spend had produced nothing — the traffic genuinely did not engage, at 1.01 pages per session against 5–8% lead rates elsewhere
  • And, only discoverable by reading the actual network payload, the phone-click event had been sending its name in the wrong field since July, so it arrived unnamed and could never match
  • Fixed with a dedicated landing page, all nine ads repointed, the weakest creative paused, and a server-side conversions API reporting every lead a second time with hashed identifiers
Estimated time by hand
~40–70 hrs
With My Site Buddy
in the sprint

WORK ITEM 08 / 12

Analytics and the data path

Every form submission now sends a checked set of tracking details into named CRM fields.

  • Google, Microsoft and OpenAI click IDs, analytics client and session IDs, landing URL, timestamp and all five campaign parameters — held in a first-party cookie with a 90-day life matching the booked-job window
  • Each value individually validated and sanitised server-side, written to its own named CRM field, and mirrored into a durable note so a human can read the attribution without querying anything
  • A real bug found and fixed: forms posted through five per-form hooks that silently missed one form and would have missed every future one — now a single generic hook
  • 19 tracking numbers segmented by source, so calls close the loop without any code at all
Estimated time by hand
~40–70 hrs
With My Site Buddy
in the sprint

WORK ITEM 09 / 12

Content compliance

The site was arguing against the very chemicals it uses, and carried environmental claims that could not be substantiated.

  • 24 unsupportable claims cleared — in both copies of the city prose, because visible city copy lives in the theme's JSON rather than the editor blocks, so fixing one copy fixes nothing
  • The SEO plugin serves descriptions from its own table rather than post meta, so three out-of-state pages stored correct descriptions and published ones
  • Both repaired as rules rather than page by page
  • Review content is hands-off entirely — user-generated text and images are excluded from every content, alt-text and detection pass
Estimated time by hand
~40–80 hrs
With My Site Buddy
in the sprint

WORK ITEM 10 / 12

Code and website-update safety

The infrastructure work that came out of a failure, and the rule that came with it.

  • A deploy took the production site down for about six minutes: 133 theme files, 3.9 MB, had never been committed, so the deploy shipped code without its data
  • Everything checked beforehand had been checked against the running dev site, which had those files on disk — the wrong artifact entirely
  • All 133 committed, 8 missing migrations reconstructed, and a preflight harness written that verifies the artifact git would actually ship, extracted in isolation, in nine checks and a few seconds
  • The standing rule now: nothing exists until it is in the repo, and every database change ships as a migration in the same session that made it
Estimated time by hand
~20–40 hrs
With My Site Buddy
in the sprint

WORK ITEM 11 / 12

Analysis and reporting

Roughly twenty delivered reports and datasets underpinning the decisions above.

  • Competitor analysis, SERP datasets, site audits and a parity report
  • Keyword research that redirected the entire FAQ strategy away from thin city-level terms
  • Call timing, call-source and call-to-CRM resolution reports
  • Search Console and analytics exports reconciled against the live database rather than quoted from memory
Estimated time by hand
~40–80 hrs
With My Site Buddy
in the sprint

WORK ITEM 12 / 12

Custom pages and content at city scale

39 pages and FAQ sets shipped as repeatable migrations, each reaching production through the deploy rather than by hand.

  • A pricing guide covering home size, stories, access, distance and infestation level, with schema and sitemap inclusion
  • A bed-bug FAQ hub built against real search demand, with nine questions and every answer linking a cornerstone page
  • A team page, five city "best-of" listicles and a paid-search landing page
  • 199 cities with job logs and 78 with evidence bars, so a city page shows real local work rather than templated assurance
Estimated time by hand
~60–120 hrs
With My Site Buddy
in the sprint

Tools used

Tools used on this project.

The tools were connected to the project so the team could work with the business information in one place.

  • WordPress templates · 258 pages · migrations
  • PHP + MySQL theme code · 31 migrations
  • GitHub website-update safety · preflight checks
  • HighLevel CRM contacts · attribution fields · calls
  • Google Ads 6 campaigns · 258 keywords
  • Microsoft Ads click ID → booked job
  • Google Analytics sessions · key events
  • Tag Manager container · staged publishing
  • Search Console index status · performance
  • Pangram AI-detection gate on every page
  • Semrush keyword demand · competitors
  • DataForSEO SERP datasets
  • Headless browser panel screenshots · payload reads
  • SSH + cron deploys · daily booked-job bridge
  • Sheets ZIP mapping · reporting
  • OpenAI ads 785 ZIP targets · pixel · CAPI

16 tools · one project

Summary

600 to 1,100 hours of specialist work. Four weeks, and 27 owner hours.

This is an estimate of four to seven months for one full-time specialist, or six to ten weeks for a small team. The owner’s measured time was about 27 hours. The work included large review tasks: 2,099 call files, 3,580 quotes, 1,267 photographs, and 785 postcodes.

Manual estimate
600–1,100 hrs
Equivalent duration
4–7 months
My Site Buddy elapsed
4 weeks
Owner's hours
~27
Estimated specialist time per owner hour
25–40×
Pages live
258

What this estimate does and does not show

An agency would not have done all of this. Nobody hand-reviews 1,267 photographs or diarizes 2,099 call recordings; they would sample, or skip it, and deliver something smaller that is most of the way there. Counting that work at human rates flatters the comparison.

Some of the output was waste. A deploy took the production site down for six minutes on 1 September because 133 files had never been committed. The recovery and the safety checks built afterwards are included in the project record above, even though they were not planned work. A human team would make different mistakes, not fewer. Some design decisions also had to be rejected and reverted.

And raw volume flatters. 78,176 lines were added in the final ten days alone, but much of that is generated data — city manifests, photo manifests, postcode mappings. The hand-maintained theme is 33,816 lines, which is the honest engineering figure.

Owner time is measured from chat transcripts only. It excludes work done in the ad or CRM interfaces, and thinking away from the keyboard — and the account is shared by two people, so it is the pair of them, not one.

Four weeks. Three ad platforms. Work ready to review.

My Site Buddy keeps the website request, the work, and the review in one place. Important changes and ad campaigns wait for the owner’s approval.

See My Site Buddy