Templates

Marketing team

A team of marketing agents: a lead routes work to specialists for positioning, long-form content, social, SEO, and email, publishing through Notion, Typefully, and Resend.

View Source
  • Web chat
  • Slack
  • Notion
  • Resend
  • Typefully
agent/agent.tstypescript
import { defineAgent } from "eve";

/**
 * Root agent runtime configuration.
 *
 * @remarks
 * Sets the model for the marketing team lead; the rest of the agent's surface (channels,
 * connections, tools, skills, subagents) is discovered from the filesystem under `agent/`. This
 * agent routes work to specialists rather than producing deliverables itself, so it is the first
 * place to try a cheaper model tier if cost matters more than routing quality. Conversation history
 * is compacted once it reaches 90% of the context window.
 */
export default defineAgent({
  compaction: { thresholdPercent: 0.9 },
  model: "anthropic/claude-opus-5",
});

Marketing Team eve Template

Run a team of marketing agents built on eve. You bring work to a team lead: a launch to plan, posts to write, or a page that isn't converting. The lead briefs the right specialist and hands back what they produced.

You talk to it in Slack or a terminal. It delivers real work in the tools you already use: blog drafts in Notion, social posts in Typefully, email campaigns in Resend.

What using it looks like

You: We're launching workspace templates next Thursday. Can you draft the announcement posts?

Lead: On it. I'll check the brand context and brief the social media coordinator.

Lead: Done. Three drafts are in your Typefully queue: an X thread, a LinkedIn post, and a Bluesky post. Nothing is scheduled yet, so review them and tell me when to queue them for launch morning.

Anything irreversible, like sending an email campaign or publishing a scheduled post, pauses for your approval first. You get an approve or deny button in Slack or the terminal before it goes out.

Deploy

The one-click deploy provisions and wires up everything the team needs:

ProvisionedSets
Notion connectorNOTION_CONNECTOR
Resend connectorRESEND_CONNECTOR
Slack connectorSLACK_CONNECTOR
Vercel Blob storeBlob credentials
Prompt for the Typefully API keyTYPEFULLY_API_KEY

Before your first email campaign

Verify a sending domain and create at least one segment in the Resend dashboard. The agent sees your verified domains and segments and picks from them, but it cannot create a domain or verify DNS for you.

Quick start with an AI coding agent

Working in Claude Code or Cursor? Paste this:

text
I want to build a team of marketing agents with the eve framework, using the marketing team template. Read the setup instructions at https://agent-resources.dev/marketing-team-eve-template.md and follow them. They will cover deploying the template, building with eve, how everything works overall, and more.

The team

SpecialistOwnsHands back
product-marketerPositioning, messaging, competitive alternatives, and the shared brand context documentThe brand context document itself
content-marketerLong-form: blog posts, landing pages, case studies, newsletters, docsA Notion page link
social-media-coordinatorShort-form for X, LinkedIn, Threads, Bluesky, and Mastodon, plus the Typefully queueDrafts in Typefully
seoPage and site audits, hierarchy and internal linking, JSON-LD schema, templated page setsRecommendations, long audits as artifacts
emailReworking existing copy for the inbox, then building, targeting, and sending in ResendA Resend campaign link

The team shares one piece of state: the brand context document, a short file describing what your product is, who it's for, and what the team claims about it. The product marketer maintains it; every other specialist reads it at the start of a task. Because it's the team's only shared state, it has a single owner.

Each specialist has a distinct job: the product marketer decides what the team claims, the content marketer writes long-form copy, seo decides which pages should exist, and social-media-coordinator and email publish to an audience. Newsletters route through two of them: the content marketer writes the prose, then the email specialist adapts it for the inbox and sends it through Resend, so newsletters still get the content marketer's planning and editing passes.

How it works

  • One lead, five specialists. The lead loads the brand context and your preferences, writes a brief for the right specialist, and hands back what they produce. It never writes deliverables itself.
  • Every brief is self-contained. Specialists start fresh each time, with no shared conversation history, so the lead's brief carries everything and each specialist reads the brand context itself.
  • Delegation goes one level deep. Specialists do their own research and edit their own drafts against a written rubric rather than spawning further agents.
  • Nothing irreversible happens without you. Sends and deletes in Resend, deletes and scheduled publishes in Typefully, and page moves in Notion all wait for your approval. Drafting stays friction-free. The email specialist also only sees 47 of Resend's roughly 85 tools, so account administration is out of reach entirely.
  • Slack pins four starter prompts in a fresh conversation, one per specialist: sharpen our positioning, write a blog post, draft social posts, review a page's SEO.

The full approval matrix, the credential model, and the reasoning behind each boundary live in docs/ARCHITECTURE.md.

Local development

Link the project you deployed, or a fresh one, and pull its environment:

bash
vercel linkvercel env pullpnpm dev          # then run /model once in the TUI to link a provider
CommandWhat it does
pnpm deveve dev TUI
pnpm validateLint, typecheck, and discovery diagnostics in one
pnpm check / pnpm fixUltracite check and auto-fix
pnpm typechecktsc --noEmit
npx eve infoPrint every discovered tool, skill, connection, and subagent
eve deployShip to production

Under the hood

LayerTechnology
Agent frameworkeve
LanguageTypeScript (strict, ESM), Node 24.x
Chat surfacesSlack via Vercel Connect, the eve dev TUI
Long-form deliverables and briefsNotion (MCP)
Social publishingTypefully (MCP)
Email campaignsResend (MCP)
Shared state and filesVercel Blob
Model accessVercel AI Gateway
Skill reference files and bashVercel Sandbox
Lint and formatUltracite, a Biome preset

Customizing

The agent auto-updates as you edit these files. docs/CUSTOMIZING.md is the full walkthrough, with recipes for adding a specialist, skill, tool, or connection.

To changeEdit
Who is on the teamAdd a directory under agent/subagents/; its description is all the lead sees when routing
The lead's behavioragent/instructions.md
A specialist's craftIts instructions.md and skills/
Voice and banned wordsreferences/banned-words.json in each <surface>-style skill
Approval gatesThe tool lists in each connections/*.ts
What the email agent can reachALLOWED_TOOLS in connections/resend.ts
Modelsagent/agent.ts and each specialist's agent.ts, or /model in the TUI

Specialists don't have to live in this repo. eve's remote agents let the lead delegate to an agent in its own deployment, with its own skills, connections, and release cycle:

ts
// agent/subagents/paid_ads.tsimport { defineRemoteAgent } from "eve";import { vercelOidc } from "eve/agents/auth";
export default defineRemoteAgent({  url: () => process.env.PAID_ADS_AGENT_URL ?? "https://your-paid-ads-agent.vercel.app",  description:    "Plan and write paid search and social ads: audience, offer, and the copy variants to test. " +    "Pass the campaign goal, the audience, the budget, and any brand constraints in the message.",  auth: vercelOidc(),});

Set PAID_ADS_AGENT_URL, and the lead picks the specialist up from its description exactly as it does the local ones. Useful when a specialist needs credentials or a release cycle you'd rather keep out of this repo, such as ad platform access.

Learn more

LinkCovers
Run a marketing team from Slack with eveThe guide to this template, end to end
eve documentationThe framework powering this agent
eve subagentsDelegation, fresh sessions, routing descriptions
eve skillsLoad-on-demand skills and reference files
Human in the loopThe approval gates above
Vercel ConnectNotion, Resend, and Slack credentials

Deeper internals live in docs/ARCHITECTURE.md and agent guidance lives in AGENTS.md.

Related templates