In-house + channel patterns
Full Lesson Reference
If you work on ONE brand but across multiple channels, the agency pattern is overkill. The in-house pattern organises by what you're doing, not who you're doing it for. Channel-first is a variant of the same idea.
When in-house beats agency
- You're the marketing team for one brand (solo or small team)
- You work across paid, email, SEO, content, lifecycle - not one niche
- All your data sources + MCPs are shared across your work
- Your CLAUDE.md rules are mostly brand-level, not per-activity
Folder structure
Claude Code/
├── CLAUDE.md ← brand-level rules ├── .env ← all platform credentials (shared) ├── .mcp.json ← all MCPs (shared) ├── paid-media/ │ ├── CLAUDE.md ← paid-media-specific rules │ ├── google-ads/ │ ├── meta-ads/ │ └── reports/ ├── email/ │ ├── CLAUDE.md ← email-specific rules │ ├── campaigns/ │ ├── flows/ │ └── lists/ ├── seo/ │ ├── CLAUDE.md ← SEO-specific rules │ ├── keyword-research/ │ ├── content-briefs/ │ └── technical-audit/ ├── content/ ├── lifecycle/ └── _shared/ ├── brand-guide.md ├── voice-examples/ └── templates/
CLAUDE.md hierarchy
Global (~/.claude/CLAUDE.md)
You as a person. Unchanged from Module 02.
Brand CLAUDE.md (Claude Code/CLAUDE.md)
The brand you're marketing - identity, voice, target audience, primary metrics, what never to do:
Brand CLAUDE.md
Brand
- Name: [Your brand]
- Industry: [niche]
- Tone: [voice traits]
- Never: [words/themes to avoid]
Customers
- Primary: [segment]
- Secondary: [segment]
North star metrics
- Revenue
- Customer LTV
- Gross margin %
- Acquisition cost
Data sources
- Shopify for orders + customers
- Klaviyo for email
- GA4 + GSC for web + organic
- Meta + Google Ads for paid
Universal rules
- All customer-facing copy must match brand voice guide
- Never approve ad launches without final review
- Weekly performance check every Friday
Channel / discipline CLAUDE.md
Rules specific to paid media, email, SEO, etc. Example for paid-media/CLAUDE.md:
Paid Media CLAUDE.md
Reporting
- Daily check: spend vs yesterday, CPA vs target
- Weekly: ROAS trend, top + bottom 3 campaigns, creative fatigue
- Monthly: budget pacing vs quarter target
Optimisation cadence
- Daily: check anomalies
- Weekly: shift budget within channel
- Bi-weekly: creative refresh cycle
- Monthly: strategic review
Creative rules
- Test 3-5 new angles per week
- Pause any ad >$50 spend + 0 conversions
- Scaling threshold: hitting target CPA + ROAS for 7+ days
Data queries
- Default to last 14 days for optimisation decisions
- Always compare to previous 14-day period
Why this works
- Brand context loads automatically in every session (global CLAUDE.md level via Claude Code/CLAUDE.md)
- Channel-specific rules load when you cd into that channel's folder
- MCPs + credentials are shared across all your work (one brand, one set of accounts)
- Reports + deliverables are organised by discipline, which matches how you think about them
Channel-first variant
Same as in-house but you invert the structure - channel is the top level, project or client is nested inside.
Claude Code/
├── google-ads/ │ ├── campaign-spring-launch/ │ ├── always-on/ │ └── templates/ ├── meta-ads/ │ ├── campaign-spring-launch/ │ └── always-on/ └── klaviyo/ ├── welcome-series-rebuild/ └── ongoing-campaigns/
Best for specialists who live in one platform per workday. Keeps the platform's tools + rules front and centre.
Shared assets (_shared/)
One brand = lots of shared context
- Brand guide - colours, fonts, logo files
- Voice examples - good copy, bad copy, examples of tone
- Templates - report templates, email templates, page templates
- Customer research - personas, interviews, survey results
Put in _shared/. Reference from anywhere in the workspace.
Cross-discipline work
Some projects span multiple disciplines. Example: "Spring Launch" involves paid, email, SEO, content, landing pages.
2 options
Campaign-scoped project folder
Claude Code/
├── campaigns/ │ └── spring-launch-2026/ │ ├── CLAUDE.md │ ├── plan.md │ ├── paid/ │ ├── email/ │ ├── landing-page/ │ └── content/ ├── paid-media/ ├── email/ └── seo/
Campaign is its own project. Draws from the discipline folders when needed.
Cross-referenced folders
Keep everything in its discipline folder but tag with campaign:
paid-media/campaigns/spring-launch-2026.md email/campaigns/spring-launch-2026-welcome.html seo/content/spring-launch-2026-landing-brief.md
Less context isolation but less folder shuffling. Works for smaller campaigns.
When to add more structure
Start simple. Add structure when
- You can't find things fast enough (need better naming or folders)
- CLAUDE.md files are getting too long (split into sub-folders)
- You're making mistakes caused by wrong context (isolation needed)
- Multiple people join your workspace (more explicit conventions)
Don't add structure prematurely. 90% of in-house marketers do fine with 5-7 top-level folders.
Power-user tips
- Brand CLAUDE.md is the anchor - every sub-folder inherits it, so put brand voice + rules there not in every sub-folder
- Create sub-folder CLAUDE.md only when rules genuinely differ - for paid vs email, yes. For google-ads vs meta-ads within paid, often not.
- _shared/ gets referenced constantly - keep brand-guide.md especially clean + current
- If a campaign is big (spring launch, BFCM), give it its own project folder - cross-discipline orchestration needs a home
Action items
☐ If in-house/solo, create a brand-level CLAUDE.md at the top of your Claude Code folder
☐ Create _shared/ for brand assets and templates
☐ Decide: discipline-first or channel-first folder structure
☐ Big cross-discipline campaigns get their own project folder under campaigns/
☐ Don't over-structure - start simple, add folders when real pain appears
Next lesson: When to reorganise.
Exercises
- Review the concepts covered in this lesson: In-house + channel patterns.
- Write down your key takeaway from this lesson.
- Practice running any commands or prompts mentioned above inside your terminal.