How the work gets made

Approach

Every product on this site, the CRM that runs the back office, and the site itself were built with Claude Code, custom agents, and the Anthropic API. Not as a gimmick. As the operating model.

Principles

01

Marketing brain, builder's hands

The better part of a decade as Head of Marketing before going independent. I know why a product needs to exist before I write the first line of it.

02

Agents with job descriptions

Every agent gets a tightly scoped system prompt, a small set of tools, and a documented failure mode. Software with accountability.

03

One operator, ten agencies

The white-label model only works if intake, brief, build, QA and delivery are uniform. Agency Genius is that uniformity as software.

04

Deadlines are a strategy

Hard deadline, narrow audience, urgent need. The exact conditions where a small, focused tool wins a market from incumbents.

The agent roster

Every agent has a tightly scoped system prompt, a small set of tools, and a documented failure mode.

intake-routerAgency GeniusReads inbound tickets, classifies them, fills out a structured brief, routes them to the right delivery team.
brief-writerAgency GeniusTurns a thin client message into a full brief with acceptance criteria, references, and a draft timeline.
qa-checkerAgency GeniusRuns the finished work against the brief, flags drift, asks the builder to confirm.
site-auditorAgency GeniusNightly job on every active client site. Lighthouse, broken links, schema validity, security headers.
status-summariserAgency GeniusWeekly client digest. Pulls activity, drafts the update, queues it for review.
receipt-issuerLoadSnapReads load photo metadata, calls DEFRA's reference data API, returns a compliant draft. Runs on Groq for kerbside latency.
compliance-checkerLoadSnapValidates the draft against the official DEFRA schema, flags missing fields, retries with corrections.
invoice-drafterLoadSnapPulls customer rates from Supabase, drafts the invoice, queues it in Stripe Connect.
brand-readeravago.aiEnriches whatever the user pastes in. Pulls Tavily for search, DataForSEO for competitor signals, returns a structured brand brief.
page-drafteravago.aiTakes the brand brief, picks a human-designed template, populates copy in the right voice and structure.
cmdk-routerThis siteThe ⌘K agent. Four tools, a sub-agent handoff, source attribution under every reply.

The better part of a decade as Head of Marketing before going independent. The agency, the products, the consultancy: they're informed by all of it.

2021 →FounderWeb Hero, Agency Genius, Avago, LoadSnap, OutPitchBuilt the agency, then the platform that runs it, then the products that scale from it.
2023 → 2024Head of MarketingCoptrzB2B and B2C growth, 252% MQL growth, 564% YoY e-commerce. CRM and automation overhaul, AI tooling in the marketing stack.
2023 → 2024Head of MarketingCademiFull rebrand, Salesforce to Pipedrive migration, paid media across Google, Meta and LinkedIn, content strategy.
2020 → 2023Head of MarketingRAM Tracking75% increase in lead gen post-redesign, 4x prospect data growth, multi-brand strategy across RAM Tracking, AMS Tracking, Rewire Security. Pardot and Intercom build-outs.
2018 → 2020Senior Business Development ManagerRAM TrackingClosed and managed enterprise sales pipeline across the RAM Tracking portfolio.
2017 → 2018General ManagerHeinekenTested Yorkshire's first Heineken Smart Dispense system.
2016 → 2017General ManagerMarston'sRan a multi-site brewing and pub operation, P&L, team, ops.

Five domains, one codebase

This site is the application artifact for the Claude Certified Architect program. Each domain is demonstrated in the repo.

D1

Agentic architecture and orchestration

  • components/CmdKAgent mounts the router agent globally on every page.
  • The router decides to answer, call a tool, or hand off to the project-explorer sub-agent via a route_to_explorer tool call: a second model call with a different system prompt and a reduced tool set.
  • .claude/agents/cmdk-router.md and .claude/agents/project-explorer.md hold the version-controlled prompts.
D2

Tool design and MCP integration

  • Four tools with Zod schemas: show_project, email_callum, search_writing, get_now.
  • Every tool returns { ok: true, data } or { ok: false, error: { code, message, retryable } }.
  • search_writing tries the Notion MCP first and falls back to local MDX search when MCP is unavailable.
D3

Claude Code configuration and workflows

  • CLAUDE.md is the project entry point for any Claude Code session.
  • .claude/commands/ holds the slash commands: /new-article, /voice-check, /ship.
  • .claude/agents/ holds the agent system prompts.
D4

Prompt engineering and structured output

  • Tool results are typed JSON validated by Zod; the UI renders structured cards instead of raw text.
  • The agent endpoint includes a validation-retry loop, up to two retries on tool-input schema failures.
  • /studio uses structured JSON output for social post generation.
D5

Context management and reliability

  • Session-scoped conversation state in client memory via Zustand.
  • Every tool result carries a source path, rendered as an attribution under each card.
  • A 'Report this answer' link opens an email_callum flow with the transcript pre-filled. Notion MCP degrades gracefully to local MDX.