Danny Deepak
← All casesEmergency restorationBoone, IowaDiagnostic

Swift Restoration

A 5.0★ emergency operator. So why does a flooded basement two miles away call a franchise?

0

service or location pages on the site. Service cards linked to "#". Measured

A fully restored bathroom
Stock photo (Unsplash) · illustrative, not a Swift job
DR 3.2domain rating vs 63–76 franchises
42URLs marked noindex in the crawl
0Local Services Ads
5.0★15 Google reviews
Level 1

The 60-second story

For the CEO. Read left to right.
  1. 1Problem

    A 5.0-star, 15-review operator has almost no digital footprint. Franchises win the emergency searches.

  2. 2The leak

    No service pages, no location pages, no Local Services Ads, placeholder homepage title, no call tracking.

  3. 3How I found it

    Live crawl, Screaming Frog export, Ahrefs DR, Business Profile read, Ads Transparency Center check.

  4. 4What I did

    Delivered 20-section audit, keyword workbook, competitor research and a sequenced 30/60/90/180-day plan.

  5. 5What changed

    Nothing verified live. DATA NOT AVAILABLE for leads, calls, rankings or revenue.

  6. 6Proof

    Site crawl (~93 URLs), Ahrefs DR 3.2 and competitors, GBP review count, Ads Transparency Center.

  7. 7Lesson

    Outside-in audits give a diagnosis, not a result. Install call tracking before claiming anything.

Level 2

The business first

Before any channel: what they sell, to whom, and how money comes in.
Business model
Owner-operated emergency restoration (water, fire, mold, storm, commercial). Founded 2018. 24/7 response.
Industry
Emergency restoration and cleanup
Target customer
Homeowners and commercial clients in 8 central-Iowa counties. Property managers noted as recurring B2B potential.
Persona
A customer in a flood or fire, such as a flooded basement at 11pm, who calls the first credible provider.
Geography
Boone, IA home base. Boone, Story, Polk, Dallas, Webster, Hamilton, Greene, Guthrie counties. Des Moines metro to the south.
Commercial objective
Qualified emergency phone calls, not rankings. Win Boone and Ames first.
How revenue is made
Insurance-billed jobs plus possible recurring B2B. Job value and volume not shared.
How they convert
Phone call (515 number) and request-quote form. No call tracking or analytics installed at audit.
01

What the customer sees: before and after

The same touchpoint on a phone, before my work and after it. Screens are schematic; every change and number comes from the account, the change log or the client report.

Searching "water damage restoration" at 2 amPlan onlyMeasured
Before
water damage restoration near me
SponsoredfranchiseNational franchise · 24/7

Franchises win the emergency search.

swift sitePlaceholder homepage title

No service pages, no location pages, no call tracking.

After
water damage restoration near me
MapsLocal Services AdsSwift Restoration · 5.0★ · Google screened

Planned: LSA, service and location pages, call tracking.

  • Outside-in audit only. Nothing verified live.
02

Where the money leaks: the journey

This business's own path from first search to revenue. Tap a stage for the five-step leak card: what was wrong, how I found it, the evidence, what changed, and after.

01Emergency searchFlaggedGeneric, location-less ads. Double-encoded '&' shows literally in ad copy. No LSA.
Stage metric2 generic Search ads; 0 Local Services Ads Measuredcompetitor PDF 'Swift's current paid posture'; README diagnostic table
  1. 1 · What was wrong

    Generic, location-less ads. Double-encoded '&' shows literally in ad copy. No LSA.

  2. 2 · How I identified it

    Google Ads Transparency Center.

  3. 3 · Evidence

    'extraction & drying' rendering in ad #1 Measured14-Paid-Media-Strategy; competitor PDF

  4. 4 · What changed

    Planned: fix bug, rewrite creative, consolidate to 2-3 campaigns, launch LSA after GBP verification. Not confirmed done.

  5. 5 · After

    Data not availableno post-audit data

02Map pack and reviewsFlaggedStrong profile used passively. No review engine. SERVPRO of Ames runs town pages and strong GBP.
Stage metric5.0 stars on 15 Google reviews Measured13-Google-Business-Profile; xlsx Benchmark Dashboard ('last observed')
  1. 1 · What was wrong

    Strong profile used passively. No review engine. SERVPRO of Ames runs town pages and strong GBP.

  2. 2 · How I identified it

    GBP read and competitor review.

  3. 3 · Evidence

    15 reviews; local-pack rank for commercial terms ~none Measuredxlsx Benchmark Dashboard

  4. 4 · What changed

    Review request workflow and GBP optimisation planned for Month 1.

  5. 5 · After

    Data not availableno later review count

03Website landingFlaggedHomepage title is placeholder text. Service cards link to '#'. Counties are unlinked text. 42 URLs noindex.
Stage metric0 service pages. 0 location pages. ~7 real indexed pages of ~93 crawled. MeasuredREADME diagnostic snapshot; xlsx P1 Current Page Map
  1. 1 · What was wrong

    Homepage title is placeholder text. Service cards link to '#'. Counties are unlinked text. 42 URLs noindex.

  2. 2 · How I identified it

    Live crawl and Screaming Frog export.

  3. 3 · Evidence

    42 noindex URLs; 24.85% as printed (see discoveries on the base) Measured03-Current-State-Audit

  4. 4 · What changed

    Service x county architecture, sitemap and keyword map specced. Migration spec written.

  5. 5 · After

    DATA NOT AVAILABLE (new site not shown live) Data not availableno post-migration crawl

04CallFlaggedNo analytics, call tracking or rank reporting. ROI unprovable.
Stage metricData not availableno GA4, GSC or call tracking detected
  1. 1 · What was wrong

    No analytics, call tracking or rank reporting. ROI unprovable.

  2. 2 · How I identified it

    Tool check; Benchmark Dashboard shows 'Not yet tracked'.

  3. 3 · Evidence

    Tracked calls: not yet tracked Data not availablexlsx Benchmark Dashboard

  4. 4 · What changed

    GA4 + call tracking + GSC planned for Week 1.

  5. 5 · After

    Data not availablenone

05Job and insurance claimWorking
Stage metricData not availableno job, quote or close data
06Review and referralWorking
Stage metricData not availableno post-job review request data
03

Before, what I found, action, after

Verified numbers only. Where an after number does not exist yet, it says so.

Service pages
Before0 (cards link to '#') MeasuredREADME diagnostic snapshot
What I found

Core service has no page. Every competitor has one.

Action

Specced water, fire, mold, storm, commercial, sewage, emergency pillars.

AfterDATA NOT AVAILABLE (plan only) Data not availableno post-build crawl
Indexed real pages
Before~7 of ~93 crawled Measuredxlsx Benchmark Dashboard
What I found

~85 WordPress image-attachment URLs dominate the crawl.

Action

Attachment suppression, 301 map and template metadata specced for the .NET build.

AfterDATA NOT AVAILABLE (target ~10 at 30 days) Data not availablexlsx Benchmark Dashboard target only
Google reviews
Before15 reviews, 5.0 stars Measured13-Google-Business-Profile
What I found

Strong asset, passive profile.

Action

Review request workflow and GBP optimisation specced.

AfterDATA NOT AVAILABLE (target 25 at 30 days) Data not available19-Results-and-KPIs target only
Local Services Ads
Before0 Measuredcompetitor PDF; README
What I found

Water damage is LSA-eligible. No presence.

Action

LSA launch planned for Week 4 after GBP verification.

AfterData not availableno post-audit data
Ad copy defect
Before'&' renders literally in live ad Measured14-Paid-Media-Strategy
What I found

Double-encoded ampersand in ad #1.

Action

Fix specced for Week 1.

AfterData not availableno re-check
04

From digital to revenue: the strongest verified chain

Verified for 0 of 6 links. The chain breaks at “Google Search and LSA”, so revenue attribution is unavailable beyond that point.

Google Search and LSAChain breaks hereData not availableno ad account access
Google Business Profile views and callsChain breaks hereData not availablexlsx Benchmark Dashboard
Website sessionsChain breaks hereData not availablexlsx Benchmark Dashboard
Tracked phone calls and formsChain breaks hereData not availableno call tracking
Booked jobsChain breaks hereData not availablenone
RevenueChain breaks hereData not availablenone
05

What the history shows

Patterns found by re-reading the full history, not just the months I ran. Each is labelled: measured pattern, correlation, anomaly or seasonality.

Anomaly

The noindex percentage and the crawl size do not match

Sources say 42 noindex URLs = 24.85% of a crawl of ~93 URLs. 42 / 93 is 45.2%. 24.85% only works on a base of ~169 URLs. One of the two bases is wrong, or the crawl included non-HTML files, so I quote the count, 42, not a share.

The numbers

42 / 0.2485 = 169. 42 / 93 = 45.2%. ~85 attachment URLs / ~93 = 91% of the crawl. ~7 real pages.

So whatState one base. On the ~93 base, nearly half of crawled URLs are noindex and about 9 in 10 are junk attachments.

Anomaly

'Duplicate' titles are 'Multiple' in the crawl export

The case study says duplicate titles, metas and H1s across ~48-51 URLs. The competitor PDF names the export filters as 'Page Titles: Multiple = 51' and 'H1: Multiple = 47', flagged as plugin or module conflicts. 'Multiple' means more than one tag on a page, a different fault with a different fix.

The numbers

Titles multiple 51 URLs. H1 multiple 47 URLs. README range 48-51. Overlap with the ~85 attachment URLs: DATA NOT AVAILABLE.

So whatConfirm the filter before the migration spec. If the 51 are mostly attachment pages, the real-page metadata problem is smaller than stated.

Anomaly

The review target is far above the review history

15 reviews since 2018 is about 0.16 a month if all came since founding. The plan asks for 25 reviews in 30 days (+10) and 45+ in 90 days (+30). That is 24x to 64x the historical pace, depending on when reviews started.

The numbers

15 / 96 months = 0.16 a month. +10 in 30 days = 64x. If reviews began 36 months ago: 15 / 36 = 0.42 a month; 24x. Job volume per month: DATA NOT AVAILABLE.

So whatThe review engine depends on completed jobs per month, which no source gives. Treat 25 and 45 as stretch targets until job volume is known.

Anomaly

Month-1 plan conflicts with itself on sequencing

03-Current-State says do not patch WordPress, carry fixes into the .NET build. The keyword workbook roadmap says fix the Gutenverse plugin first, 'Critical, do first', and that every page build is blocked until then. Week 3 ships Water, Emergency, Boone and Ames pages. The migration date is not given. By day 60 the roadmap adds ~10 pages (5 pillars, 4 towns, 1 hub) on top of ~10, ~20 in all, against a 90-day target of ~17+ indexed pages.

The numbers

Day-30 target ~10 indexed pages. Day-60 additions: Mold, Fire, Storm, Commercial, Sewage + Ogden, Madrid, Nevada, Story City + insurance hub = 10. 90-day target ~17+. Sitemap lists 37 URLs.

So whatDecide the platform for Week 3 and fix the KPI targets. Without a migration date, none of the Month-1 page dates can be promised.

Measured pattern

Demand is sized in bands, and almost all bands are Low

Of 56 keywords across service gaps and local plan, 38 (68%) are Low band, 17 Med, 1 High. No service keyword is High. The one High band keyword is Des Moines, deferred to a later phase. 3 of the 5 'Critical' local keywords are Low.

The numbers

Service gaps: 25 Low, 10 Med, 0 High (35). Local: 13 Low, 7 Med, 1 High (21). Critical local: 3 Low, 2 Med. Bands are estimates from population and intent, not search volume.

So whatHome turf is winnable but small. No source sizes the calls available. Pull exact volume before promising lead numbers.

Not a marketing problem

What the data shows ads cannot fix. Saying so early saves budget.

  • Possible duplicate or impersonating domain swiftrestoration-us.com (same address, different phone, 'founded 2021'). Ownership unresolved. If it is an aggregator, it could divert calls. No data on calls lost.
  • Platform migration WordPress to .NET: timing and redirect risk sit with the client's developer. Migration date not stated.
  • Who controls the Google Ads account is unclear: advertiser shown as the owner's personal name, 'Verified'. Account access was never provided.
  • Close rate, job value and insurance billing mix: no data. Not a marketing lever until measured.

Data not available

What would prove more, and does not exist in the sources yet.

  • Leads, calls, forms, bookings, jobs and revenue. No tracking was installed.
  • Google Ads account data: spend, clicks, conversions. Only two ads seen via the Transparency Center.
  • GA4 and Search Console data. Organic sessions and impressions not baselined.
  • GBP views, calls and direction requests. Review count date ('last observed') and review velocity.
  • Exact search volume and difficulty. Only High/Med/Low bands from population and intent.
  • Referring domains and competitor traffic (Site Explorer blocked).
  • Migration launch date, and what is live now on either platform.
  • My exact start date and any change confirmed live after the June 2026 audit.
  • Crawl base: whether the denominator is ~93 or ~169 URLs.
  • README still carries a 'Replace this block with your details before publishing' placeholder in the author section.
Level 3

Implementation and data

For the team that has to run it: every action, test, date and dataset.
06

What I actually did

11 actions found in the project evidence, 4 done or live. Grouped by type, each with its source.

Strategy 3

  • Done

    Found the brief named the wrong domain (swiftrestoration.com is an unrelated company). Confirmed theswiftrestoration.com.

    competitor PDF 'three corrections' #1
  • Done

    Flagged duplicate property swiftrestoration-us.com (same address, different phone).

    competitor PDF #2; 12-Local-SEO
  • Done

    Competitor map and Ahrefs DR benchmark (Swift 3.2; Dream Steam 15; SERVPRO corporate 76).

    05-Competitor-Research; competitor PDF

Technical SEO 1

  • Done

    Live crawl and Screaming Frog audit of ~93 URLs. Root causes: plugin templating, attachment pages, no IA.

    03-Current-State-Audit; 07-Technical-SEO-Audit

SEO 1

  • Handed over

    Keyword workbook: 6 pages mapped, 35 service gaps, 21 local keywords, P1-P4, 6 clusters.

    deliverables/swift-restoration-keyword-strategy.xlsx

Website 1

  • Specced

    Site architecture, sitemap (37 URLs), navigation and .NET migration SEO spec with 301 map.

    07-10 READMEs

Google Business Profile 1

  • Specced

    GBP optimisation and review engine plan.

    13-Google-Business-Profile

Paid media 1

  • Specced

    Paid plan: fix '&' bug, consolidate to 2-3 campaigns, launch LSA after GBP verification.

    14-Paid-Media-Strategy

Landing page 1

  • Specced

    Landing page and CRO specs: click-to-call, 24/7 promise, 5.0 stars, short form.

    15, 16 READMEs

Tracking 1

  • Specced

    Measurement stack: GA4, call tracking, GSC, geo-grid, KPI dashboard.

    17-Analytics-and-Tracking; xlsx Benchmark Dashboard

Reporting 1

  • Handed over

    Executive case study PDF and competitor research PDF.

    deliverables folder
07

Tests and what they taught

Not every test worked. Each one changed the next decision.

  1. Hypothesis

    The brief's domain is the client's domain.

  2. Action

    Checked live Google Ads and the site's own county pages.

  3. Result

    swiftrestoration.com belongs to an unrelated company. Client is theswiftrestoration.com.

  4. Learning

    Any traffic or backlink pull on the wrong domain profiles another business.

  5. Next decision

    Use theswiftrestoration.com for all tool pulls.

  1. Hypothesis

    Ahrefs Site Explorer can size competitor traffic and keywords.

  2. Action

    Tried the connected account.

  3. Result

    'Insufficient plan'. Only free Domain Rating worked.

  4. Learning

    Volume stayed in High/Med/Low bands.

  5. Next decision

    Connect Semrush or restore Site Explorer access.

  1. Hypothesis

    SERVPRO of Ames ranks locally through the DR 0.8 microsite, not the DR 76 corporate domain.

  2. Action

    SERP check proposed.

  3. Result

    Not run. DATA NOT AVAILABLE.

  4. Learning

    If true, Swift already leads on authority.

  5. Next decision

    Run the SERP check.

08

Timeline: interventions and events

My actions sit alongside what the client, the previous team and the market did. Nothing here claims a cause.

  1. Client

    Swift Restoration founded (owner-operated).

    02-Business-Overview
  2. Market

    GBP verification becomes mandatory for LSA accounts, per competitor PDF. Makes GBP work a prerequisite for LSA.

    competitor PDF Local Services Ads section
  3. DannyI join

    Brief names swiftrestoration.com. I found it belongs to an unrelated FL/LA company. Client domain is theswiftrestoration.com.

    competitor PDF 'three corrections' #1
  4. Danny

    Live crawl, Screaming Frog, Ahrefs DR, GBP and Ads Transparency checks. Duplicate domain swiftrestoration-us.com flagged (same address, different phone, 'founded 2021').

    03-Current-State-Audit; competitor PDF; 12-Local-SEO
  5. Danny

    Competitor research, keyword workbook, executive PDF and 20-section repo written. Ahrefs Site Explorer returned 'Insufficient plan'.

    competitor PDF Status section; deliverables folder
  6. Danny

    Repository uploaded in a single commit.

    git log of the repo
09

The data, month by month

Outside-in only. No results are claimed.

Can't out-link franchises. Can out-local them.

Ahrefs Domain Rating. The real local threat is town-by-town microsites at DR 0.8. Measured

What a crawler finds

Homepage title: "This site is used to help customers look into our company"
Service cards link to "#". No service or county pages.
~93 URLs, mostly image-attachment pages; 42 noindex
Duplicate titles and H1s on ~51 URLs
Two generic Search ads with an encoding bug

Live crawl, June 2026 Measured

Evidence viewer: the client reports

10

What I'd do next

SourcesLive crawl (~93 URLs, Screaming Frog), Ahrefs Domain Rating, Business Profile, Google Ads Transparency Center, June 2026.Evidence labels: Measured, Calculated, Estimated, Assumption, Data not available.

Work with me

Seen a leak in your own numbers?

Send me the symptom. I'll tell you which case is closest and what I'd check first. No deck, no retainer pitch.

danieldeepak3519@gmail.comLinkedInFree 12-point check