How to create client profiles, brand overlays, and capabilities with ACR.
No coding required. If you can fill out a form, you can build these.
You build ONCE (generic): You build PER CLIENT:
├── email-copywriting ├── acme-brand (overlay)
├── campaign-strategy ├── globex-brand (overlay)
├── red-team-review ├── initech-brand (overlay)
├── social-content └── etc.
└── visual-creative
The generic capabilities know HOW to do the work. The client overlays know WHO you’re doing it for.
This is the most common thing you’ll do. Every new client gets one.
clients/
└── acme-nonprofit/
├── capability.yaml ← the manifest (copy the template below)
├── index.txt ← one line about this client
├── summary.md ← key facts at a glance
└── standard.md ← everything the AI needs to know
acme-nonprofit: Acme Foundation — youth education nonprofit, warm/invitational voice.
Write this like you’re briefing a new team member in 60 seconds:
# Acme Foundation — Quick Reference
- **Full Name:** Acme Foundation
- **Sector:** Youth education / community development
- **Audience:** Parents, educators, community donors
- **Voice:** Warm, invitational, community-focused
- **Don't:** Guilt-based appeals, political messaging
- **Do:** Say "partner" not "donor", emphasize impact
- **Current campaigns:** Spring enrollment drive
- **Key contact:** Jamie (marketing lead)
This is where you put everything the AI needs. Write it like a brand guide meets an account brief:
# Acme Foundation — Full Client Profile
## Organization
Acme Foundation is a youth education nonprofit...
## Brand Voice
- Tone: [describe it like you'd tell a new copywriter]
- Examples of good copy: [paste real examples that nailed it]
- Examples of bad copy: [paste things that missed the mark]
## Audience Segments
- Segment 1: Parents (30-50)
- What motivates them: [...]
- What turns them off: [...]
- Segment 2: Educators
- ...
## Red Lines (things to NEVER do)
- Never use guilt-based fundraising language
- Never take political sides
- Never make claims about outcomes without data
## Past Campaign Performance
- Spring 2025 email series: [what worked, what didn't]
- Year-end 2025: [results, learnings]
## Technical Details
- Email platform: [whatever they use]
- Donation platform: [Stripe, etc.]
- Tracking: [any specific UTM conventions]
## Key People
- Jamie: [role, preferences, communication style]
- Alex: [role, what they care about]
name: acme-brand
type: capability
version: 1.0.0
description: "Acme Foundation — brand voice, audience, campaign history, and org-specific rules."
provides:
- client-profile
- acme-nonprofit
requires:
tools: []
capabilities: []
context: []
budget:
index: 15
summary: 200
standard: 1200
activation:
triggers:
- type: pattern
match: "(?i)(acme|acme.foundation)"
trigger_logic: OR
co_activates: []
conflicts: []
permissions:
data:
client_data: read-only
behavioral:
core: |
When working on Acme Foundation content:
- Use warm, invitational tone
- Say "partner" not "donor"
- Never use guilt-based appeals
- Stay politically neutral
- Emphasize measurable impact
overlays: []
state_schema:
version: 1
max_size_tokens: 100
fields:
- name: active_campaign
type: string
- name: last_approval_status
type: string
verification:
checklist:
- "Content matches brand voice"
- "No red line violations"
- "Audience segment is appropriate"
completion_signal: content_approved
That’s it. Four files per client. The AI reads them when that client comes up and immediately knows who they are, how they talk, and what not to do.
You can either add a red team section to the client’s standard.md, or create a separate capability. For most clients, just add a section:
## Red Team Rules (Client-Specific)
When reviewing content for Acme Foundation, flag:
- [ ] Any guilt-based language ("you must," "how can you ignore")
- [ ] Political messaging or partisan language
- [ ] Unverified outcome claims
- [ ] Urgency that feels manufactured
- [ ] Anything that wouldn't feel natural in a parent-teacher conversation
The generic red team capability will pick these up automatically when the client overlay is mounted.
After creating a client overlay, check it:
acr validate clients/acme-nonprofit/
You want to see: ✅ Valid
If something’s wrong, it’ll tell you exactly what to fix.
| Thing you want to capture | Where it goes |
|---|---|
| Client’s brand voice | standard.md → Brand Voice section |
| Colors, fonts, logos | standard.md → Brand Assets section (or link to Figma) |
| Past campaign results | standard.md → Past Campaign Performance |
| Things to NEVER do | standard.md → Red Lines section |
| Things the red team should catch | standard.md → Red Team Rules section |
| Key people and their preferences | standard.md → Key People section |
| Tracking codes / UTM conventions | standard.md → Technical Details section |
| “We learned X from last campaign” | standard.md → update Past Campaign Performance |
| Quick client context for the team | summary.md |
As you learn more about a client, just update their files:
standard.md (new preferences, feedback, learnings)The AI picks up changes immediately on the next run. No deployment, no code, just edit the file.
Less common, but straightforward:
acr validate to check your workThe key question for standard.md: “If I hired a smart person and handed them just this document, could they do the job?” If yes, it’s good enough.
| Mistake | Fix |
|---|---|
| Writing vague brand voice (“be professional”) | Be specific: “Write like you’re texting a friend who cares about this cause — casual but sincere” |
| Forgetting to include real examples | Paste actual good/bad copy samples. AI learns from examples better than rules. |
| Making standard.md too long | Keep it under 1,500 tokens (~3 pages). If you need more, use deep.md |
| Not updating after campaigns | Set a reminder: after every campaign wraps, spend 10 minutes updating the profile |
| Writing red team rules as suggestions | Write them as hard rules: “FLAG if…” not “Consider whether…” |
acr budget clients/acme-nonprofit/