Source-based operating doc. This is the simplified process with every task mapped to the AI SEO Mastery/Core 30 workflow. TaskTracker should hold these gates and checklists, not invent a second system.
The source says local SEO starts by making Google understand the business, then making the website mirror and support the GBP, then using rank maps and search data to decide what to build next.
Collect the truth before making claims, pages, metadata, schema, or GBP changes.
Clean categories/services and create the service truth map that drives site structure.
GBP landing page, category pages, service pages, locations, About/Contact, internal links.
Use Local Dominator, GSC, and rank movement to choose topical or geographic support.
Bing, citations, schema, reviews, mentions, and answer-engine recommendation tests.
Core 30 is not a vague “30 assets” idea. The source defines a page architecture: GBP landing page, GBP category pages, GBP service pages, location page(s), About/Contact, then topical/geographic support after rank-map review.
Goal: create one reliable source of truth before recommending pages, GBP edits, metadata, schema, citations, content, or reports.
| Task | Exact work | Output | Gate |
|---|---|---|---|
| Client identity lock | Confirm business name, website, phone, address, service areas, market, industry, primary offer, high-margin services, excluded services, and target city. | fact-lock.md | client facts only |
| Access checklist | Confirm access or missing access for GBP, website/CMS, GA4, GSC, Bing Webmaster, Local Dominator, BrightLocal/citations, Drive/Cosmo/onboarding docs. | access-log.md | do not block all work if one source missing |
| GBP fact pull | Pull owned GBP facts where available: primary category, secondary categories, services, description, hours, service areas, business info fields, profile links, photos baseline. | gbp-facts.json | read-only |
| Website inventory | Crawl site. Capture URLs, status codes, titles, H1s, metas, canonicals, schema, internal links, sitemap, robots, llms.txt if present. | site-inventory.csv | read-only |
| Homepage copy capture | Copy homepage/GBP landing page content as the Core 30 audit input. | homepage-content.txt | source input |
| Screaming Frog exports | Run/export Internal URLs CSV and All Links CSV. These are required by the Core 30 Content Audit workflow. | internal-all.csvall-links.csv | source input |
| Rank-grid baseline | Capture Local Dominator/rank-map baseline: keywords, grid size, date, average rank, top 3 percentage, weak zones, share links. | rank-map-baseline.md | no config changes yet |
| Review footprint | Capture Google review count/rating, newest reviews, service/location language, unanswered themes, and non-Google review sources if visible. | review-baseline.md | proof input |
| Citation/entity footprint | Check Bing Places, Apple Maps, Yelp, BBB, major GPS/navigation, niche/local directories, duplicates, old addresses, and NAP mismatches. | citation-footprint.mdmismatch-log.md | no vendor submits yet |
| GSC/GA4 baseline | If available, pull pages/queries/clicks/impressions/CTR/positions and traffic/lead quality. | gsc-ga4-baseline.md | optional but preferred |
| Proof inventory | Collect real services, photos, completed jobs, reviews, team, licenses, warranties, process, offers, constraints, and local proof. | proof-inventory.md | do not invent claims |
| Gate 1 approval packet | Summarize source disagreements and what is safe to use as truth. | approval-packet-v0.md | approval before mutations |
Goal: clean the GBP category/service model and turn it into a service truth map. GBP services are raw inputs, not automatic page instructions.
| Task | Exact work | Output | Gate |
|---|---|---|---|
| GBP risk audit | Classify changes by risk. Business name, address, and category changes are high/medium risk and can trigger suspension or re-verification. | gbp-risk-audit.md | approval required |
| Primary category check | Confirm primary GBP category matches the highest-value accurate broad service identity. | gbp-category-proposal.md | approval required |
| Secondary category check | Identify 3-5 strong secondary categories where appropriate. Avoid every possible category. | gbp-category-proposal.md | approval required |
| Competitor category research | Look at competitor GBP categories to find missing legitimate options, but only keep categories that match real services. | category-research.md | never fake category fit |
| Service cleanup matrix | Classify each GBP service: keep, consolidate, needs proof, remove/do not emphasize, needs site support. | gbp-service-cleanup-matrix.csv | draft first |
| Service clustering | Map services into parent categories, child services, revenue priority, conversion priority, proof available, existing URL, needed URL. | service-truth-map.csv | Core 30 input |
| GBP description draft | Draft description around true primary service identity, categories, city/area, proof, and trust. No hype or invented guarantees. | gbp-description-draft.md | approval required before save |
| GBP fields audit | Complete every applicable field: hours, holiday hours, service areas, appointment links, products/services where relevant, other boxes. | gbp-fields-checklist.md | approval for edits |
| Automated calls check | Check whether automated GBP calls are enabled and recommend disabling if source workflow calls for it. | gbp-calls-check.md | account setting |
| Review request setup | Create owner-led review process focused on specific service/location language, not generic review begging. | review-request-process.md | client-facing approval |
| GBP landing alignment plan | List title/H1/body/schema/internal-link changes needed so GBP landing page aligns with primary category, city, categories, and services. | landing-alignment-plan.md | feeds Core 30 |
| Controlled save packet | Bundle exact proposed GBP changes with before/after values and rollback notes. | gbp-change-approval-packet.md | one controlled save only after approval |
Goal: make the site mirror and support the GBP. Topical relevance comes before geographic relevance.
| Task | Exact work | Output | Gate |
|---|---|---|---|
| Structure decision | Decide single-location vs multi-location. Single-location: homepage equals GBP landing page. Multi-location: homepage separate, each location gets its own GBP landing page. | structure-decision.md | required before writing |
| GBP landing page map | Target `[GBP Primary Category] + [City]`. Title/H1 include exact-match target naturally. Add blocks for each GBP category, 50-100 words, with links to dedicated category/service pages. | gbp-landing-map.md | site edit approval |
| Category page map | Create/repair one page for each real GBP category, usually 3-5, up to 10. Target `[Category] + [City]`. | category-page-map.csv | Core 30 |
| Service page map | Create/repair individual pages for GBP services. Minimum source recommendation: 11+ service pages. Typical Core 30: 20-30 service pages where justified. | service-page-map.csv | Core 30 |
| High-priority services | Pick 2-3 critical/high-margin services to link directly from homepage and track separately. | priority-services.md | rank tracking input |
| Locations page | Create/repair locations page listing service areas or business locations. For multi-location, each location gets its own GBP landing page. | locations-page-brief.md | avoid doorway spam |
| About + Contact pages | Create/repair core trust pages with real team, proof, process, NAP, service area, and contact path. | about-contact-brief.md | trust layer |
| Core 30 Content Audit | Use homepage content, GBP categories/services, Screaming Frog Internal URLs CSV, and All Links CSV to identify missing pages and internal link gaps. | core30-content-audit.md | source workflow |
| Title/H1 gap check | For each category and service page, confirm title and H1 include `Category/Service + City` plus natural context. | title-h1-gap-log.csv | on-page QA |
| Homepage mention/link check | Confirm homepage mentions and links to each secondary category and high-priority service. | homepage-link-gap-log.csv | internal links |
| Category-to-service links | Confirm category pages link to relevant child service pages and service pages link up/across. Body links matter. Nav/footer only is not enough. | internal-link-map.csv | internal links |
| Content briefs | Create page briefs with URL, title/meta, H1, H2/H3, trust elements, FAQs, schema notes, CTA, internal links, proof needed. | page-briefs/ | fact-check required |
| Page build/repair | Build or update approved category/service/location/about/contact pages. Use real client facts and local proof. No raw AI publishing. | site changes / PR / preview | approval before live deploy |
| Schema implementation | Add/validate LocalBusiness, Organization, PostalAddress, OpeningHours, Service, FAQ, Review/AggregateRating only where valid. | schema-validation.md | no fake reviews/claims |
| Technical SEO pass | Check indexability, canonical, sitemap, robots, performance basics, mobile rendering, redirects, broken links, duplicate metadata. | technical-seo-pass.md | QA |
| Publication log | Document page publication dates and compare rank changes 2-4 weeks later. | publication-log.csv | rank review input |
Goal: after the Core 30 foundation, use rank maps and real search data to decide whether to build more topical relevance, geographic relevance, links, or page refinements.
| Task | Exact work | Output | Gate |
|---|---|---|---|
| 2-4 week rank review | Compare Local Dominator/rank-grid after Core 30 pages are published. Watch top 3 percentage, average rank, and geographic coverage. | rank-review.md | source timing |
| Weak zone diagnosis | Find grid points stuck at 4-10, 11-20, or beyond visibility. Separate proximity problems from relevance problems. | weak-zone-map.md | LD input |
| Topical support decision | If topical/service relevance is weak, build supporting content around PAA/customer questions tied to target service pages. | topical-support-plan.csv | support pages link to service pages |
| Geographic support decision | If topical relevance is strong but geography is weak, build location/landmark/neighborhood relevance around weak grid areas. | geo-support-plan.csv | avoid doorway spam |
| PAA/local forum research | Pull People Also Ask, Reddit, local forums, and customer questions for supporting content ideas. | supporting-content-ideas.csv | source workflow |
| Geo planner | Use heatmap weak areas to identify nearby landmarks/neighborhoods and generate geo-relevant content topics. | geo-planner.csv | rank-map input |
| GSC almost winners | Prioritize pages/queries positions 4-20, especially 11-20. Expand pages with missing exact-match terms, PAA FAQs, and content depth. | gsc-almost-winners.csv | data-driven |
| CTR metadata pass | Find high-impression low-CTR pages and rewrite titles/metas. | metadata-opportunities.csv | approval before writeback |
| Internal hub update | Generate or repair internal hubs for locations/supporting content to improve indexing and internal linking. | hub-plan.md | approval before live deploy |
| Link opportunity selection | Choose local/trust links: Chamber, BBB, Yelp, youth sports, local media, local orgs, events, schools, government, industry directories. | local-link-plan.md | quality > volume |
| Expansion packet | Choose 3-5 next actions tied to service, location, page/GBP asset, visibility signal, and conversion path. | seo-opportunity-map.md | TaskTracker execution packet |
Goal: make the business easier for Bing, ChatGPT/search-connected answer engines, and trusted third-party sources to understand and recommend.
| Task | Exact work | Output | Gate |
|---|---|---|---|
| Bing Places check | Verify Bing Places presence, NAP, categories, website, hours, and consistency. | bing-places-audit.md | no live changes without approval |
| Apple Maps check | Verify Apple Maps presence, NAP, website, category, and duplicate/old-location issues. | apple-maps-audit.md | approval before claim/edit |
| Major citation check | Audit Yelp, BBB, top directories, GPS/navigation, niche/local directories, and duplicate listings. | citation-audit.md | vendor-as-pipe |
| Schema enrichment | Validate local schema and add Service, FAQ, ServiceArea, Review/AggregateRating only where true and valid. | schema-enrichment-plan.md | no false schema |
| Review language audit | Check whether reviews mention services, locations, job types, outcomes, and trust markers. Create review specificity coaching if weak. | review-language-audit.md | trust signal |
| AI recommendation tests | Run neutral ChatGPT/Bing-style recommendation tests for service + city and note whether client appears, why, and who is cited instead. | ai-visibility-tests.md | document prompts |
| Unlinked mention plan | Find or create legitimate local/community/media/industry mentions that reinforce entity trust. | mention-plan.md | legit sources only |
| Authority packet | Bundle citation, schema, review, AI visibility, and mention/link actions into an approval-gated packet. | ai-visibility-authority-packet.md | approval before submits/edits |
The monthly process is not a generic checklist. It is a decision loop that turns demand, visibility, clicks, and leads into 3-5 prioritized actions.
Primary local files used for this operating doc: