Fast Mold Testing
Full Technical SEO Audit
Comprehensive analysis of fastmoldtesting.com covering search visibility, technical health, content quality, schema markup, and AI search readiness.
April 16, 2026 — Prepared by MH-1
Built by MH-1
AI Marketing Operations Engine
This audit combines platform data from Google Search Console, Google Analytics 4, and live crawl analysis to deliver actionable insights grounded in real performance metrics.
Google Search Console
90-day keyword rankings, impressions, clicks, CTR, page performance, and device breakdown data.
Google Analytics 4
Traffic channels, page views, user engagement, conversion events, and device/geo segmentation.
DataForSEO
Live SERP positions, keyword suggestions with search volume/CPC, competitor domain intersections, and on-page scoring (88.19/100).
Live Crawl + AI Analysis
Technical audit of security headers, canonical tags, schema markup, AI Overview presence, and GEO readiness assessment.
Executive Summary
Overall SEO health score, critical issues, and quick wins for fastmoldtesting.com.
Needs Significant Work
Industry: Home Services / Environmental Testing • Business Type: Two-Sided Marketplace
Score Breakdown
Top 5 Critical Issues
CTR Crisis: 0.21% Overall Click-Through Rate
329K impressions generating only 679 clicks in 90 days. Top keyword "mold inspection services" has 28,579 impressions and 1 click. Multiple page-1 keywords with zero clicks.
Trailing-Slash Canonicalization Splitting 310K+ Impressions
20 city pages exist as both /city and /city/ variants in Google's index, splitting ranking signals. Sacramento alone has 42,427 impressions spread across duplicate URLs.
Indexable Soft 404s for Malformed URLs
URLs with trailing parentheses (e.g., /los-angeles)) return HTTP 200 with an empty SPA shell and "index,follow" robots tag. These thin pages are being indexed.
Blog Content Not Server-Rendered
Blog listing page schema declares zero posts ("blogPost":[]). Blog post links load dynamically via JavaScript, making them invisible to HTML-only crawlers.
Homepage Has Zero Links to City Pages
51 city pages receive no internal link equity from the site's most authoritative page, severely limiting their ability to rank.
Top 5 Quick Wins
Fix Trailing-Slash Redirects in Netlify Config
Add a single redirect rule to consolidate /city/ to /city. Reclaims ~310K split impressions across 20+ city pages.
Return 404 for Unknown SPA Routes
Configure Netlify fallback to return proper 404 status codes for unrecognized paths, preventing soft 404 indexing.
Add FAQPage Schema to City Pages
City pages already have 16-25 FAQ questions. Wrapping them in FAQPage schema can generate rich results in SERPs, dramatically improving CTR.
Update Blog Meta Description from "Sacramento" to National
The /blog page meta description still says "Sacramento's leading mold inspection service" — fixing this improves CTR for all non-Sacramento blog traffic.
Add City Page Links to Homepage
Add a "Service Areas" link section on the homepage linking to all 51 city pages. Immediate internal link equity distribution.
Search Performance Overview
Google Search Console and GA4 data for the last 90 days (Jan 16 – Apr 16, 2026).
Device Breakdown (GSC)
Desktop CTR is 0.16% — Half of Mobile
Desktop accounts for 69% of impressions but only 54% of clicks. Title tags and meta descriptions may be poorly optimized for desktop SERP display, or desktop rankings are lower-position.
Top Keywords by Impressions
| Keyword | Impressions | Clicks | CTR | Avg Position |
|---|---|---|---|---|
| mold inspection services | 28,579 | 1 | 0.003% | 26.8 |
| mold inspection | 20,561 | 5 | 0.02% | 25.5 |
| mold inspection services near me | 11,877 | 0 | 0% | 24.2 |
| mold testing | 11,219 | 5 | 0.04% | 27.4 |
| mold inspection near me | 8,461 | 12 | 0.14% | 19.6 |
| mold testing near me | 6,104 | 19 | 0.31% | 19.3 |
| mold remediation nyc | 3,516 | 1 | 0.03% | 10.9 |
| water testing near me | 3,216 | 0 | 0% | 1.6 |
| mold remediation new york | 2,857 | 0 | 0% | 9.4 |
| mold removal | 2,827 | 1 | 0.04% | 3.3 |
| mold inspector | 2,463 | 8 | 0.32% | 27.2 |
| water testing | 2,337 | 0 | 0% | 2.0 |
| mold testing nyc | 1,090 | 14 | 1.28% | 6.3 |
| mold inspection nyc | 1,082 | 9 | 0.83% | 10.2 |
| mold testing seattle | 1,166 | 9 | 0.77% | 8.3 |
Page-1 Keywords with Zero Clicks
"Water testing near me" ranks position 1.6 with 3,216 impressions and zero clicks. "Mold remediation new york" at position 9.4 with 2,857 impressions and zero clicks. "Mold removal" at position 3.3 with 2,827 impressions and 1 click. These are intent-mismatch or SERP feature losses.
Top Pages by Impressions (GSC)
| Page | Impressions | Clicks | CTR | Avg Position |
|---|---|---|---|---|
| /new-york | 38,227 | 79 | 0.21% | 8.2 |
| /sacramento | 25,721 | 97 | 0.38% | 15.5 |
| /los-angeles | 19,743 | 9 | 0.05% | 22.5 |
| /atlanta | 19,260 | 35 | 0.18% | 10.5 |
| / (homepage) | 17,140 | 131 | 0.76% | 23.0 |
| /san-francisco | 16,931 | 60 | 0.35% | 15.6 |
| /west-palm-beach | 14,965 | 29 | 0.19% | 7.8 |
| /san-jose | 8,108 | 38 | 0.47% | 17.7 |
| /seattle | 7,140 | 22 | 0.31% | 12.8 |
| /denver | 5,203 | 12 | 0.23% | 17.9 |
Traffic Channels (GA4, 90 Days)
| Channel | Sessions | Users | Engaged | Engagement Rate | Conversions |
|---|---|---|---|---|---|
| Direct | 8,144 | 6,704 | 2,708 | 37.4% | 520 |
| Organic Search | 2,881 | 2,132 | 1,597 | 53.6% | 247 |
| Paid Social | 1,434 | 1,385 | 332 | 25.9% | 0 |
| Referral | 987 | 460 | 624 | 59.9% | 225 |
| Paid Search | 339 | 279 | 174 | 51.9% | 12 |
| Organic Social | 302 | 271 | 117 | 47.3% | 4 |
Organic Search Has Highest Engagement Quality
At 53.6% engagement rate and 247 conversions, organic traffic converts 3x better than paid social (25.9%, 0 conversions). Investing in SEO will have outsized ROI compared to paid channels.
Live SERP Positions (DataForSEO)
Real-time Google organic rankings for key commercial queries, pulled via DataForSEO API on April 16, 2026.
| Query | SERP Features | FMT Position | Top 3 Organic |
|---|---|---|---|
| mold inspection near me | Local Pack PAA | Not in Top 20 | Angi, Thumbtack, Servpro |
| mold testing cost | AI Overview PAA | Not in Top 20 | Angi [2026 Data], Molekule, Reddit |
| mold inspection san francisco | Local Pack PAA | #7 | Bay Area Mold Pros, Yelp, Reddit |
| mold testing atlanta | Local Pack PAA | #19 | SafeAir, ATL Mold Testing, Reddit |
| best mold testing company | AI Overview PAA | Not in Top 20 | Reddit, BestCleanup, Angi |
Only Ranking in 2 of 5 Key SERPs — and Losing to Directories
FMT only appears in Google results for "mold inspection san francisco" (#7) and "mold testing atlanta" (#19). For the highest-volume queries ("mold inspection near me", "mold testing cost", "best mold testing company"), FMT is completely absent. Angi, Yelp, Reddit, and Thumbtack dominate. AI Overviews appear for cost and "best" queries — FMT has no content targeting either.
Keyword Opportunity (DataForSEO)
Keyword suggestions for "mold inspection" with monthly US search volume and CPC data.
| Keyword | Monthly Volume | CPC | Competition |
|---|---|---|---|
| mold inspection kits | 60,500 | $1.59 | High |
| mold inspection near me | 33,100 | $26.64 | Medium |
| mold inspection and testing near me | 33,100 | $26.64 | Medium |
| professional mold inspection | 6,600 | $39.21 | Low |
| mold inspection services | 6,600 | $12.08 | Low |
| cost of a mold inspection | 5,400 | $8.74 | Low |
| mold inspection prices | 5,400 | $8.74 | Low |
High-CPC Keywords = High Commercial Intent
"Professional mold inspection" has a $39.21 CPC with LOW competition — this means advertisers pay heavily for this traffic but few organic pages target it well. FMT should create a dedicated "professional mold inspection" landing page to capture this high-intent, low-competition keyword.
Competitor Domain Overlap (DataForSEO)
Domains competing for the same keywords as fastmoldtesting.com, ranked by keyword intersection count.
| Domain | Keyword Intersections | Avg Position | Type |
|---|---|---|---|
| fastmoldtesting.com | 580 | 37.2 | Self |
| yelp.com | 488 | 12.4 | Directory |
| moldinspectionandtest.com | 485 | 18.7 | Competitor |
| angi.com | 415 | 27.6 | Directory |
| reddit.com | 377 | 13.3 | Forum |
| moldsci.com | 341 | 26.5 | Competitor |
| thumbtack.com | 283 | 28.7 | Directory |
| airmd.com | 272 | 31.9 | Competitor |
| servpro.com | 245 | 16.0 | Competitor |
| epa.gov | 212 | 19.5 | Government |
FMT's Average Position is 37.2 — Deep Page 4
FMT shares 580 keywords with competitors but ranks at an average position of 37.2 (page 4). The top direct competitor, MI&T (moldinspectionandtest.com), shares 485 keywords at position 18.7 (page 2). Yelp and Reddit rank in the top 15 for the same queries. FMT has the keyword footprint but not the ranking power.
On-Page Score (DataForSEO)
5.6s Load Time Flagged by DataForSEO
The homepage takes 5,590ms to fully load with JavaScript enabled. DataForSEO flagged both "high_loading_time" and "high_waiting_time". This directly impacts Core Web Vitals (LCP) and mobile user experience.
Technical Health
Crawlability, indexability, security, and infrastructure analysis.
Crawlability & Indexability
| Check | Status | Details |
|---|---|---|
| robots.txt | Pass | Properly configured. Blocks /dashboard, /users, /profile, /blog/create, /blog/edit, /report/view |
| XML Sitemap | Pass | 281 URLs, well-organized with lastmod dates. All returning 200. |
| HTTPS | Pass | HTTP auto-redirects to HTTPS. HSTS enabled (max-age=31536000). |
| Viewport Tag | Pass | width=device-width, initial-scale=1.0 present on all pages |
| Canonical Tags | Pass | Present and correct on all key pages. Self-referencing canonicals. |
| Mixed Content | Pass | No HTTP resources loaded on HTTPS pages. |
Trailing-Slash Canonicalization Issue
Critical: 20 City Pages Have Duplicate URL Variants in Google's Index
While the server correctly 301-redirects /city/ to /city, Google has indexed both versions and is splitting impression and click signals between them. This is diluting ranking power for your most valuable pages.
| Page (Combined) | Combined Impressions | Combined Clicks | URL Variants |
|---|---|---|---|
| /sacramento | 42,427 | 114 | /sacramento + /sacramento/ |
| /new-york | 41,809 | 85 | /new-york + /new-york/ |
| /atlanta | 33,667 | 40 | /atlanta + /atlanta/ |
| /los-angeles | 29,822 | 9 | /los-angeles + /los-angeles/ |
| /san-francisco | 27,327 | 69 | /san-francisco + /san-francisco/ |
| /west-palm-beach | 23,019 | 33 | /west-palm-beach + /west-palm-beach/ |
| /seattle | 15,655 | 22 | /seattle + /seattle/ |
| /jacksonville | 14,020 | 12 | /jacksonville + /jacksonville/ |
| /san-jose | 11,082 | 39 | /san-jose + /san-jose/ |
| /fresno | 8,888 | 7 | /fresno + /fresno/ |
Total: 310K+ impressions across 20 pages are being split between duplicate URL variants. 10 additional pages (Houston, Orange County, Denver, Las Vegas, etc.) also affected.
Soft 404 Issue
High: Malformed URLs Return Indexable Empty Pages
URLs with trailing parentheses (e.g., /los-angeles) and /mold-inspection-cost-by-city/)) return HTTP 200 with a near-empty React SPA shell (~11 KB vs 150-211 KB for real pages). These pages have meta robots: index, follow and are being crawled — GA4 shows real traffic to these URLs.
What Happens
Unknown routes hit the SPA fallback (index.html). React doesn't find a matching route, renders an empty shell with homepage title and generic meta tags. No canonical tag pointing to the correct URL.
Fix Required
Configure Netlify _redirects or netlify.toml to return 404 status for unmatched routes. Alternatively, add client-side noindex for unknown routes in the React app.
Security Headers
| Header | Status | Value |
|---|---|---|
| Strict-Transport-Security | Present | max-age=31536000 |
| X-Content-Type-Options | Missing | — |
| X-Frame-Options | Missing | — |
| Content-Security-Policy | Missing | — |
| Referrer-Policy | Missing | — |
| Permissions-Policy | Missing | — |
5 of 6 Security Headers Missing
While not a direct ranking factor, missing headers expose the site to clickjacking/XSS risks and flag in security scanners that enterprise clients may use. Add via Netlify _headers file.
On-Page Optimization
Title tags, meta descriptions, heading structure, and internal linking analysis.
Key Page Audit Results
| Page | Title | Meta Desc | H1 | Canonical | OG Tags |
|---|---|---|---|---|---|
| Homepage | OK 71ch | Long 216ch | 2x H1 | OK | OK |
| /new-york | OK 62ch | OK 156ch | 2x H1 | OK | OK |
| /san-francisco | Long 77ch | Long 180ch | 2x H1 | OK | OK |
| /about | OK 53ch | OK 143ch | OK | OK | OK |
| /blog | OK 72ch | Wrong | OK | OK | Wrong |
Issues Found
Duplicate H1 Tags on Homepage + All City Pages
Template produces two H1 elements per page. This is a template-level bug that affects 50+ pages. Fix once in the React component to fix everywhere.
Blog Meta Description References "Sacramento"
The /blog page meta description and OG description both say "Sacramento's leading mold inspection service." This is inaccurate for a national 42-city service and hurts CTR for non-Sacramento traffic.
Homepage Meta Description Too Long (216 chars)
Google typically displays 155-160 characters. The key differentiator ("No remediation conflict of interest") appears at the end and gets truncated. Move it earlier.
Homepage Keywords Meta Targets Only Sacramento/SF
While the keywords meta tag has minimal ranking impact, it signals to crawlers that the site is regional rather than national. Update or remove.
Internal Linking
Critical: Homepage Links to Zero City Pages
The homepage has links to /about, /blog, /mold-inspection-cost-by-city, /referral-program, /diy-testing, /partner-program, and /advertise. But none of the 51 city pages receive a direct link from the homepage, despite being the site's highest-value SEO assets.
Blog Posts Have Poor Cross-Linking
Most blog posts link only to navigation pages. City-specific posts should link to their corresponding city landing page and related articles to build topical clusters.
Content & E-E-A-T Analysis
Content depth, expertise signals, and content gap assessment.
Page Content Depth
| Page Type | Avg Word Count | E-E-A-T Rating | Notes |
|---|---|---|---|
| Homepage | ~2,400 | Strong | Good depth. Certs, testimonials, FAQ, process steps. |
| City Pages (NY, SF) | ~2,800 | Strong | Local content, named inspectors, neighborhood coverage, FAQs. |
| About Page | ~500 | Weak | Critically thin. 8 team members listed but no narrative depth. |
| Blog Posts (avg) | ~1,500 | Mixed | NYC articles strong; others lack depth and author bios. |
| Blog Listing | ~150 | Failing | Dynamic-only content. Empty schema. Not server-rendered. |
E-E-A-T Strengths
Strong Signals
- ASTM, AIHA-EMPAT, InterNACHI, PAT certifications
- Berkeley SkyDeck accelerator association
- On-staff microbiologist
- Named inspectors with real photos and credentials
- Client testimonials with dates
- "Conflict-free" inspection-only model
Weak Signals
- About page critically thin (~500 words)
- No author bios or credential links on blog posts
- No case studies despite having a "Case Studies" category
- No founding story or company history narrative
- Blog meta references only "Sacramento" (regional positioning)
- No press/media page linking to coverage
Content Gaps
| Missing Content | Priority | Opportunity |
|---|---|---|
| Dedicated mold inspection cost/pricing page | Critical | "Mold inspection cost" queries go to Angi/HomeGuide. No FMT content targets this. |
| Service-specific landing pages (commercial, real estate, post-remediation) | Critical | Only /diy-testing has its own page. 3 major services lack dedicated pages. |
| Case studies with real outcomes | Critical | Category exists but appears empty. Real case studies would dramatically boost E-E-A-T. |
| Hub/pillar content pages | High | No topical cluster architecture. National pillar pages needed for "mold testing" and "tenant rights". |
| "How to prepare for mold inspection" guide | High | High-intent informational query with no coverage. |
| Mold glossary / education hub | Medium | "What is black mold," "types of mold," "mold vs mildew" queries uncovered. |
| Reviews/testimonials hub page | Medium | Reviews scattered across city pages. No central "fast mold testing reviews" target. |
| Video content pages | Medium | YouTube channel exists but no video embeds or VideoObject schema on site. |
| City pages for Portland, Minneapolis, Detroit, Charlotte, Nashville, etc. | Medium | Major US metros missing from the 42-city portfolio. |
Structured Data Audit
JSON-LD schema markup analysis and opportunities.
Current Implementation
| Page Type | Schema Present | Issues |
|---|---|---|
| Homepage | Organization + BreadcrumbList | Missing WebSite, Service, FAQPage schemas |
| City Pages | LocalBusiness + FAQPage + BreadcrumbList | Issues Empty Offer objects, wrong areaServed types, inconsistent capitalization |
| About Page | BreadcrumbList only | Missing Organization, Person schemas for 8 team members |
| Blog Listing | Blog + BreadcrumbList | Broken blogPost array is empty [] |
| Blog Posts | BlogPosting + BreadcrumbList | Issues dateModified uses Firestore format, author lacks @id/url/sameAs |
Critical Schema Issues
Blog Schema Declares Zero Posts
The /blog page Blog schema includes "blogPost": [] — an empty array. This actively tells search engines the blog has no content, contradicting the 231 articles in the sitemap.
dateModified Uses Firestore Timestamp Format
At least some blog posts have dateModified: {"_seconds": 1775961800, "_nanoseconds": 619000000} instead of ISO 8601. Google cannot parse this and ignores the field.
No FAQPage Schema on Homepage
The homepage has a "Common Questions" section with multiple Q&As but no FAQPage schema to generate rich results in SERPs.
City Page Service Schema Has Empty Offers
City pages declare Service objects within hasOfferCatalog but the Offer objects are empty (no price/priceRange). Google may flag as incomplete markup.
NY BBB sameAs Points to CA/San Francisco
The New York city page schema has a BBB sameAs URL pointing to the California/San Francisco BBB listing instead of the New York one.
AggregateRating Duplicated Across Cities
Both NY and SF pages show identical ratingCount: 261 and ratingValue: 4.9. If these are global counts shown as local ratings, this may violate Google's review schema guidelines.
Missing Schema Opportunities
Homepage
- WebSite — enables sitelinks search box
- Service — for each service type
- FAQPage — for "Common Questions" section
About Page
- Organization — canonical entity with full details
- Person — for 8 named team members
- AboutPage — page-level type
Blog Posts
- Author @id/url — for authorship signals
- Fix dateModified — ISO 8601 format
- VideoObject — when video content exists
City Pages
- Fix areaServed types — Place, not City for neighborhoods
- Add priceRange — to Service/Offer objects
- Fix BBB sameAs — correct state per city
Generative Engine Optimization (GEO)
AI Overview presence, LLM citations, and readiness for generative search.
AI Overview / SERP Presence
| Query Tested | FMT in AI Overview? | Who Appears Instead |
|---|---|---|
| mold inspection near me | No | Yelp, Thumbtack, MI&T (local pack dominates) |
| mold testing cost | No | Angi, HomeGuide, Fixr.com |
| how much does mold inspection cost | No | Angi, Molekule, MI&T |
| best mold testing company | No | BBB, Yelp, Angi, InterNACHI |
| mold inspection san francisco | No | Bay Area Mold Pros, A-1 Certified, Mold Inspection Sciences |
| mold testing atlanta | Bottom | SafeAir, Atlanta Mold Testing dominate; FMT at position ~10 |
Competitor Comparison
| Competitor | Strengths Over FMT |
|---|---|
| Mold Inspection & Testing (MI&T) | National footprint, WSJ mention, full NAP with street addresses, strong Yelp/Google presence |
| Angi | Dominates cost/pricing queries with structured data tables and year-stamped content |
| Bay Area Mold Pros | 56 Yelp reviews, 1,113 photos, 40+ years experience. Dominates SF local pack. |
| Mold Inspection Sciences | 20+ years, 19 metros, 128+ reviews, CIRS protocol. Strong named expert E-E-A-T. |
| SafeAir (Atlanta) | 156 reviews at 5.0 stars, ACAC certification. Dominates Atlanta queries on review volume alone. |
AI Citability Scorecard
| Factor | Status | Details |
|---|---|---|
| llms.txt File | Missing | Returns 301 redirect to homepage. No LLM-specific content. |
| Schema Markup | Incomplete | Homepage missing FAQPage, Service, WebSite. Blog schema broken. |
| FAQ Structure | Partial | 19+ FAQs on city pages but may be JS-only rendered (not in initial HTML). |
| Factual Claims | Moderate | $250 starting price, 2-5 day results, certifications. Buried in marketing copy. |
| Passage Citability | Weak | Marketing/persuasion tone, not encyclopedic. No "X is Y" definition statements. |
| Pricing Transparency | Weak | "$250 starting" mentioned once. No cost guide, no comparison tables. |
| Content Volume | Strong | 281 URLs, 42 city pages, 231 blog posts is a solid base. |
| Third-Party Reviews | Low | Competitors have 56-156 reviews. FMT review count per city unknown/low. |
Competitive Opportunity: Schema is Wide Open
None of the top 5 competitors implement strong structured data either. FMT can leapfrog all of them by being first to properly implement LocalBusiness, FAQPage, and Service schema across city pages.
Prioritized Recommendations
All 30 fixes ranked by severity. See Section 09 for the time-boxed 30-60-90 day roadmap.
| # | Action | Severity | Effort | Roadmap |
|---|---|---|---|---|
| 1 | Fix trailing-slash canonicalization — Resubmit canonical URLs via GSC Inspection, resubmit sitemap | Critical | Low | Day 1-7 |
| 2 | Return 404 for unknown SPA routes — Configure Netlify _redirects or add client-side noindex | Critical | Low | Day 1-7 |
| 3 | Fix duplicate H1 tags — Template-level fix in React city page component | Critical | Low | Day 1-7 |
| 4 | Fix blog listing SSR — Server-render blog post links, populate Blog schema array | Critical | Med | Day 1-7 |
| 5 | Fix dateModified format — Convert Firestore timestamps to ISO 8601 in JSON-LD | Critical | Low | Day 1-7 |
| 6 | Add city page links to homepage — "Service Areas" section linking all 51 city pages | Critical | Low | Day 8-14 |
| 7 | Add FAQPage schema — Homepage + all city pages (16-25 existing Q&As) | High | Med | Day 8-14 |
| 8 | Update blog meta description — Replace "Sacramento" with national positioning | High | Low | Day 8-14 |
| 9 | Create "Mold Inspection Cost" page — Pricing tables, city breakdowns, FAQPage schema | High | Med | Day 15-30 |
| 10 | Add WebSite + Service + Organization schema to homepage | High | Med | Day 15-30 |
| 11 | Expand About page — 1,500+ words, founding story, Person schema for 8 team members | High | Med | Day 15-30 |
| 12 | Fix city page schema — areaServed types, BBB sameAs, priceRange, per-city reviews | High | Med | Day 15-30 |
| 13 | Create llms.txt file — Company identity, credentials, citation guidance | Medium | Low | Day 15-30 |
| 14 | Add security headers — X-Content-Type-Options, X-Frame-Options, CSP, Referrer-Policy | Medium | Low | Day 15-30 |
| 15 | Create service landing pages — Commercial, Real Estate, Post-Remediation | Medium | High | Day 31-45 |
| 16 | Add author bios to blog posts — Author pages, Person schema with @id/url/sameAs | Medium | Med | Day 31-45 |
| 17 | Publish 3 case studies — Before/after data, lab results, customer quotes | Medium | High | Day 31-45 |
| 18 | Rewrite content for AI citability — Encyclopedic tone, definition paragraphs, comparison tables | Medium | Med | Day 46-60 |
| 19 | Build Knowledge Panel — Wikidata entity, consistent NAP, Crunchbase profile | Medium | Med | Day 46-60 |
| 20 | Build hub-and-spoke pillar pages — National "mold testing" + "tenant rights" pillars | Medium | High | Day 46-60 |
| 21 | Launch review collection program — Post-inspection review flow for Google + Yelp | Medium | Med | Day 61-75 |
| 22 | Create "How to Prepare for Mold Inspection" guide | Low | Med | Day 61-75 |
| 23 | Create reviews/testimonials hub page | Low | Med | Day 61-75 |
| 24 | Add city pages for Portland, Minneapolis, Detroit, Charlotte, Nashville, Columbus | Low | High | Day 76-90 |
| 25 | Shorten homepage meta description to <160 chars, move differentiator earlier | Low | Low | Day 76-90 |
| 26 | Add Google Maps embeds to city pages | Low | Low | Day 76-90 |
| 27 | Publish full street addresses on all city pages | Low | Low | Day 76-90 |
| 28 | Build Reddit/forum presence for brand mention signals | Low | Med | Day 76-90 |
| 29 | Create neighborhood sub-pages for NYC boroughs + SF districts | Low | High | Day 76-90 |
| 30 | Embed video content + add VideoObject schema | Low | Med | Day 76-90 |
30-60-90 Day Roadmap
Aggressive execution plan. Every week has hard deliverables. Content starts Day 1, not Day 30. Technical fixes ship in the first 3 days.
This is an Aggressive Plan
All 5 critical bugs ship in Days 1-3. First new content page publishes by Day 7. Blog content starts Day 8, not Day 30. Review collection starts Day 14, not Day 61. Every week has a hard ship date. If you can't move at this pace, extend the timeline — but don't cut scope.
Days 1-30: Fix + Ship Content
All bugs fixed by Day 3. First content live by Day 7. Blog launched by Day 14. Review engine running by Day 21.
Goal: Eliminate every technical bug, launch schema for rich results, publish the cost guide + 3 service pages, start the blog at 2 posts/week, begin review collection, and expand the About page — all within 30 days. No "planning" weeks. Ship every day.
Days 1-3 — Emergency Bug Sweep (all engineering, zero content needed)
| Ship | Verify | |
|---|---|---|
| ☐ | Fix trailing-slash canonicalization. Resubmit all 20 affected city pages via GSC URL Inspection. Resubmit sitemap.xml. | curl -I /sacramento/ → 301 to /sacramento |
| ☐ | Fix soft 404s. Netlify _redirects or React 404 component with noindex. | curl -I /los-angeles) → 404, not 200 |
| ☐ | Fix duplicate H1. One template change, fixes 50+ pages. | View source any city page → exactly 1 <h1> |
| ☐ | Fix blog SSR + schema. Server-render post links. Populate blogPost array. | curl /blog → post links visible in raw HTML |
| ☐ | Fix dateModified. Firestore timestamps → ISO 8601. | Rich Results Test → BlogPosting valid |
| ☐ | Update blog meta description. "Sacramento" → national positioning. | View source → new description |
| ☐ | Add security headers. Netlify _headers file. | SecurityHeaders.com → A grade |
| ☐ | Add llms.txt. Company identity, certs, pricing, AI citation guidance. | curl /llms.txt → 200 |
Days 4-7 — Schema Blitz + First Content Page
| Ship | Verify | |
|---|---|---|
| ☐ | Add FAQPage schema to homepage + all 51 city pages. They already have 16-25 Q&As each. Wrap in JSON-LD. Ensure answers are SSR'd. | Rich Results Test → FAQ rich results eligible |
| ☐ | Add WebSite + Service + Organization schema to homepage. SearchAction, 3 Service types, complete Organization with foundingDate. | Rich Results Test → all pass |
| ☐ | Fix city page schema. areaServed types, NY BBB sameAs, priceRange in Offers, per-city review counts. | Schema validation → 0 warnings |
| ☐ | Add city page links to homepage. "Service Areas" section linking all 51 city pages. | Homepage links → 51 city page hrefs |
| ☐ | PUBLISH: "Mold Inspection Cost" guide. #1 content gap. Targets "mold testing cost" (AI Overview query) and "mold inspection cost" (5,400/mo, $8.74 CPC). Summary answer box + cost tables + 10 FAQs with schema. 2,000+ words. | Page live, indexed within 48 hours |
Days 8-14 — Content Velocity Begins + E-E-A-T Foundation
| Ship | Verify | |
|---|---|---|
| ☐ | PUBLISH: Expanded About page (1,500+ words). Founding story (Marvin Labs/Berkeley SkyDeck), company history, stats, press. Person schema for all 8 team members. | About page → 1,500+ words, 8 Person schemas |
| ☐ | PUBLISH: Blog post #1 — "How to Prepare for a Mold Inspection" (high-intent, zero competition). | Published + indexed |
| ☐ | PUBLISH: Blog post #2 — "Is Mold Testing Worth It? What Homeowners Need to Know" (PAA target). | Published + indexed |
| ☐ | LAUNCH: Review collection program. Post-inspection email/SMS 24hr after inspection with direct Google review link. Follow-up at day 5. Inspector-specific cards. Target 10+/city/month. | First review requests sent |
Days 15-21 — Service Pages + Blog Cadence
| Ship | |
|---|---|
| ☐ | PUBLISH: /commercial-mold-testing — 1,500+ words, compliance content, commercial FAQs, FAQPage schema. |
| ☐ | PUBLISH: /real-estate-mold-inspection — Pre-purchase process, negotiation leverage, FAQ schema. |
| ☐ | PUBLISH: /post-remediation-testing — Clearance testing protocol, FAQ schema. |
| ☐ | PUBLISH: Blog post #3 — "Mold Inspection vs Mold Testing: What's the Difference?" |
| ☐ | PUBLISH: Blog post #4 — "Does Homeowners Insurance Cover Mold Inspection?" |
Days 22-30 — Author Pages + Citability Rewrite + Blog Push
| Ship | |
|---|---|
| ☐ | Create author profile pages for Jordan Gruber + Alexander Law Smith. Photo, credentials, certification numbers, LinkedIn. Person schema with @id. |
| ☐ | Add author bios to all existing blog posts. Link to profile pages. |
| ☐ | Rewrite homepage + top 5 city page opening paragraphs for AI citability. Replace marketing copy with encyclopedic, extractable statements. |
| ☐ | PUBLISH: Blog post #5 — "What Happens During a Mold Inspection? Step-by-Step Guide" |
| ☐ | PUBLISH: Blog post #6 — "How Long Does a Mold Inspection Take?" |
| ☐ | Shorten homepage meta description to <155 chars. Move differentiator earlier. |
Day 30 Milestone
All technical bugs resolved Day 1-3. FAQ rich results appearing. Cost guide page competing for featured snippets. Blog at 2/week cadence. Review collection generating first new reviews.
Days 31-60: Authority Blitz
Pillar pages, case studies, Knowledge Panel, and continued blog velocity at 2/week
Goal: With bugs fixed and content machine running, this phase builds topical authority with pillar pages, real case studies, and Knowledge Panel foundation. Blog stays at 2 posts/week (8 posts this phase). Target: average position moves from 37 toward 20.
Days 31-40 — Pillar Pages + Case Studies + Blog Posts 7-10
Owner: Content + SEO • Interviews with inspectors in parallel with content production
| Deliverable | What to Ship | KPI to Watch | |
|---|---|---|---|
| ☐ | Create 3 service-specific landing pages | /commercial-mold-testing: Target "commercial mold inspection" (797 impressions, position 31). Include industry-specific content (warehouses, offices, schools), compliance requirements, and commercial FAQs. /real-estate-mold-inspection: Target "mold inspection for home buyers." Include pre-purchase inspection process, inspector expectations, negotiation leverage tips. /post-remediation-testing: Target "post-remediation verification." Include clearance testing protocol, what "passing" means, and re-testing guidance. | GSC: each page indexed within 2 weeks; impressions for service-specific queries |
| ☐ | Add author bios to all blog posts | Create author profile pages (/team/jordan-gruber, /team/alexander-law-smith). Add photo, credentials, certification numbers, LinkedIn link. Update BlogPosting schema with author.@id pointing to profile page. Add Person schema on profile pages. | Rich Results Test: author recognized in BlogPosting schema |
| ☐ | Publish 3 case studies | Real inspection stories with: (1) Property description and initial concern, (2) Inspection methodology and findings, (3) Lab results with actual data, (4) Recommendations given, (5) Outcome/resolution, (6) Customer quote. Target the empty "Case Studies" blog category. Include before/after photos where possible. Each 1,500+ words. | Organic traffic to case study pages; time on page >3 min |
Days 41-50 — Knowledge Panel + Reviews Hub + Blog Posts 11-14
Owner: SEO + Content + Marketing • Entity building + continued content velocity
| Deliverable | What to Ship | KPI to Watch | |
|---|---|---|---|
| ☐ | Rewrite key pages for AI citability | Rewrite the opening paragraphs of the homepage, top 5 city pages, and cost guide in encyclopedic/informational tone. Replace "Get accurate results within hours, not days" with citable statements: "Fast Mold Testing delivers lab-verified inspection reports within 2-5 business days, compared to the industry standard of 7-14 days. Pricing starts at $250 for residential inspections." Add definition paragraphs, comparison tables, and structured "X is Y" statements throughout. | GEO re-audit: citability score improves from 2.75/10 |
| ☐ | Build Google Knowledge Panel foundation | (1) Create Wikidata entity for Fast Mold Testing Co. with all structured fields. (2) Publish Crunchbase profile leveraging Berkeley SkyDeck / Marvin Labs origin. (3) Verify and complete Google Business Profile for each service city. (4) Ensure consistent NAP (name, address, phone) across Yelp, BBB, Google, Bing Places, Apple Maps. (5) Add sameAs schema pointing to all official profiles. | Branded search: Knowledge Panel appears within 4-8 weeks |
| ☐ | Build hub-and-spoke pillar pages | Create 2 national pillar pages: /mold-testing-guide (3,000+ words): Comprehensive "What is mold testing?" guide covering types, process, costs, when to test, DIY vs professional. Links to all city pages + relevant blog posts as spokes. /tenant-rights-mold (2,500+ words): National tenant rights guide covering landlord obligations, documentation, legal remedies. Links to city-specific tenant rights articles. | GSC: pillar pages rank for informational queries; internal link structure visible in GSC Links report |
Day 60 Milestone
Day 1-30 fixes fully propagated. 14+ blog posts live. Pillar pages ranking. Case studies boosting E-E-A-T. Knowledge Panel building. Review count growing at 10+/city/month. 4 new content pages + pillar pages + case studies all indexed.
Days 61-90: Scale & Dominate
New city pages, neighborhood sub-pages, Reddit presence, video rich results, and 22 total blog posts
Goal: By now all technical issues are resolved, schema is driving rich results, content machine is at 2 posts/week, and review engine is running. This phase expands into 6 new cities, creates NYC neighborhood sub-pages, embeds video for VideoObject rich results, and builds the Reddit/community presence that seeds AI training data. Blog hits 22 total posts by Day 90.
Weeks 9-10 (Days 61-75) — Review Engine + High-Value Content
Owner: Operations + Content + SEO • Process changes + content creation
| Deliverable | What to Ship | KPI to Watch | |
|---|---|---|---|
| ☐ | Launch review collection program | Build a systematic post-inspection review request flow: (1) Automated email/SMS 24 hours after inspection with direct Google review link. (2) Follow-up 5 days later for non-responders. (3) Inspector-specific review request cards handed out at end of inspection. (4) City-specific Google Business Profile links so reviews land on the correct listing. Target: 10+ reviews per city per month. | Google Business: review count per city increases by 20+ in 30 days |
| ☐ | Create "How to Prepare for Mold Inspection" guide | Target "how to prepare for mold inspection" (high-intent, low coverage). Include: pre-inspection checklist, what to expect during inspection, what NOT to do (don't clean suspected mold areas), questions to ask your inspector. Add FAQPage schema. 1,500+ words. Internal link to service pages + city pages. | GSC: ranking for preparation-related queries within 6 weeks |
| ☐ | Create reviews/testimonials hub page | Centralized /reviews page aggregating all customer testimonials from city pages + Google/Yelp ratings. Target "fast mold testing reviews" branded query. Include AggregateRating schema with accurate global totals. Link to each city page's review section. | Branded search: reviews page appears for "fast mold testing reviews" |
Weeks 11-12 (Days 76-90) — Market Expansion + Polish
Owner: SEO + Content + Marketing • New market pages + refinements + community building
| Deliverable | What to Ship | KPI to Watch | |
|---|---|---|---|
| ☐ | Add 6 new city pages | Portland, Minneapolis, Detroit, Charlotte, Nashville, Columbus. Use the existing city page template (now with fixed H1, correct schema, proper areaServed types). Each page should have: city-specific neighborhoods, local regulations, named inspectors, 15+ FAQ questions, local testimonials (or "coming soon" if none yet). | GSC: new city pages indexed and earning impressions within 4 weeks |
| ☐ | Shorten homepage meta description | Rewrite from 216 chars to <155 chars. Move key differentiator ("no remediation conflict of interest") earlier. Example: "Fast, certified mold inspections with AI-powered lab results in 2-5 days. No remediation upsells. Serving 48+ cities nationwide. Book today." | GSC: homepage CTR improves for branded + generic queries |
| ☐ | Add Google Maps embeds to city pages | Embed an interactive Google Maps iframe showing the service area for each city page. Improves time on page and provides local relevance signals. | GA4: engagement duration increases on city pages |
| ☐ | Publish full street addresses | Replace partial addresses ("Broderick St, San Francisco") with complete street addresses on all city pages. Required for local SEO and Knowledge Panel eligibility. | Google Business: local pack eligibility improves |
| ☐ | Build Reddit/forum presence | Create helpful, non-promotional answers in r/homeowners, r/homeimprovement, r/sanfrancisco, r/atlanta, r/realestate on mold-related questions. Post from a branded account with "mold inspector" flair where possible. Target: 3-5 quality responses per week. LLMs heavily weight Reddit for training data. | Brand mentions: Reddit threads mentioning "fast mold testing" increase |
| ☐ | Create NYC neighborhood sub-pages | Manhattan, Brooklyn, Queens, Bronx, Staten Island. NYC is the highest-impression city (38K). Sub-pages capture borough-specific queries: "mold testing brooklyn," "mold inspection manhattan." Each 1,500+ words with borough-specific regulations, neighborhoods, inspectors. | GSC: borough-specific query impressions and clicks |
| ☐ | Embed video content + VideoObject schema | Embed 3-5 YouTube videos from the @MARVINmoldlabs channel on relevant pages (homepage, about, city pages). Add VideoObject JSON-LD schema for each embed. Video rich results appear in SERPs and increase CTR. | GSC: video rich result impressions in Performance report |
Day 90 Milestone
42 items complete. 22 blog posts live. FAQ + video rich results driving CTR. Cost guide capturing featured snippets. 3 case studies and 2 pillar pages building topical authority. Knowledge Panel live or building. 60+ new reviews collected. 6 new city pages + NYC neighborhoods indexed. Reddit presence seeding AI training data. FMT is a top-3 competitor to MI&T, SafeAir, and Bay Area Mold Pros.
Full 90-Day Projected Trajectory
Aggressive targets assuming full execution at pace
| Metric | Today | Day 30 | Day 60 | Day 90 |
|---|---|---|---|---|
| Overall CTR | 0.21% | 1.0-2.0% | 2.5-4.0% | 3.5-5.5% |
| Monthly Organic Clicks | ~226 | 1,100-2,200 | 2,750-4,400 | 3,850-6,000 |
| Avg Position (DataForSEO) | 37.2 | 28-32 | 20-25 | 15-22 |
| SEO Health Score | 51 | 70-76 | 78-84 | 84-90 |
| Schema Score | 30 | 75-85 | 85-90 | 90-95 |
| GEO Readiness | 28 | 40-50 | 55-65 | 65-75 |
| Indexed Pages | 281 | ~295 | ~315 | ~340 |
| Rich Result Types | 0 | FAQ | FAQ + Sitelinks | FAQ + Video + Sitelinks |
| Knowledge Panel | None | None | Building | Live (est.) |
Projections assume all items are completed on schedule. SEO impact compounds — later phases benefit from earlier fixes propagating through Google's index. Actual results depend on competitive dynamics, Google algorithm changes, and execution quality.