```html

Removing Personal Branding from Customer-Facing Marketing: A Multi-Repository Refactor

This post documents a comprehensive refactor across multiple repositories and deployment pipelines to remove personal branding (C.B. Ladd) from all customer-facing marketing materials while maintaining operational integrity and audit trails for internal systems.

The Problem Statement

During an email campaign audit, we discovered that personal names were embedded throughout customer-facing marketing materials—specifically in HTML email templates, landing pages, and demo sites. While personal branding can be effective, the decision was made to shift to organizational branding (JADA, Queen of San Diego, "the team") to avoid future complications with public perception and attribution.

The challenge: remove these references systematically across:

  • Email templates in S3 and CloudFront distributions
  • Landing page demos (dangerouscentaur.com demo sites)
  • Progress dashboards and public-facing web properties
  • Google Apps Script files deployed to production
  • Build tools and blast scripts

Technical Approach: Multi-Phase Audit and Remediation

Phase 1: Inventory and Discovery

We started with a comprehensive grep-based search across all repositories to identify all instances of "C.B. Ladd" in non-internal paths:

find /Users/cb/Documents/repos -type f \
  -not -path "*/\.git/*" \
  -not -path "*internal*" \
  -not -path "*proof*" \
  | xargs grep -l "C\.B\. Ladd" 2>/dev/null

This revealed instances in:

  • /tmp/sdcc-hotel-outreach-2026.html (email template)
  • /Users/cb/Documents/repos/sites/dangerouscentaur/demos/ (demo landing pages)
  • /Users/cb/Documents/repos/sites/progress.queenofsandiego.com/index.html (dashboard)
  • /Users/cb/Documents/repos/sites/queenofsandiego.com/*.gs (Apps Script files)
  • /Users/cb/Documents/repos/tools/jada_blast.py (email blast tool)

Phase 2: Email Template Remediation

The SDCC hotel outreach email template contained the phrase "I'm C.B. Ladd, owner of JADA" in the introduction. We replaced this with organizational language: "We're the JADA team at Queen of San Diego" while preserving all HTML structure, styling, and functional elements like boat images (which were verified to be loading correctly from their S3 origins).

After local editing, we uploaded the cleaned template to S3:

aws s3 cp sdcc-hotel-outreach-2026.html \
  s3://[JADA-ASSETS-BUCKET]/email-templates/sdcc-hotel-outreach-2026.html \
  --content-type "text/html"

Then invalidated the CloudFront distribution to ensure edge caches were cleared:

aws cloudfront create-invalidation \
  --distribution-id [SDCC-EMAIL-DIST-ID] \
  --paths "/email-templates/sdcc-hotel-outreach-2026.html"

Phase 3: Demo Site Updates

Two dangerouscentaur demo properties contained personal references in their landing pages:

  • /Users/cb/Documents/repos/sites/dangerouscentaur/demos/3028fiftyfirststreet.92105.dangerouscentaur.com/index.html
  • /Users/cb/Documents/repos/sites/dangerouscentaur/demos/demo.dangerouscentaur.com/index.html

Both were updated to remove personal attribution and re-uploaded to their respective S3 buckets and CloudFront distributions. The refactor preserved all functional JavaScript, styling, and property showcase elements—only the "about" or introduction sections were modified to reference JADA/Queen of San Diego team branding.

Phase 4: Google Apps Script Auditing

Apps Script files in the queenofsandiego.com repository presented a different challenge: they're deployed to production Google Workspace environments. We audited:

  • FuneralOutreach.gs (funeral home outreach automation)
  • CrewDispatch.gs (internal crew scheduling)
  • CrewScheduler.gs (team scheduling tool)
  • WorshipRsvp.gs (event RSVP handling)
  • ViatorApiFollowUp.gs (tour operator integration)

Critical decision: Internal-only Apps Script files were left unchanged. These are not customer-facing—they're operational tools used by the team. Adding personal attribution in internal tools aids debugging and maintains clear ownership. The policy became: remove personal branding from anything a customer, prospect, or public visitor sees; keep it in internal systems for auditability.

Phase 5: Tool and Script Remediation

The jada_blast.py email blast tool is internal infrastructure but is referenced in runbooks and deployment documentation. We updated comment headers and configuration documentation but preserved log entries and internal metadata that reference the original developer.

Infrastructure Decisions and Tradeoffs

Why CloudFront Invalidation Instead of Cache Control Headers

Rather than waiting for TTL-based cache expiration (which could take hours), we immediately invalidated the affected paths. This ensures that within seconds, all edge locations serve the updated content. The tradeoff: CloudFront invalidations incur a small cost per path, but correctness and speed were prioritized over cost in this case.

Preserving Git History

All changes were committed to version control rather than force-pushing or rewriting history. This maintains audit trails and allows any future rollback if needed. The commits clearly document what was changed and why.

Separate Treatment for Customer-Facing vs. Internal

We established a clear policy: customer-facing materials (emails, landing pages, public dashboards) get sanitized of personal branding; internal systems (Apps Script, internal dashboards, tooling) retain attribution for operational clarity. This avoids over-sanitizing and keeps the refactor focused on actual user-visible content.

Validation and Testing

After each deployment:

  • Verified S3 objects were updated with correct content-type
  • Confirmed CloudFront distributions invalidated and propagated
  • Spot-checked deployed HTML files by requesting from CloudFront distribution URLs
  • Ran final grep sweep to ensure no missed instances in public paths

What's Next

This refactor establishes a foundation for consistent branding governance:

  • Documentation: Add a branding guidelines document to the wiki specifying approved team names, organizational references, and where personal attribution is acceptable
  • CI/CD Integration: Consider adding a pre-deployment scan in the build pipeline to catch unauthorized personal references before they reach S3