The demo is an always-on context layer — Claude knows everything about your product, audience, and voice, and generates briefs automatically when something happens. A feature ships, an objection spikes, Monday arrives. Here's how to build it.
Sam Tasman-Jones·~10 min read·Claude Projects + Zapier or Make
The demo has four views: a brief queue (briefs that have been generated and are waiting for you), a context layer (everything Claude knows about your product, audience, and voice), a history log, and active triggers (the events that cause a brief to be generated).
The core idea is that most creative work starts with the same blank page problem — you know what happened (you shipped something, a customer said something, it's Monday), but translating that into something worth writing still takes effort. This system removes that friction by doing the brief before you start.
The context layer is what makes it work. Because Claude always knows your product, audience, and tone before it writes anything, the output is specific rather than generic. Updating the context once updates every future brief.
What you need
🤖
Claude.ai Pro (Projects)For the context layer — persistent instructions that power every brief.
⚡
Zapier, Make, or n8n (for triggers)To automate brief generation when events happen. Not needed for the manual version.
📋
Your context brief20–30 minutes to write: product identity, audience, voice, current sprint focus, key differentiators. This is the most important input.
⚡ Option 1 — No code
Build a manual context-driven brief system
Set up a Claude Project with your full product context, then run briefs on demand whenever you need them. Takes 30 minutes to set up, then 2–3 minutes per brief. No automation needed.
1
Build your context brief with an interview
The context layer is what makes every brief specific rather than generic — it's worth getting right. Instead of filling in a blank template, run this interview prompt and let Claude pull it out of you one question at a time. Paste the output into your Claude Project in Step 2:
Context interview prompt
I'm setting up a context layer for an always-on creative briefs system. I need your help building my context document — it'll be used to generate every brief from here on, so getting it specific matters.
Walk me through these one at a time — ask one question, wait for my answer, then move to the next:
1. Product — what's the name, what does it do in one sentence, and what stage is it at? (e.g. "50 customers", "just launched", "scaling to enterprise")
2. Audience — who is the primary audience? Describe their role, what they're trying to achieve, and what they currently use instead of your product.
3. Differentiators — what are the 2–4 things that make your product genuinely different? Be specific — not "easy to use", but what specifically is easier and why it matters to your audience.
4. Voice and tone — how should content sound? Give me: 3 adjectives that describe the voice, one person or publication whose writing style you want to match, and one thing to actively avoid in the writing.
5. Who receives the briefs — is this going to an in-house marketing team, an external creative agency, or a freelance copywriter? How much product context do they already have? What does a useful brief look like to them?
6. Brief types — what are the main content formats you need briefs for? (e.g. LinkedIn posts, email campaigns, paid social, objection response scripts, event announcements, partner comms)
7. Current context — what's happening right now that should shape the next round of briefs? (features just shipped, campaigns running, objections coming up repeatedly in sales conversations, key metrics you're tracking)
Once we've covered all seven, output a complete "Context brief" document — specific enough that every brief generated from it would clearly belong to this product and couldn't have been written for a generic brand. Format it for pasting directly into a Claude Project as system instructions.
💡
Set a reminder to update the "Current context" section weekly — what shipped, what objections came up, what's launching next. That one habit makes the output noticeably more specific over time.
2
Create a Claude Project and add your context
Create a Project called "Content briefs — [your product]". Paste your context output from Step 1 into the Project instructions. Then append these instructions for how briefs should be structured:
Project instruction addition
When I ask you to generate a brief, structure it like this:
**Brief type:** [e.g. LinkedIn post, Email, Objection response]
**Trigger:** [what caused this — e.g. "Feature shipped", "Objection spiked", "Weekly digest"]
**Context used:** Key facts from my context brief relevant to this brief (2–3 sentences)
**Opening hook options (3):** Three alternative opening lines — different angles, same quality
**Content outline:**
— Main message (1 sentence)
— Story arc or flow (3–5 bullet points)
— Call to action
**Tone notes:** Specific reminders for this piece
Keep briefs practical. I'm going to use this to write, not read. Be direct.
3
Generate briefs on demand
Use these prompt templates for the most common brief types:
Feature launch brief
Generate a LinkedIn post brief for today's [feature name] launch. We shipped this at [time]. Key facts: [1–2 sentences about what it does and why users wanted it].
Objection response brief
Generate an objection response brief for "[exact objection]". This has come up [N] times this week. Key context: [anything specific about who's raising it or when].
Weekly digest brief
Generate my weekly LinkedIn post brief. This week: [3–4 bullets of what happened — shipped, learned, heard from users]. Aim for a "here's my week" format that invites engagement.
⚙️ Option 2 — Start building
Build trigger-based auto-generation
Two paths to automation — no-code via Zapier or Make (faster to ship, easier to maintain), or a custom Claude agent built with Claude Code (more flexibility, better brief quality, full control). Either way, work through the architecture first — it clarifies what you're building before you start wiring things together.
1
Architect the system before building anything
The brief generation system has more moving parts than it looks — triggers, context versioning, prompt design per brief type, output routing, queue management. Work through this with Claude Code or claude.ai before writing a line of code or building a Zap. The output becomes your build plan:
Architecture prompt
I want to build an always-on creative briefs system. Before we build anything, help me architect it properly.
Work through these with me one at a time — ask the question, wait for my answer, move to the next:
1. Trigger design — what are the events that should generate a brief? For each: what's the source (e.g. product deployment webhook, customer conversation signal, scheduled cron, Slack keyword threshold), what's the condition that fires it (not every deployment should trigger a brief), and how do we avoid over-triggering?
2. Context layer — how is the context document stored and versioned? When someone updates the voice or sprint context, how does that propagate? Should different brief types use different context slices, or is it always the full document?
3. Brief prompt design — how should the Claude prompt be structured for each brief type? What's the system prompt vs. the per-brief dynamic content? How do we inject the triggering event's data (e.g. the specific feature name, the objection text) cleanly alongside the context layer?
4. Output quality and consistency — what's the evaluation loop? How does the team flag a brief as "not good enough" and what happens to that signal? Should there be a confidence threshold before a brief is sent, or does everything go to the queue for human review?
5. Output routing — where do briefs land? (Slack channel, Notion database, email, a custom queue) What format does each destination need? What metadata travels with the brief — trigger source, context version, timestamp?
6. Brief queue and lifecycle — how are briefs stored, status-tracked, and consumed? What states does a brief move through (generated → reviewed → used / archived)? Who can see and action briefs, and how?
7. Automation stack — given the triggers and output routing above, what's the right technical stack? Walk me through the tradeoffs between: (a) Zapier/Make for the whole flow, (b) a Claude agent via the Anthropic API with a cron scheduler, (c) a hybrid where Zapier handles triggers and the Claude API handles generation. What would you recommend for a team that wants to ship fast and maintain it themselves?
Once we've worked through all seven, output:
— A trigger schema (each trigger: name, source, condition, cool-down period, brief type it maps to)
— A context document structure with versioning approach
— The Claude API prompt chain: system prompt template, dynamic injection pattern per brief type, example for one brief type end-to-end
— Output routing plan with the format each destination needs
— Recommended automation stack with reasoning, and what the build order should be
💡
Question 1 (trigger design) and question 3 (prompt design per brief type) are the highest-leverage decisions. A poorly designed trigger fires too often and creates noise; a poorly structured prompt produces generic output regardless of how good your context is.
2A
No-code path — Zapier or Make
If your architecture from Step 1 points toward Zapier or Make, use this prompt to design the specific automation flows. Run it with Claude after you have your architecture document:
Zapier/Make design prompt
Based on the architecture we designed, help me build the Zapier (or Make) automation flows for the creative briefs system.
Architecture doc: [paste your Step 1 output here]
For each trigger in the architecture:
1. Map out the full Zap/scenario step by step — trigger app and event, any filter conditions, the Anthropic API action (model, prompt structure, how context is injected), and the output delivery step
2. Flag any steps where Zapier's built-in Anthropic integration is sufficient vs. where I'd need a webhook to a custom endpoint for more control
3. Identify the context layer approach — since Zapier can't maintain persistent state easily, where should the context document live? (e.g. a Google Doc that's fetched each run, a Zapier Storage key, a Notion page)
Then give me the exact Claude prompt text for each brief type, formatted as it would appear in the Zapier "Prompt" field — with placeholders clearly marked for the dynamic trigger data that gets injected at runtime.
Finally, tell me what I can't do well in Zapier that would push me toward a custom Claude agent instead — so I know when to revisit that decision.
2B
Custom build path — Claude Code
If you're building a custom agent or full platform, use this with Claude Code. Paste your architecture document where indicated — it replaces the generic instructions with decisions you've already made:
Build prompt — Claude Code
Build a creative briefs automation platform based on the architecture below. Start with a working prototype — single Node.js service, no frontend needed for v1 unless specified.
Architecture to implement:
[Paste your Step 1 architecture document here]
Core system components to build:
1. Context manager
— Load context document from a local JSON file (structure per architecture doc)
— Support versioned updates: each save creates a new version with timestamp
— Expose getContext(briefType) that returns the relevant context slice for a given brief type
— Log which context version was used for each brief generation
2. Trigger engine
— Define triggers in a config file (triggers.json): each entry has name, type (webhook/cron/threshold), condition, cooldown period, and mapped brief type
— Webhook handler: Express endpoint that receives POST events (GitHub, Slack, custom), evaluates the trigger condition, checks cooldown, and fires brief generation if conditions met
— Cron scheduler (node-cron): register all scheduled triggers on startup
— Threshold tracker: maintain a rolling count per signal type, fire when threshold is crossed within the configured window
3. Brief generator
— briefGenerator(triggerEvent, briefType) function
— Constructs the Claude API call: system prompt = context layer, user message = brief type instructions + trigger event data
— Uses claude-3-5-sonnet, streaming preferred so output can be shown progressively
— Returns structured brief object: { id, type, trigger, contextVersion, generatedAt, content: { hook, outline, toneNotes } }
— Store each generated brief to briefs.json with full metadata
4. Output router
— deliverBrief(brief, destinations[]) function
— Destinations configured per trigger in triggers.json
— Slack: post to configured channel using Slack Bolt, format as Block Kit with brief summary and "Open full brief" link
— Notion: create a page in a configured database via Notion API, structured blocks per brief section
— Queue: always write to briefs.json regardless of other destinations — this is the source of truth
5. Brief queue API
— GET /briefs — list all briefs with status, type, trigger, timestamp
— GET /briefs/:id — full brief content
— PATCH /briefs/:id — update status (pending / reviewed / used / archived)
— POST /briefs/:id/feedback — add feedback note (feeds future prompt iteration)
Build in this order: context manager → trigger config loader → brief generator (with Claude API working end to end) → output router → brief queue API. Get each working before moving to the next.
Use TypeScript. Include a .env.example with required keys: ANTHROPIC_API_KEY, SLACK_BOT_TOKEN, SLACK_CHANNEL_ID, NOTION_API_KEY, NOTION_DATABASE_ID.
💡
Build and test the brief generator first — get a single end-to-end brief generating correctly before wiring up triggers or output routing. The prompt quality is what determines the value of the whole system, and you want to iterate on that without the complexity of the automation layer in the way.
Going further
→
Connect GitHub webhooks: every merge to main triggers a brief generation for the PR description — automatically drafted and posted to your #content Slack channel
→
Add a Notion integration: push generated briefs to a Notion database where your writer or marketer can pick them up and turn them into finished content
→
Build a weekly context update ritual: every Friday, spend 5 minutes updating the sprint context section — what shipped, what you heard, what you're building next. The week's briefs will be noticeably better for it
Want to build something like this for your team?
I build always-on content and creative systems for product-led teams — from context layers to fully automated brief pipelines. Let's talk.