Live · v3.1 · Audit-and-fix loop in production

Brand Desk.

A managed agent that maintains the brand · Built May 4, 2026 · One stretch

The Surface Briefs catalog + the /audit-surface agent + the rule catalog + the maintenance protocol. Brand Desk runs the brand. Sister to Career Desk, Family Care Desk, Content Desk. The system that catches drift before it cascades, applies mechanical fixes with safety constraints, and reasons about register inconsistency that regex can't see.

Why this exists.

Analytic Gator's brand claim is "AI can't help you if it doesn't know you." If that claim is true for clients, it's true for me. Without a system, every editing session re-discovers the rules. Every cross-site change is rediscovered painfully via grep. Drift accumulates between strategy memos and the actual surfaces.

Brand Desk is context architecture applied to my own brand. The same discipline I sell, eaten as my own dog food.

The pattern that triggered the build: When I retired the "I'm a builder" voice on the resume's Practice block in favor of a senior-strategic posture, the homepage Practitioner section kept the old voice. Regex didn't catch it because the words were different — only the register had drifted. Brand Desk's semantic check (S01) catches that exact pattern automatically.

Current state.

22
Surfaces audited
15
Surface Briefs
v3.1
Skill version
4/14
Rules auto-fixable

No audit history yet. Run /audit-surface --all to generate the first report.

Top recurring drift in the learnings db: rule B03, 9 findings across 6 surface(s) out of 34 total findings logged. Auto-fix promotion candidate per the 4-criteria gate in AUDIT-RULES.md.

Stats are produced by _automation/brand-desk-stats.sh and rendered by _automation/regenerate-brand-desk-page.sh (v1.1). The page regenerates on every wiki push via a git post-commit hook in ~/.gstack/career-os/. The "27 fixes applied" historical metric from the May 4 baseline campaign is captured in project_brand_audit_campaign_may_4.md.

How it works.

Five components, each with one job:

  1. Surface Briefs. One markdown file per public-facing brand surface (homepage, resume, philosophy essay, etc.). Each brief declares the surface's owner, audience, governing strategy memos, voice rules, locked items, cascading neighbors, and decision history. Briefs let context travel with the surface so future editing sessions don't re-discover the rules.
  2. AUDIT-RULES catalog. The rules Brand Desk checks: voice rules (Apple Rule, Dash Rule, year framing), cross-cutting brand drift patterns (footer labels, cascade misses), brief-driven checks, semantic alignment checks, functional integrity checks. Each rule declares whether it's safely auto-fixable.
  3. /audit-surface agent. Reads the briefs and the rules, audits any surface (or all of them), produces a structured drift report. Optional --fix mode auto-applies mechanical drift patterns. --commit creates structured git commits with audit log included. The agent reasons about semantic register alignment within its own session — no external LLM API; the agent IS the LLM.
  4. Maintenance Protocol. The five-step workflow Claude follows when editing any surface: read brief, plan cascade impact, edit with voice rules as constraints, update brief, update neighbor briefs. Documented so future sessions inherit the discipline.
  5. Audit history. Every run saves a report to _audits/<date>-<scope>.md. Drift trends become visible over time. "This rule has fired three months in a row" becomes a signal that the source needs structural fix, not another patch.

The stack.

Skill
Claude Code
audit-surface skill at ~/.claude/skills/audit-surface/SKILL.md. Slash command: /audit-surface.
Catalog
Markdown
Surface Briefs + AUDIT-RULES + INDEX + PROTOCOL. All version-controlled in career-os.
Storage
Git history
No database. Audit logs land in _audits/ as markdown, committed alongside the fixes they describe.
LLM
The agent itself
Semantic alignment checks use Claude's own reasoning, not an external API. Zero infrastructure cost.

Capabilities.

v1 — Reports drift

Reads briefs + rules, returns a structured markdown report with definite issues, possible drift, and aligned items. Pattern-matches voice rules and cross-cutting brand drift across regex. Honest about what regex can't catch.

v2 — Auto-fixes mechanical drift

The --fix flag applies replacements for rules marked auto_fix: true. Voice rules and semantic checks always remain report-only because they need human judgment. Diff preview before write. Skipped fixes logged. Audit history persisted.

v3 — Catches semantic drift + auto-commits

S01 rule (semantic alignment) catches register/voice drift that regex can't. Brief-driven via the semantic_cascades: array. The --commit flag creates structured git commits per repo with the audit log included. Pre-flight safety: clean tree, all fixes applied, no skipped patterns. Per-repo, never pushes, never merges, reversible via git revert.

Build timeline.

May 4 — afternoon
Single-page audit. Manual run on alfonsoherrada.com homepage to identify cross-cutting drift patterns. 4 definite issues, 2 cascade misses, 1 brief inaccuracy.
May 4 — early evening
v1 of audit-surface skill. Built the Surface Briefs system: INDEX, PROTOCOL, AUDIT-RULES catalog, 4 initial briefs. Skill registered as /audit-surface.
May 4 — evening
Full brand audit campaign. Ran skill across all 22 surfaces. 27 cross-cutting drift fixes applied across 9 pages. 11 new briefs written. Clean baseline established.
May 4 — late evening
v2 — Auto-fix mode. Added --fix flag for mechanical drift, audit history persistence, auto_fix metadata per rule, safety guardrails (diff preview, no auto-commit).
May 4 — late evening
v3.1 — Semantic alignment checks. S01 rule + semantic_cascades: brief schema. Catches register drift regex can't. Canonical example: the ABOUT_BODY senior-posture cascade that triggered the build.
May 4 — closing
v3.4 — Auto-commit mode. --commit flag closes the auto-fix loop end-to-end. Pre-flight safety + structured commit messages + per-repo + no push/merge.

What's still queued.

The system has a few components still queued and a handful of polish items:

What's already shipped vs. when this page was first written:

Cron + git-hook automation (originally listed as queued) shipped same day as v3.3 — see _automation/com.alfonsoherrada.brand-desk.plist for the launchd job and _automation/pre-commit-hook.sh for the optional git pre-commit hook in brand site repos. The system updates itself faster than its own documentation does — exactly the kind of cascade Brand Desk is built to catch.

Why this matters as proof.

Three reasons this build is on the portfolio:

  1. It's an agent I manage. Brand Desk runs every time I edit a brand surface. Same Desk family as Career Desk, Family Care Desk, Content Desk. The portfolio shows a coherent practice of running managed agents for specific operational domains, not disconnected tools.
  2. It's context architecture eating its own dog food. AG sells context architecture. Brand Desk IS context architecture, applied to the AG brand. The strongest possible signal that the discipline works at scale because I run it on myself.
  3. It's honest about what AI can and can't do. Auto-fix only runs on deterministic patterns. Semantic register drift gets flagged but never auto-rewritten because semantic rewrites need a human voice gate. The HIL philosophy stated on Human Operator's, made operational here.

The honest caveat: v1 + v2 + v3.1 + v3.4 shipped in one stretch. The capability is real, the safety constraints are real, but the system has only been running for a single day. Production confidence will accumulate as drift gets caught and fixed in real time over weeks and months. The page above will be updated with what actually happens.

Reference files.