Ongoing Audit: monthly + quarterly cadence, regression detection
A comprehensive reference for the recurring audit discipline performed across every managed client engagement. The ongoing audit surfaces regressions, validates new wins, and prioritizes the next…
The Canonical 2026 Reference for the Recurring SEO, AEO, AIO, and GEO Audit Cadence Across Managed Engagements
A comprehensive reference for the recurring audit discipline performed across every managed client engagement. The ongoing audit surfaces regressions, validates new wins, and prioritizes the next month of action. Distinct from framework-initialaudit.md, which specifies the one time comprehensive engagement baseline performed in the first two to four weeks of a new retainer, this document specifies the monthly, quarterly, and annual cadence that runs for the life of the engagement.
Cadence summary. Monthly audit 4 hours, quarterly 16 hours, annual 40 hours. Each layer extends the prior. The monthly audit feeds the monthly client report per framework-reporting.md. The quarterly audit feeds the quarterly strategic review. The annual audit re baselines against the initial audit deliverable.
1. Document Purpose
1.1 What This Document Is
The ongoing audit is the recurring discipline that keeps an engagement honest over months and years. The initial audit is a one time event producing a 12 page baseline. The ongoing audit runs every month, quarter, and year against that baseline. It surfaces regressions, validates wins, and prioritizes the next month of action. Without an ongoing cadence, the initial audit gradually becomes irrelevant as the site, the algorithm, and the competitive landscape evolve. This framework specifies the cadence, workflow per layer, regression and win detection protocols, algorithm update response, the always on dashboard, action prioritization, reporting integration, client communication patterns, and the self hosted Bubbles toolchain.
1.2 The Initial Audit vs the Ongoing Audit
The initial audit is performed once at engagement onset. It covers every framework, samples 50 pages, runs 16 to 80 hours, and produces a 12 page deliverable. See framework-initialaudit.md. The ongoing audit runs continuously after. Monthly 4 hours, quarterly 16 hours, annual 40 hours. Each audit produces a delta against the initial audit baseline. The annual audit re baselines. The initial audit establishes comparison points. The ongoing audit measures delta.
1.3 The Three Audit Layers
Monthly, 4 hour budget. Traffic and conversion delta vs prior month, new GSC errors, technical regression check, AI citation gain and loss across the 7 engines, top 10 winning and losing URLs, action list for the next 30 days. Output is the monthly client report.
Quarterly, 16 hour budget. Monthly plus a 25 page content quality re scoring sample, competitor delta refresh, backlink profile delta, AI surface citation share of voice recalculation, topic cluster maturity scoring, and an updated 90 day roadmap. Output is a 6 to 12 page quarterly review.
Annual, 40 hour budget. Quarterly plus a full crawl re baseline, full content inventory re scoring per framework-contentaudit.md, full schema and entity re audit, full competitor set refresh, and strategic re alignment. Output is a 50 page annual review that replaces the initial audit as the new comparison baseline.
1.4 Three Operating Modes
Mode A, Solo Practitioner. 3 to 10 clients. 12 to 40 hours per month across the portfolio. Bubbles toolchain.
Mode B, Small Team. 2 to 4 practitioners with analyst, account lead, and delivery roles. Analyst runs the monthly audit. Account lead runs the quarterly review meeting. Delivery role implements the action list. 4 hours analyst plus 1 to 2 hours account lead per client per month.
Mode C, Enterprise Agency. Multiple analysts, automated dashboards, dedicated reporting infrastructure. Monthly audit largely automated. 2 to 4 hours analyst plus 2 hours strategic plus 1 hour client meeting per client.
This framework specifies Mode A and Mode B at the workflow level. Mode C is the same workflow with more automation.
1.5 Required Tools and Access
GSC verified with 16 months of data retained, GA4 with 13 months, Bing Webmaster Tools, GBP if local, Ahrefs or Semrush active subscription, rank tracker (AccuRanker, SerpRobot, or equivalent), uptime monitor, schema validator access, the Bubbles Postgres database for trend storage, the monthly audit cron job, and the dashboard at Metabase or Grafana. Access is provisioned during the initial audit. A loss of access mid quarter is logged as an audit incident and resolved before the next monthly audit.
2. Client Variables Intake
The ongoing audit intake is short. The initial audit captured the comprehensive intake. Stored at /var/www/sites/[domain]/audit/ongoing/intake.yaml.
# ONGOING AUDIT FRAMEWORK CLIENT VARIABLES
# --- Engagement Identity ---
business_name: ""
primary_domain: ""
engagement_start_date: ""
engagement_tier: "" # tier_1, tier_2, tier_3, custom
monthly_retainer_hours: 0
initial_audit_completion_date: ""
initial_audit_deliverable_path: ""
# --- Cadence Configuration ---
monthly_audit_day_of_month: 0 # 1 to 28
monthly_audit_budget_hours: 4
quarterly_audit_day_of_quarter: 0
quarterly_audit_budget_hours: 16
annual_audit_day_of_year: 0
annual_audit_budget_hours: 40
# --- Reporting ---
monthly_report_recipient_emails: []
monthly_report_format: "" # pdf, html, markdown
quarterly_review_meeting_required: false
quarterly_review_meeting_duration_minutes: 60
annual_review_meeting_required: false
annual_review_meeting_duration_minutes: 180
# --- Regression Alert Thresholds ---
position_drop_alert_threshold: 5
traffic_drop_alert_threshold_percent: 30
aio_citation_loss_alert_threshold: 5
schema_validation_error_alert: true
# --- Win Alert Thresholds ---
new_top_3_position_alert: true
new_aio_citation_alert: true
branded_growth_alert_threshold_percent: 10
conversion_uplift_alert_threshold_percent: 15
# --- Data Refresh ---
gsc_refresh_cadence: "daily"
ga4_refresh_cadence: "daily"
ahrefs_refresh_cadence: "weekly"
rank_tracker_refresh_cadence: "daily"
aio_sampling_refresh_cadence: "weekly"
# --- Dashboard ---
dashboard_url: ""
dashboard_panels:
- organic_clicks_28d
- ai_citation_count_28d
- gbp_actions_28d
- indexed_pages
- cwv_pass_rate
- schema_pass_rate
- backlink_count
- branded_mention_volume
# --- Algorithm Update Subscriptions ---
google_search_status_subscribed: true
algoroo_alerts_subscribed: true
mozcast_alerts_subscribed: true
semrush_sensor_alerts_subscribed: true
Intake is updated when engagement variables change. The intake is the canonical configuration for the monthly cron job at Section 14.
3. Audit Cadence Framework
3.1 The Three Layer Model
Three nested layers. The monthly audit runs every calendar month. The quarterly audit replaces the third monthly audit each quarter with a deeper variant. The annual audit replaces the fourth quarterly audit each year with a comprehensive variant. In a year, 12 monthly audits run, of which 4 are quarterly variants, of which 1 is the annual variant.
3.2 Time Budget Per Layer
| Layer | Hours | Frequency | Per Year | Purpose |
|---|---|---|---|---|
| Monthly | 4 | 12 per year | 48 hours | Delta vs prior month |
| Quarterly | 16 | 4 per year | 64 hours | Strategic re scoring |
| Annual | 40 | 1 per year | 40 hours | Full re baseline |
Total 152 audit hours per client per year. At a Tier 2 retainer of 20 hours per month, the audit consumes 63 percent of retainer time. At Tier 3 (40 hours per month), 32 percent.
3.3 The Cadence Calendar
For a January 1 start, the calendar runs February 1, March 1, April 1 (quarterly Q1), May 1, June 1, July 1 (quarterly Q2), August 1, September 1, October 1 (quarterly Q3), November 1, December 1, January 1 (annual). The calendar is locked at engagement onset and respected by the cron job. A missed audit is logged and run within 7 calendar days. Two consecutive misses trigger an internal engagement review.
3.4 The Source of Truth Principle
The baseline is the initial audit deliverable from framework-initialaudit.md Section 13. Every monthly audit produces a row in the Postgres trend table referencing the baseline. The quarterly audit aggregates 3 months. The annual audit aggregates 12 months and produces a new baseline.
3.5 What Each Layer Adds
Monthly: delta tracking, regression alerts, win alerts, and an updated 30 day action list.
Quarterly: deep content re scoring on 25 pages, competitor delta refresh, backlink profile delta, AI citation share of voice recalculation, topic cluster maturity scoring, and an updated 90 day roadmap.
Annual: full crawl re baseline, full content inventory re scoring per framework-contentaudit.md, full schema and entity re audit per framework-initialaudit.md Section 7, full competitor set refresh per framework-competitoraudit.md, full strategic re alignment, and a 50 page PDF.
4. Monthly Audit Workflow
The monthly audit consumes 4 hours and runs on the calendar day specified at intake. The workflow is 8 steps. Each step produces output stored under /home/user/clients/[clientname]/audits/monthly/[YYYY-MM]/.
4.1 Step 1: Pull GSC, GA4, and GBP Delta vs Prior Month (30 min)
The script at /home/user/audits/scripts/monthly-pull.py fetches the prior month from GSC (Performance, Coverage, Enhancements, Sitemaps, Manual actions, Security issues), GA4 (acquisition, engagement, conversions, landing pages), and GBP (insights, queries, photo views, actions). See framework-gscanalysis.md.
python3 /home/user/audits/scripts/monthly-pull.py \
--domain [domain] --month [YYYY-MM] \
--out /home/user/clients/[clientname]/audits/monthly/[YYYY-MM]/data/
The summary JSON includes month over month change on organic sessions, organic non brand sessions, organic conversions, GSC clicks, GSC impressions, GSC average position, GBP profile views, GBP actions, indexed page count.
4.2 Step 2: Surface AI Citation Gains and Losses Across 7 Engines (30 min)
The script at /home/user/audits/scripts/aio-monthly.py runs the priority query set (10 commercial plus 10 informational) across Google AI Overviews, Google AI Mode, ChatGPT, Perplexity, Gemini, Claude, and Microsoft Copilot. Outputs a 20 by 7 matrix with cells marked gained, lost, or stable.
A loss of 5 or more AIO citations triggers a regression alert per Section 7.3. A gain of 1 or more triggers a win alert per Section 8.2. See framework-aioverviews.md, framework-aicitations.md, and framework-multiengine-tradeoffs.md.
4.3 Step 3: Check Core Web Vitals Regression (15 min)
The script at /home/user/audits/scripts/cwv-monthly.py pulls GSC Page Experience and the Chrome User Experience Report. LCP, INP, and CLS pass rates segmented by device class. A drop of more than 5 percentage points triggers a regression alert. A drop of more than 10 points is severity 1.
4.4 Step 4: Check Indexability Regression (30 min)
The script at /home/user/audits/scripts/indexability-monthly.py pulls the current GSC Coverage report and computes the drift metric from framework-initialaudit.md Section 5.2. A drift increase of 5 points triggers a regression alert. A new spike in Crawled not indexed or Discovered not indexed is flagged. The three circle Venn is re run.
4.5 Step 5: Check Schema Validation Regression (20 min)
The script at /home/user/audits/scripts/schema-monthly.py samples 20 priority page templates and runs Rich Results Test plus Schema.org Validator. The GSC Enhancements report is pulled and errors counted per enhancement type. The script re tests Organization, WebSite, and Person schemas on priority pages, verifies the sameAs network resolves, and confirms the Knowledge Graph entity still answers from the KG API. See framework-schema.md.
4.6 Step 6: Surface Top 10 Winning and Top 10 Losing URLs (30 min)
The script at /home/user/audits/scripts/urldelta-monthly.py ranks every URL by month over month traffic delta. Top 10 winners and top 10 losers are extracted, each annotated with prior month sessions, current sessions, percentage change, primary query, prior and current average position, citation status in AIO. Winners feed Section 8. Losers feed Section 7.
4.7 Step 7: Generate Action List for the Next 30 Days (60 min)
The analyst reviews regression alerts, win alerts, top winners and losers, and new findings, then produces a prioritized action list of 5 to 15 items per Section 11. Stored at /home/user/clients/[clientname]/audits/monthly/[YYYY-MM]/actions.md. Each action has a title, description, expected impact, confidence, effort estimate, framework cross reference, and owner. Items not completed roll over. Items rolled over twice are escalated as engagement risks.
4.8 Step 8: Write the Monthly Report (65 min)
Generated from /home/user/audits/templates/monthly-report.md. The template includes the executive summary (3 paragraphs), KPI dashboard with deltas, regression and win alerts, top 10 winners and losers, the action list, and a closing strategic paragraph. Rendered to PDF via Pandoc per Section 14 and emailed to the recipient list. Stored at /var/www/sites/[domain]/audit/ongoing/monthly/[YYYY-MM]/report.pdf. See framework-reporting.md.
4.9 Monthly Audit Output Manifest
Every monthly audit produces a manifest at /home/user/clients/[clientname]/audits/monthly/[YYYY-MM]/manifest.md listing every pulled data source, every script run, every output file, and the sha256 checksum per output. The manifest is the chain of custody and the input the quarterly audit consumes.
5. Quarterly Audit Workflow
The quarterly audit consumes 16 hours and runs on the first business day after a quarter closes. The workflow is the monthly workflow (8 steps, 4 hours) plus 6 additional steps (12 hours).
5.1 Step 9: Sample 25 Pages for Content Quality Re Scoring (4 hr)
Re scores 25 pages against the HCS, E-E-A-T, and Information Gain rubrics from framework-contentaudit.md. Stratified: 5 pages each from the top, second, median, and bottom traffic deciles, plus 5 pages flagged in monthly losers from any past 3 months.
Each page is scored 0 to 5 on each HCS signal (12), 0 to 5 on each E-E-A-T dimension (12), present or absent on each Information Gain category (10). The mean is compared to the initial audit baseline and prior quarter. A drop of 10 points in HCS or E-E-A-T mean is a regression alert. Individual pages with substantial drops are flagged for refresh per framework-contentaudit.md Section 8.
5.2 Step 10: Competitor Delta Refresh (3 hr)
The competitor set from the initial audit (3 to 5 competitors per framework-initialaudit.md Section 11) is re audited per framework-competitoraudit.md Section 3. For each competitor: referring domain count delta, top ranking keywords delta, top traffic pages delta, content publishing volume, AI citation count delta, schema deployment changes detected via Wayback Machine. Patterns flagged: a competitor growing referring domains 25 percent or more, launching content matching client's priority topics, or appearing in AIO on 3 or more priority queries where the client is absent.
5.3 Step 11: Backlink Profile Delta (2 hr)
Ahrefs or Semrush API queried for the prior 90 days. Output: new referring domains acquired (with DR and topical relevance), lost referring domains (with reason classified per framework-initialaudit.md Section 8.8), and anchor text distribution delta. A net gain of 10 or more high quality referring domains (DR 30 plus, topical match) is a quarterly win pattern. A net loss of 5 is a regression flag. A spike in low quality domains triggers a toxic link investigation per framework-initialaudit.md Section 8.4. See framework-linkbuilding.md for acquisition strategies and lost link recovery.
5.4 Step 12: AI Surface Citation Share of Voice Recalculation (2 hr)
The quarterly audit re samples 50 queries (10 commercial, 10 informational, 30 supplementary) across the 7 engines per the initial audit Section 10 methodology. Output: a 50 by 7 citation matrix.
Share of Voice (engine) = client citations / total citations on query set
A share of voice gain of 5 points on any engine is a win pattern. A loss of 5 points is a regression. The competitor citation overlap is recomputed. Green field queries (no competitor cited) are flagged as opportunities.
5.5 Step 13: Update Topic Cluster Maturity Scoring (1 hr)
Topic clusters are re scored on pillar page presence and quality, supporting page count, internal link density, average position across the cluster, AI citation count, backlink count. Each cluster scores 0 to 5 per dimension. 4 or higher on every dimension is mature. 2 or lower on 3 or more is immature and a candidate for further investment or strategic deprecation. Output: a table with cluster name, prior quarter score, current score, and a recommendation column driving the next quarter's content production roadmap.
5.6 Step 14: Update the 90 Day Roadmap (2 hr)
The 90 day roadmap from the initial audit is updated. Completed items marked complete. Rolled over items re prioritized. New items from this quarter's findings added. Deprioritized items documented with rationale. The updated roadmap drives the next quarter's monthly action lists and is the agenda for the quarterly review meeting.
5.7 The Quarterly Deliverable
A 6 to 12 page PDF rendered via Pandoc. Page 1 executive summary, page 2 KPI dashboard with quarterly deltas, pages 3 to 4 content re scoring summary, pages 5 to 6 competitor delta and backlink delta, pages 7 to 8 AI surface delta and topic cluster maturity, pages 9 to 10 updated 90 day roadmap, pages 11 to 12 strategic narrative and quarter ahead priorities. Stored at /var/www/sites/[domain]/audit/ongoing/quarterly/[YYYY-Q#]/review.pdf. The quarterly review meeting walks through the deliverable per Section 13.5.
6. Annual Audit Workflow
The annual audit consumes 40 hours. It includes the quarterly workflow (16 hours) plus 5 additional steps (24 hours) that re baseline the engagement.
6.1 The Annual Re Baseline Principle
The annual audit replaces the initial audit deliverable as the new comparison baseline. After completion, every subsequent monthly audit measures delta against the annual baseline. The initial audit deliverable is archived. A 5 year engagement has 5 baselines. Trends across multiple baselines reveal strategic movement at a horizon longer than any monthly or quarterly audit captures.
6.2 Step 15: Full Crawl Re Baseline (6 hr)
The annual audit runs the full Screaming Frog and Sitebulb crawls from framework-initialaudit.md Section 4. Configuration identical to initial. Output under /mnt/storage/audits/[domain]/annual/[YYYY]/crawls/. Compared to prior year for total URL count growth or shrinkage, depth distribution changes, internal link graph evolution, template proliferation or consolidation, JavaScript rendering dependency changes.
6.3 Step 16: Full Content Inventory Re Scoring (8 hr)
A 100 page sample is scored against HCS, E-E-A-T, and Information Gain per framework-contentaudit.md. Stratified by traffic decile (10 pages per decile). The 100 page distribution is compared to the initial 50 page distribution. Output: a content health score on a 0 to 100 scale, the distribution histogram, top 20 highest scoring pages (citation pool), bottom 20 lowest scoring pages (refresh and removal pool).
6.4 Step 17: Full Schema and Entity Re Audit (3 hr)
The schema and entity audit from framework-initialaudit.md Section 7 is re run. Type coverage map, three pass rates, sameAs completeness, Wikidata status, Knowledge Graph entity presence. Compared to initial baseline.
6.5 Step 18: Full Competitor Set Refresh (4 hr)
The competitor set is re evaluated. Per framework-competitoraudit.md, the 3 to 5 competitors are confirmed or replaced based on current SERP composition, Ahrefs competing domains, and client business landscape changes. A removed competitor is documented with rationale. A new competitor gets a light audit. The refreshed set becomes the comparison set for next year's quarterly deltas.
6.6 Step 19: Strategic Re Alignment with Client Business Goals (3 hr)
A strategic conversation with the client about the year ahead. The conversation covers business priorities, market and competitive landscape changes, product or service changes, geographic expansion or contraction, team and budget changes, technology stack changes. Output: a written strategic alignment memo at /var/www/sites/[domain]/audit/ongoing/annual/[YYYY]/alignment.md.
6.7 The Annual Deliverable
A 40 to 50 page PDF. Pages 1 to 2 executive summary and year in review, 3 to 6 KPI dashboard with full year trends, 7 to 12 content health re scoring with the 100 page distribution, 13 to 18 schema and entity re audit, 19 to 24 competitor refresh, 25 to 30 AI surface full year analysis, 31 to 34 backlink full year analysis, 35 to 38 technical SEO full year analysis, 39 to 42 strategic alignment memo and next year priorities, 43 to 46 updated 12 month roadmap, 47 to 50 appendices. Stored at /var/www/sites/[domain]/audit/ongoing/annual/[YYYY]/review.pdf and presented in a 180 minute annual review meeting per Section 13.6.
7. Regression Detection Protocols
Regression detection catches problems before they become emergencies. Every monthly audit runs the protocols. A regression alert triggers a 7 day diagnostic window during which the cause is identified and a remediation plan is produced.
7.1 The Page Level Position Drop Alert
Trigger: a page drops 5 or more positions for its primary query month over month. The primary query is the query with the most impressions from the prior month's GSC export.
Diagnostic: pull the page's content, schema, internal and external links. Run URL Inspection. Check content changes (Wayback Machine diff), schema validation errors, lost backlinks, competitor SERP changes, AIO citation changes, algorithm update correlation.
Severity: a single page is severity 3. A pattern of 5 or more pages dropping for related queries is severity 1. A pattern indicating algorithm impact triggers Section 9. Remediation depends on cause. Content quality drop responds to refresh per framework-contentaudit.md Section 8. Technical regression per framework-technicalseo.md. Schema regression per framework-schema.md. Backlink loss per framework-linkbuilding.md Section 8.
7.2 The URL Level Traffic Drop Alert
Trigger: a URL loses 30 percent or more of month over month organic traffic.
Diagnostic: the position drop diagnostic plus bounce rate, engagement rate, conversion rate, and seasonality check (same month prior year). A URL that lost traffic because the query lost search volume is a different remediation path than a URL that lost ranking. Severity: a non priority URL is severity 3. A priority URL (top 20 traffic from initial audit) is severity 2. A homepage or category page is severity 1.
7.3 The AI Citation Loss Alert
Trigger: the client loses citation in 5 or more AI Overview queries month over month.
Diagnostic: pull the AIO results for lost queries. Identify which competitor is cited in the client's place. Compare on dimensions AIO synthesis uses per framework-aioverviews.md: substrate (first byte content), schema completeness, entity authority, Information Gain. Common loss patterns: client page lost content freshness, competitor deployed new schema, competitor earned new external citations, AIO model rebalanced toward newer sources.
Remediation: content freshness loss responds to refresh. Substrate failure responds to the fix per framework-aioverviews.md Section 6.9. Entity authority loss responds to framework-aicitations.md and the sameAs network from framework-schema.md.
7.4 The Schema Validation Error Alert
Trigger: the GSC Enhancements report shows a new error category, or the Section 4.5 schema validation script shows a pass rate drop of 10 percentage points or more.
Diagnostic: identify affected pages and the specific error. Common errors: missing required property, invalid value type, malformed JSON, deprecated property, contradicting properties. Severity: errors on homepage or category templates are severity 1. Widespread errors on article templates are severity 2. Isolated errors are severity 3. Single page errors are severity 4. Remediation per framework-schema.md.
7.5 The Sitewide Traffic Drop Alert
Trigger: organic sessions drop 20 percent or more at the site level.
Diagnostic in investigation order: a manual action (check GSC immediately), an algorithm update (Section 9), a technical regression (robots.txt change, sitemap removal, mass deindexation, server outage), a tracking break (GA4 misconfigured, GSC verification lost), a seasonality artifact. Severity: always 1 critical. Top priority until cause identified and recovery trajectory established.
7.6 The Indexability Drift Alert
Trigger: the drift metric from framework-initialaudit.md Section 5.2 increases 5 percentage points or more.
Diagnostic: the three circle Venn from the initial audit is re run. New A only URLs indicate orphaned content. New B only URLs indicate stale sitemap. New C only URLs indicate phantom indexed pages. New excluded URLs in GSC Coverage indicate quality or technical exclusion. Remediation per the initial audit Section 5.7.
7.7 The Backlink Profile Regression Alert
Trigger: referring domain count drops 5 or more high quality referring domains, or the toxic link percentage increases 5 percentage points.
Diagnostic: pull lost referring domains from Ahrefs. Classify each per framework-initialaudit.md Section 8.8. Pull new low quality domains. Investigate the source pattern. Remediation: outreach to recover lost links. Disavow new toxic links only after manual review confirms harm per framework-initialaudit.md Section 8.4.
7.8 Regression Alert Documentation
Every alert is documented at /home/user/clients/[clientname]/audits/monthly/[YYYY-MM]/alerts/[alertid].md. The file includes trigger, diagnostic findings, severity, remediation plan, owner, expected resolution date, and framework section guiding remediation. Alerts are included in the monthly report. Open alerts are tracked across months in the Postgres alerts table. Alerts open longer than 60 days are escalated as engagement risks.
8. Win Detection Protocols
Wins are the evidence the engagement is producing returns. Wins drive the monthly report's narrative and the client's renewal decision.
8.1 The New Winning Page Pattern
Trigger: a page moves to position 1, 2, or 3 for any query in the priority query set for the first time, or for any query receiving more than 100 impressions per month. Recorded with URL, query, new position, prior month impressions and clicks, projected impressions and clicks at the new position, and the framework cross reference to the content or technical work that produced the win. A new top 3 position is one of the strongest wins to surface in the monthly report.
8.2 The New AI Overview Citation Win
Trigger: the client appears in a new AIO citation for a query the prior month did not show citation. Recorded with the query, URL cited, citation context, citation position, competing URLs cited, and cross reference to AIO patterns from framework-aioverviews.md. AIO citation wins compound. A page cited in AIO is substrate Perplexity, Gemini, Claude, and Copilot also draw from. A new AIO citation commonly produces citations on the same query in 2 to 4 other engines within 30 days.
8.3 The Branded Search Growth Pattern
Trigger: branded search volume grows 10 percent month over month, or 25 percent quarter over quarter. Recorded with baseline, new volume, growth percentage, queries driving growth (branded plus modifier patterns like "brand reviews", "brand pricing", "brand alternatives"), and the suspected cause if attributable. Branded growth is the lagging indicator of brand building work. It validates the framework-linkbuilding.md digital PR investment and the Wikipedia, Wikidata, and Knowledge Graph work from framework-schema.md.
8.4 The Conversion Uplift Pattern
Trigger: organic conversions grow 15 percent month over month, or 30 percent quarter over quarter, with corresponding traffic increase. Recorded with prior baseline, new count, growth percentage, conversion rate change, conversion paths involved (per framework-attribution.md), and the framework cross reference to the work that drove the uplift. Conversion uplift justifies the engagement's revenue impact. Conversions drive renewal conversations.
8.5 The Backlink Acquisition Win
Trigger: a new referring domain at DR 50 or higher, or 10 or more new referring domains at DR 30 or higher in a single month. Recorded with the referring domains, linking pages, anchor text, topical relevance, and suspected cause. A new DR 70 link from an editorial source typically lifts the linked page within 30 days and supports cluster wide improvements over 90 days.
8.6 The Schema or Entity Win
Trigger: a Knowledge Graph entity appears, a new Wikidata QID is created and accepted, a new sameAs network connection resolves, or a new rich result type appears in GSC Enhancements. Schema and entity wins are the substrate of AIO and AI engine citation. They unlock downstream AI citation wins over 90 to 180 days.
8.7 The Algorithm Update Win
Trigger: a Google core update completes and the client's overall organic traffic shows positive movement of 10 percent or more vs the pre update baseline. Recorded with update name and date range, pre update baseline, post update level, queries and pages that moved, and the framework cross reference per framework-coreupdates.md. Algorithm update wins demonstrate structural resilience.
8.8 Win Documentation and Reporting
Every win is documented at /home/user/clients/[clientname]/audits/monthly/[YYYY-MM]/wins/[winid].md. The file includes trigger, evidence, framework cross reference, and a one paragraph narrative for the monthly report. Wins are aggregated across months. A pattern repeating across 3 or more months indicates the engagement has installed durable work. The aggregation is the evidence base for quarterly and annual reviews.
9. Algorithm Update Response
Google releases core updates approximately quarterly. Spam updates, AIO model updates, SearchGPT updates, and Perplexity model swaps run at different cadences. The ongoing audit includes a documented response workflow for each.
9.1 The Subscription Layer
The audit subscribes to Google Search Status dashboard alerts, Algoroo daily volatility alerts, Mozcast daily alerts, Semrush Sensor weekly alerts, Search Engine Journal and Search Engine Land update tracking, the Aleyda Solis newsletter, and the X account of Danny Sullivan.
Subscriptions feed a triage inbox at /home/user/clients/[clientname]/audits/algorithm-monitoring/. The analyst reviews at the start of every workday.
9.2 The 7 Day Rapid Response Workflow
When a confirmed core update or major model change rolls out, the rapid response runs across 7 calendar days.
Day 1, detection. Confirm via Google Search Status or Semrush Sensor. Note start date and scope. Portfolio screening: pull the prior 24 hours of GSC clicks per client, flag any client with a 15 percent or greater swing.
Day 2, impact assessment per client. Pull the prior 7 days of GSC clicks vs the 7 days before. Identify top 10 winning and losing queries and pages.
Day 3, hypothesis formation. Common patterns: content quality bias (low Information Gain content dropping), entity authority bias (less established brands losing), substrate bias (JavaScript heavy pages losing to HTML first), schema bias, AIO citation rebalancing.
Days 4 to 5, do nothing. The window is intentional observation. Google's guidance: "Don't make panic changes." The pattern at Day 7 will differ from Day 3.
Day 6, refined hypothesis. Re run the Day 2 assessment.
Day 7, written rapid response report. A 2 to 3 page report per client: update name and dates, observed impact, refined hypothesis, recommended remediation, expected timeline. Emailed to the client and stored at /var/www/sites/[domain]/audit/ongoing/algorithm-updates/[YYYY-MM-update-name]/rapid-response.pdf.
9.3 The 30 Day Measured Response Workflow
Days 8 to 14, remediation deployment per framework cross references: content quality improvements, schema repairs, substrate fixes, entity authority work, internal link adjustments.
Days 15 to 21, observation. Deployed changes need time to be crawled. No further changes unless a regression alert triggers.
Days 22 to 30, mid update review. Run the monthly audit's regression and win protocols against affected pages. The review identifies whether remediation is working, whether more is needed, or whether the loss is structural.
Day 30, written measured response report. A 3 to 5 page report covering rapid response summary, remediation deployed, mid update observed impact, refined strategic recommendation.
9.4 The 90 Day Recovery Tracking
Google has documented that core update recoveries take 60 to 90 days minimum. Some take longer or never complete. Recovery tracking continues via the standard monthly cadence. Each monthly audit during the recovery window includes a dedicated section: pre update baseline, observed impact, remediation deployed, current state, projected recovery date. See framework-coreupdates.md for the comprehensive playbook.
9.5 AI Overview Model Changes
Google's AIO model receives periodic updates, usually unannounced. Weekly AIO sampling per Section 4.2 surfaces shifts within 1 to 2 weeks. A pattern of 10 or more queries losing client citation simultaneously without a parallel pattern in classic SERP positions indicates an AIO model rebalancing rather than a content or technical regression. Response: do not change classic SEO work. Remediation is upstream AIO citation work per framework-aioverviews.md and framework-aicitations.md.
9.6 SearchGPT, Perplexity, and Gemini Model Swaps
OpenAI's SearchGPT and the OAI-SearchBot crawler run on a model release cadence approximately every 3 to 6 months. Perplexity model swaps run every 4 to 8 weeks across Sonar Pro, Llama, GPT-4, and Claude variants. Gemini updates run every 8 to 12 weeks. Each swap can rebalance citation patterns. The weekly AIO sampling surfaces shifts. The 7 day rapid response and 30 day measured response workflows apply. See framework-multiengine-tradeoffs.md.
10. Health Check Dashboard
The health check dashboard is the always on view of every engagement at any moment. The dashboard runs on Bubbles via Metabase or Grafana and is accessible to the audit team via LAN or Tailscale.
10.1 The 8 Panel Dashboard
Per client:
- Organic clicks rolling 28 day total (GSC). Headline traffic metric.
- AI citation count rolling 28 day across the 7 engines. AI surface metric.
- GBP calls, directions, and website clicks rolling 28 day (local clients). Local action metric.
- Indexed page count (GSC Coverage). Indexability metric.
- Core Web Vitals pass rate (GSC Page Experience). Performance metric.
- Schema validation pass rate (Section 4.5 monthly sample). Structured data metric.
- Backlink count (Ahrefs referring domains). Authority metric.
- Branded mention volume (Google Alerts, Mention, Brand24). Brand metric.
Each panel shows current value, 28 day delta, 90 day delta, and a sparkline of the trailing 12 weeks.
10.2 The Multi Client Overview
A separate view shows all clients in a single grid. Each row is a client. Each column is a panel value with delta. The overview enables the analyst to scan the entire portfolio in 30 seconds. It is the first thing the analyst opens each morning. Anomalies are flagged for the regular monthly audit window or immediate investigation if severe.
10.3 Dashboard Refresh Cadence
Defaults: organic clicks daily, AI citation count weekly, GBP actions daily, indexed page count daily, CWV pass rate weekly, schema validation pass rate monthly, backlink count weekly, branded mention volume daily. The refresh runs via cron jobs on Bubbles that pull from each data source, write to Postgres, and trigger Metabase or Grafana cache invalidation.
10.4 Dashboard Alert Integration
The dashboard is the visual layer. The alert layer runs underneath via Section 7 regression protocols. Alerts are surfaced on the dashboard as red badges per panel per client. Clicking a badge opens the alert details and remediation plan.
10.5 Dashboard Hosting Architecture
The dashboard runs on Bubbles at /var/www/sites/dashboard.[domain]/ proxied to Metabase or Grafana on a non public port. Access via Tailscale and HTTP basic auth. No third party CDN or proxy in the path. Client data does not transit external infrastructure. For clients who request dashboard access, a per client view is exposed at a long random URL on the same Bubbles host. Read only and limited to the client's data.
10.6 Dashboard Maintenance Cadence
Weekly: Metabase or Grafana version updates, Postgres VACUUM, cron job health check. Monthly: panel configuration review per client. Quarterly: full dashboard rebuild test pass against a known data set. Annually: dashboard architecture review.
11. Action Prioritization
Every audit ends with an action list. The discipline of prioritization keeps the engagement focused. Without prioritization, the action list becomes a wishlist and the next month consumes hours on low impact work.
11.1 The Expected Impact, Confidence, Effort Model
Each action is scored on three dimensions.
Expected impact, 1 to 10. Effect on the primary KPI if the action succeeds. A homepage schema repair affecting site wide citation eligibility might score 9. A single blog post refresh might score 3.
Confidence, 0.1 to 1.0. Probability the action produces the expected impact. A well documented fix per a framework section might score 0.9. A speculative content angle might score 0.3.
Effort, 1 to 40. Hours required.
Priority Score = Expected Impact * Confidence / Effort
Above 1.0 is high priority. 0.3 to 1.0 is medium. Below 0.3 is low and typically deprioritized unless it gates other work.
11.2 The RICE Adaptation for SEO
The model is RICE adapted for SEO. The classic RICE is Reach times Impact times Confidence divided by Effort. For SEO, Reach is implicit in Expected Impact. Where Reach is meaningfully different from Impact (e.g., a fix affecting 100 pages vs 10), the analyst documents Reach explicitly and adjusts Expected Impact accordingly.
11.3 The Do Not Exceed 5 Initiatives Rule
The action list contains at most 5 active initiatives per month. An initiative is a multi step body of work consuming more than 4 hours. The rule prevents the engagement from spreading across too many concurrent threads. Additional items are tactical actions under 4 hours each. If 6 or more initiatives appear in prioritization, the analyst sequences them. The top 5 by priority score run this month. The remainder roll to next month or quarter.
11.4 The 4 Phase Initiative Lifecycle
Phase 1, scoping. Initiative defined with a deliverable, owner, and target date. 5 to 10 percent of hours. Phase 2, execution. The implementation work. 70 to 80 percent. Phase 3, deployment. Change goes live, monitoring set up, change documented. 10 to 15 percent. Phase 4, validation. Expected impact measured. Initiative closed with a written validation note. 5 to 10 percent.
Phase 4 is often skipped. The skip is a long term liability. Without validation, the engagement cannot learn whether its actions produced expected outcomes, and the prioritization model becomes uncalibrated.
11.5 The Rollover Discipline
An action that does not complete rolls to the next month with a documented reason. An action that rolls 2 consecutive months is escalated: deprioritized formally, reframed (scope, owner, or approach changes), or converted to an initiative warranting more dedicated time.
11.6 Cross Reference to Framework Sections
Every action references the framework section that prescribes the remediation. Content quality actions reference framework-contentaudit.md. Schema actions reference framework-schema.md. Technical actions reference framework-technicalseo.md. Link actions reference framework-linkbuilding.md. AI surface actions reference framework-aioverviews.md or framework-aicitations.md. The cross references make the action self documenting.
11.7 Action List Storage and Versioning
Each monthly action list is stored at /home/user/clients/[clientname]/audits/monthly/[YYYY-MM]/actions.md. Versioned in git under the client's audit repo. Changes are committed with a one line message. Every owner change and priority adjustment is logged.
12. Reporting Integration
The monthly audit feeds the monthly report. The quarterly audit feeds the quarterly review. The annual audit feeds the annual review. The reporting integration is the link between internal audit work and external client communication.
12.1 The Monthly Report Pipeline
The template at /home/user/audits/templates/monthly-report.md is populated from the audit output.
- Monthly audit Steps 1 through 7 produce data and the action list.
- Step 8 populates the template.
- Pandoc renders to PDF.
- The PDF is emailed to the recipient list per intake.
- The PDF is archived at
/var/www/sites/[domain]/audit/ongoing/monthly/[YYYY-MM]/report.pdf.
The pipeline runs as a cron job triggered by audit completion. The cron job verifies every output exists, validates the template renders without errors, and sends the email after both verifications pass.
12.2 Cross Reference to the Reporting Framework
See framework-reporting.md for the comprehensive reporting methodology including report structure, voice and tone conventions, visual design, email cadence, and client meeting choreography. This framework focuses on the audit side. The reporting framework focuses on the communication side.
12.3 The Quarterly Review Pipeline
- Quarterly audit Steps 1 through 14 produce data and the updated 90 day roadmap.
- The quarterly review template at
/home/user/audits/templates/quarterly-review.mdis populated. - Pandoc renders the PDF.
- Shared with the client 48 hours before the meeting.
- The 60 minute meeting walks through the deliverable.
- Meeting notes are added and the final version is archived.
The 48 hour pre review window gives the client time to read in advance. The meeting is a working conversation rather than a presentation.
12.4 The Annual Review Pipeline
- Annual audit Steps 1 through 19 produce data, the new baseline, and the strategic alignment memo.
- The annual review template at
/home/user/audits/templates/annual-review.mdis populated. - Pandoc renders the 50 page PDF.
- Shared with the client 1 week before the meeting.
- The 180 minute meeting walks through the deliverable.
- The strategic alignment memo is finalized post meeting and circulated as the year ahead engagement charter.
The annual review is the engagement's renewal moment.
12.5 The Reporting Cadence Calendar
Monthly report within 5 business days of prior month close. Quarterly review within 10 business days. Annual review within 15. A delayed report is an incident logged at /home/user/clients/[clientname]/incidents/report-delay-[YYYY-MM-DD].md.
12.6 Report Quality Standards
No spelling or grammar errors. No broken framework cross references. No outdated KPIs. No charts mislabeled. No claims unsupported by data. A report failing the quality bar is held back until corrected. The 5 business day delivery window includes a 1 business day quality review buffer.
12.7 Informal Communication Between Reports
The monthly report is the formal artifact. Informal communication continues across the month via the channel specified at intake (Slack, email thread, weekly check in call). Informal surfaces tactical questions and time sensitive issues. Formal consolidates the picture and drives the action list. The two channels do not duplicate each other.
13. Client Communication of Audit Findings
The audit produces findings. The findings are not the same as actions. Findings are observations about the state of the site. Actions are decisions about what to do about the findings. The distinction is load bearing for client communication.
13.1 The Finding vs Action Distinction
A finding is an observed fact. "23 of 30 sampled YMYL pages lack credentialed reviewer credit." Described in the report as evidence. An action is a decision. "Deploy credentialed reviewer credit on the 23 pages, estimated 16 hours, completion target end of next month." Described as a commitment. Reports include both. The finding establishes rationale. The action establishes response. A report with findings but no actions is alarming. A report with actions but no findings is unsupported.
13.2 Writing Findings Without Alarming the Client
The audit surfaces many findings on any site. Most are not emergencies. The writing voice is calm, specific, and proportionate.
Avoid: "Your site has serious issues with schema." Prefer: "Schema validation pass rate is 67 percent vs the 95 percent target. The variance is driven by missing properties on the product template. Remediation plan: Section 11."
Avoid: "Your site is being penalized by Google." Prefer: "Organic traffic dropped 18 percent vs the prior month. The drop correlates with the March core update. Expected recovery window 60 to 90 days." The voice is specific about magnitude, cause if known, and remediation. Not alarmist about the implication.
13.3 Escalating Genuine Emergencies
Some findings are emergencies. A manual action received, a complete site outage, a security breach detected, a mass deindexation event. Emergency communication does not wait for the monthly report. It runs through the emergency channel specified at intake (typically a phone call to the client's primary contact within 1 hour of detection). A short written summary follows within 4 hours documenting the event, the immediate response, and next steps. The emergency is then folded into the next monthly report as a documented incident with timeline and resolution.
13.4 The Weekly Status Update Pattern
Between monthly reports, the engagement maintains a weekly status update. A short written update emailed every Friday covering actions completed, actions in progress, blockers or open questions, anything material. 5 to 10 lines. Not a report. A check in. The pattern keeps the relationship warm and prevents the client from being surprised by anything in the monthly report.
13.5 The Quarterly Review Meeting Pattern
The quarterly review meeting is 60 minutes with a fixed agenda: 5 min greeting and meeting frame, 10 min prior quarter summary, 15 min KPI dashboard walkthrough, 15 min top wins and key learnings, 10 min top open items and risks, 5 min upcoming quarter priorities and questions. Conducted via video call with the deliverable PDF shared on screen. The analyst leads. The client asks questions and surfaces business context.
13.6 The Annual Review Meeting Pattern
The annual review is 180 minutes, typically split across 2 sessions of 90 minutes. Session 1 covers the prior year retrospective: metrics, wins, regressions, strategic shifts. Session 2 covers the year ahead: strategic alignment, priorities, budget, renewal. The annual review is the engagement's most consequential moment of the year. The deliverable is shared a full week in advance. The analyst pre meets with the client's primary contact 48 hours before to align on the conversation.
13.7 The Difficult Conversation Protocol
Some conversations are difficult. The engagement is not producing expected results, the client's expectations exceed budget, a regression is more severe than initial communication conveyed, a strategic shift is needed mid year. The protocol: schedule a dedicated meeting outside the regular cadence. Send a written summary of the issue and proposed framing 24 hours before. Lead with data, not conclusion. Acknowledge the situation directly. Propose specific paths forward with tradeoffs articulated. Close with alignment on next steps. Avoiding the conversation accumulates engagement debt.
13.8 The Communication Archive
Every client communication is archived. Emails are stored in a per client mail archive. Meeting recordings (where consented) are stored in the per client video archive at /home/user/clients/[clientname]/communication/. The archive is institutional memory, protection against losing context when team members change, evidence base if a contract dispute arises, and the foundation for the annual review's retrospective narrative.
14. Bubbles-Hosted Ongoing Audit Toolchain
The toolchain runs on the Bubbles self hosted server at IP 169.155.162.118 with no third party CDN or proxy in the path. Audit data is sensitive client information.
14.1 Bubbles Server Profile
Debian amd64 with 16 GB RAM. LAN at 192.168.1.132 and 192.168.1.173. Tailscale at 100.90.97.104. Public at 169.155.162.118. SSH from M2 via Tailscale (ssh user@bubbles). Python 3.13. Postgres 16 for trend storage. Metabase on port 3000 reverse proxied via nginx.
nginx vhosts under /var/www/ and /var/www/sites/. Audit deliverables under /var/www/sites/[domain]/audit/. Audit working files under /home/user/clients/[clientname]/audits/. Dashboard configuration under /home/user/dashboards/[clientname]/.
14.2 The Monthly Audit Cron Job
# Monthly audit pipeline, runs at 06:00 on day 1 of every month
0 6 1 * * /home/user/audits/scripts/monthly-cron.sh
The cron script iterates every active client in the engagement registry at /home/user/clients/registry.yaml, runs the 8 step monthly audit per client, and produces the monthly report PDF. Each client's audit consumes 4 hours of analyst time after the cron completes the data pull and initial analysis.
Logs to /var/log/audit/monthly-cron.log. Errors trigger a Gmail SMTP alert. Successful completion triggers a Gmail SMTP summary email listing every client and audit completion status.
14.3 The Postgres Trend Database
The trend database stores every monthly KPI for every client.
CREATE TABLE monthly_kpis (
client_id TEXT NOT NULL,
month_start DATE NOT NULL,
kpi_name TEXT NOT NULL,
kpi_value NUMERIC,
data_source TEXT,
retrieved_at TIMESTAMP DEFAULT NOW(),
PRIMARY KEY (client_id, month_start, kpi_name)
);
CREATE TABLE alerts (
alert_id SERIAL PRIMARY KEY,
client_id TEXT NOT NULL,
alert_type TEXT NOT NULL,
severity INT NOT NULL,
triggered_at TIMESTAMP DEFAULT NOW(),
resolved_at TIMESTAMP,
description TEXT,
framework_reference TEXT,
remediation_plan TEXT
);
CREATE TABLE wins (
win_id SERIAL PRIMARY KEY,
client_id TEXT NOT NULL,
win_type TEXT NOT NULL,
recorded_at TIMESTAMP DEFAULT NOW(),
description TEXT,
framework_reference TEXT,
evidence_path TEXT
);
CREATE TABLE audit_runs (
run_id SERIAL PRIMARY KEY,
client_id TEXT NOT NULL,
cadence TEXT NOT NULL,
audit_month DATE,
started_at TIMESTAMP,
completed_at TIMESTAMP,
analyst TEXT,
status TEXT,
deliverable_path TEXT
);
Backed up nightly to /mnt/storage/postgres-backups/ keeping 30 days daily, 12 weeks weekly, 24 months monthly.
14.4 The Python Analyst Notebook
The notebook at /home/user/audits/notebooks/monthly-review.ipynb is the working document the analyst uses to review the cron output and finalize the monthly report. Pulls from Postgres, presents KPI tables, surfaces alerts, provides interactive cells. Opened via Jupyter remote on Bubbles port 8888 via SSH tunnel.
ssh -L 8888:127.0.0.1:8888 user@bubbles
14.5 Pandoc Markdown to PDF Pipeline
pandoc /home/user/clients/[clientname]/audits/monthly/[YYYY-MM]/report.md \
--output /var/www/sites/[domain]/audit/ongoing/monthly/[YYYY-MM]/report.pdf \
--pdf-engine xelatex \
--template /home/user/audits/templates/monthly-report-template.tex \
--variable mainfont="Helvetica Neue" --variable monofont="Menlo" \
--variable fontsize=10pt --variable geometry:margin=1in \
--toc --toc-depth 2 --number-sections
The template defines cover page, headers, footers, and section heading styles. Branded with TDG colors and the SDVOSB designation. Separate templates handle quarterly and annual deliverables.
14.6 The Gmail SMTP Alert System
Gmail SMTP sends regression alerts, win alerts, and report delivery emails. Credentials at /home/user/secrets/gmail-smtp.env with permissions 600.
python3 /home/user/audits/scripts/send-alert.py \
--client [clientname] --alert-type regression --severity 2 \
--description "AI citation loss on 8 priority queries this month" \
--recipients "joseph.w.anady@gmail.com,[clientcontactemail]"
Uses Python's smtplib and smtp.gmail.com on port 587 with STARTTLS. App passwords (not OAuth). The Gmail account is the engagement's dedicated audit alert account.
14.7 The Metabase or Grafana Dashboard
The dashboard runs on Bubbles on port 3000 (Metabase) or port 3001 (Grafana). Metabase preferred for time series and tabular views. Grafana preferred for dense panel layouts and alert wiring. Reverse proxied via nginx at https://dashboard.[domain]/. Access via Tailscale plus HTTP basic auth. htpasswd at /etc/nginx/htpasswd-dashboard. Reads from Postgres and does not modify data.
14.8 No Third Party CDN or Proxy Recommendations
The toolchain operates without any third party CDN or proxy in the path. Audit data, the dashboard, reports, and the client communications archive all live on Bubbles or transit directly to the client. Routing through external infrastructure introduces dependencies and exposes data to additional parties. For clients whose own sites run behind a CDN, the audit notes the configuration but does not recommend the audit infrastructure mirror the client's stack.
14.9 External Storage Archive
Audit outputs are archived to the Bubbles 4.5 TB external storage at /mnt/storage/audits/.
/mnt/storage/audits/[domain]/ongoing/
monthly/[YYYY-MM]/report.pdf data/ scripts/ alerts/ wins/ manifest.md
quarterly/[YYYY-Q#]/review.pdf data/ scripts/ manifest.md
annual/[YYYY]/review.pdf data/ scripts/ alignment.md manifest.md
The archive is the long horizon record and the input to the annual review's retrospective narrative.
14.10 Toolchain Maintenance Cadence
Weekly: nginx log rotation, Postgres backup verification, cron job log review, dashboard panel sanity check. Monthly: Python script updates against new framework versions, Pandoc template review, Metabase or Grafana version update, alert threshold review. Quarterly: full toolchain test pass, validation that every framework cross reference resolves, archive review on /mnt/storage/audits/. Annually: framework library review, audit script regression test, Postgres schema migration if versions warrant, dashboard architecture review, full Bubbles server health audit.
14.11 Multi Client Scale Pattern
Mode A handles 3 to 10 clients. Mode B handles 10 to 30. Mode C handles 30 to 100 plus. The Bubbles toolchain scales linearly through 30 clients on a single instance. Beyond 30, the cron job execution time exceeds the morning window and the Postgres trend table size approaches practical limits. At 30 clients, the architecture either splits to multiple Bubbles instances (one per analyst), or moves to a centralized data warehouse pattern.
14.12 Failure Mode Handling
- Cron job fails to start: analyst alerted via Gmail SMTP, monthly audit run manually within 5 business days.
- Postgres database corruption: restore from nightly backup at
/mnt/storage/postgres-backups/. - Pandoc rendering failure: fall back to HTML output and convert manually.
- Gmail SMTP delivery failure: send via a secondary SMTP provider or deliver the PDF via Slack or email manual upload.
- Bubbles server outage: every audit input is also stored on
/mnt/storage/. The audit can run from a secondary Bubbles or development machine.
Failure modes are tested annually during the toolchain test pass.
End of Framework Document
Document version: 2.0 Last updated: 2026-05-14 Maintained by: ThatDeveloperGuy
The ongoing audit is the recurring discipline that keeps a managed SEO, AEO, AIO, and GEO engagement honest over months and years. This framework specifies the monthly, quarterly, and annual cadence, workflow per layer, regression and win detection protocols, algorithm update response, the always on dashboard, action prioritization, reporting integration, client communication, and the self hosted Bubbles toolchain.
Apply at every active client engagement. The output is longitudinal evidence the engagement is producing the outcomes the client signed for, and the prioritized action list driving the next month, quarter, and year.
Companions
- framework-initialaudit.md, one time engagement baseline
- framework-contentaudit.md, deep content audit methodology
- framework-competitoraudit.md, deep competitive analysis
- framework-gscanalysis.md, GSC data analysis
- framework-attribution.md, attribution architecture
- framework-reporting.md, reporting cadence and structure
- framework-clientonboarding.md, onboarding process
- framework-aicitations.md, AI citation across engines
- framework-aioverviews.md, AI Overview citation pattern
- framework-coreupdates.md, Google core update response
- framework-multiengine-tradeoffs.md, engine divergences
- framework-linkbuilding.md, backlink acquisition
- framework-schema.md, schema and graph pattern
- framework-technicalseo.md, technical SEO implementation
Want this framework implemented on your site?
ThatDevPro ships these frameworks as productized services. SDVOSB-certified veteran owned. Cassville, Missouri.
See Engine Optimization service ›