This project showcases an autonomous, multi-agent virtual marketing team built with CrewAI. It automates the creation of a high-quality, end-to-end marketing strategy — from research to copywriting — using task delegation, web search, and creative synthesis.
Tip
✨ No configuration needed — run it with a single command.
- Docker Desktop 4.43.0+ or Docker Engine installed.
- A laptop or workstation with a GPU (e.g., a MacBook) for running open models locally. If you don't have a GPU, you can alternatively use Docker Offload.
- If you're using Docker Engine on Linux or Docker Desktop on Windows, ensure that the Docker Model Runner requirements are met (specifically that GPU support is enabled) and the necessary drivers are installed.
- If you're using Docker Engine on Linux, ensure you have Docker Compose 2.38.1 or later installed.
docker compose up --buildThat’s all. The agents will spin up and collaborate through a series of predefined roles and tasks to deliver a complete marketing strategy for the input project.
By default, this project uses Docker Model Runner to handle LLM inference locally — no internet connection or external API key is required.
If you’d prefer to use OpenAI instead:
-
Create a
secret.openai-api-keyfile with your OpenAI API key:sk-... -
Restart the project with the OpenAI configuration:
docker compose down -v docker compose -f compose.yaml -f compose.openai.yaml up
Give it a company and a project description — the agents will collaborate to produce a full marketing strategy:
- “Research the market landscape around CrewAI’s automation tools.”
- “Understand the target audience for enterprise AI integrations.”
- “Formulate a high-impact marketing strategy with KPIs and channels.”
- “Propose 5 creative campaigns tailored to tech decision-makers.”
- “Write compelling ad copy for each campaign idea.”
From strategy to storytelling, the team handles it all — autonomously.
You can customize the tasks to use your own domain and project description — just edit the inputs in src/marketing_posts/config/input.yaml.
| Agent | Role | Responsibilities |
|---|---|---|
| Lead Market Analyst | 🧠 lead_market_analyst | Performs in-depth research on the customer, competitors, and audience. |
| Chief Marketing Strategist | 🎯 chief_marketing_strategist | Designs the complete marketing strategy using team insights. |
| Creative Content Creator | ✍️ creative_content_creator | Writes compelling ad copy based on campaign ideas. |
| Chief Creative Director | 👑 chief_creative_director | Reviews and approves all outputs for alignment and quality. |
| File/Folder | Purpose |
|---|---|
compose.yaml |
Defines service orchestration. |
Dockerfile |
Builds the container environment. |
src/config |
Contains the agent, task definitions, and task inputs. |
src/*.py |
Main program and crew definition. |
flowchart TD
subgraph Input
input[(input.yaml<br/>customer & project)]
end
subgraph Agents
A1[(🧠 Lead Market Analyst)]
A2[(🎯 Chief Marketing Strategist)]
A3[✍️ Creative Content Creator]
end
subgraph Task
T1[🔍 Research Task]
T2[📘 Project Understanding Task]
T3[(📊 Marketing Strategy Task)]
T4[(💡 Campaign Idea Task)]
T5[(📝 Copy Creation Task)]
end
subgraph AI Tools
MCP[(MCP Gateway<br/>DuckDuckGo Search)]
LLM[(Docker Model Runner<br/>LLM Inference)]
end
input --> T1
input --> T2
T1 -->|assigned to| A1
T2 -->|assigned to| A2
T3 -->|assigned to| A2
T4 -->|assigned to| A3
T5 -->|assigned to| A3
A1 --> MCP
A2 --> MCP
A1 --> LLM
A2 --> LLM
A3 --> LLM
T1 --> T3
T2 --> T3
T3 --> T4
T3 --> T5
T4 --> T5
T5 --> Output[(📄 Final Deliverables<br/>Copy + Strategy + Campaigns)]
- The LangGraph-based agent transforms questions into SQL.
- PostgreSQL is populated from a SQLite dump at runtime.
- All components are fully containerized for plug-and-play usage.
To stop and remove containers and volumes:
docker compose down -v