---
sharksapi_version: p-5170884bb3
name: marketing-planner
description: Turn a freeform marketing brief into a distributed annual plan on a SharksAPI Turundusjuht dashboard — orient on the available agent roles, set the shared plan (north-star + anonymous KPIs + pillars), spin up the team, delegate starter work, and build the annual calendar (including the user's event programme). Use when the user says "tee turunduse aastaplaan", "make a marketing plan", "plaani aasta", "jaga tegevused agentide vahel", or gives a goal like "grow traffic 300% with SEO + social + blog + events".
allowed-tools: [get_team_capabilities, set_marketing_plan, create_dashboard, get_team_overview, delegate_to_agents, add_plan_activity, list_plan_activities, submit_draft, read_dashboard]
metadata:
  triggers: [marketing plan, aastaplaan, annual plan, plan the year, distribute tasks, turunduse aastaplaan, jaga tegevused, plaani turundus]
---

# Marketing planner

Turn a freeform brief — e.g. *"make an annual plan to grow website visits 300% using
SEO, social, blog; plus events (programme attached) should get visibility"* — into a
**distributed plan** on a SharksAPI Turundusjuht (manager) dashboard. You orient on the
team, set the shared plan, distribute the work to agents, and lay out the year.

**Use via direct A2A calls:** `POST https://sharksapi.ai/api/v1/a2a` with
`{"jsonrpc":"2.0","method":"tasks/send","id":"1","params":{"tool":"<name>","arguments":{…}}}`.
Never open dashboard URLs in a browser.

**Hard rule — privacy:** KPIs and agents may use only **anonymous** marketing/web data
(sessions, organic clicks, form views/starts/submissions, 3D-tour views, GA4, GSC, Meta,
LinkedIn, Clarity). **Never** tie admission applicant personal data to KPIs or agents.

## Step 1 — Orient

```json
{"tool":"get_team_capabilities","arguments":{}}
```
Returns the agent roles you can use (seo, content, social, paid, events, analytics), what
each does, which data sources are **live** vs missing, recommended skills, and whether a
manager dashboard already exists. **Only plan roles whose data is connected** — if a role
you need is `ready:false` (e.g. paid with no ad account), include it but flag that the
connection must be set up first.

## Step 2 — Set the shared plan

Decompose the brief into a north-star, measurable **anonymous** KPIs (with targets derived
from the goal, e.g. +300% sessions), and one **pillar per channel** you'll use, each with
the owning `agent_keys`.

```json
{"tool":"set_marketing_plan","arguments":{
  "manager_token":"{MANAGER_TOKEN}",
  "north_star":"Grow website visits 300% via organic, social and content; give events visibility",
  "period":"2026",
  "kpis":[
    {"name":"Website sessions","current":null,"target":12000,"unit":""},
    {"name":"Organic clicks","current":null,"target":4000,"unit":""},
    {"name":"Form submissions","current":null,"target":150,"unit":""}
  ],
  "pillars":[
    {"name":"SEO","objective":"Organic growth","agent_keys":["seo"]},
    {"name":"Social","objective":"Channel reach","agent_keys":["social"]},
    {"name":"Blog / content","objective":"Publishing engine","agent_keys":["content"]},
    {"name":"Events","objective":"Event visibility","agent_keys":["events"]}
  ]
}}
```
Leave KPI `current` null — the SEO/analytics agent fills it from GSC/GA4 on its first run.

## Step 3 — Spin up the team (if needed)

If `get_team_capabilities` shows no manager dashboard, `create_dashboard` with role=manager,
then one child `create_dashboard` per pillar role with `manager_token` + `agent_key`. If the
team already exists, skip this and reuse it.

## Step 4 — Delegate starter work

```json
{"tool":"delegate_to_agents","arguments":{
  "manager_token":"{MANAGER_TOKEN}",
  "assignments":[
    {"agent_key":"seo","title":"Keyword + technical baseline","tasks":["Pull GSC baseline","Top-10 keyword gaps","Fix on-page issues"]},
    {"agent_key":"content","title":"Publishing engine","tasks":["Content calendar","First 4 posts"],"depends_on":["seo"]},
    {"agent_key":"social","title":"Channel plan","tasks":["2 posts/week plan","Profiles audit"]},
    {"agent_key":"events","title":"Event visibility","tasks":["Turn each event into posts + newsletter"]}
  ]
}}
```
Use `depends_on` + conditions where order matters (e.g. content waits on SEO keywords).

## Step 5 — Build the annual calendar

Lay activities across the months with `add_plan_activity` (kind: recurring | seasonal | one_time):

```json
{"tool":"add_plan_activity","arguments":{"manager_token":"{MANAGER_TOKEN}","title":"Weekly blog post","kind":"recurring","months":[1,2,3,4,5,6,7,8,9,10,11,12],"channel":"web","agent_key":"content"}}
{"tool":"add_plan_activity","arguments":{"manager_token":"{MANAGER_TOKEN}","title":"Monthly newsletter","kind":"recurring","months":[1,2,3,4,5,6,7,8,9,10,11,12],"channel":"email","agent_key":"content"}}
```

**The event programme** the user gives → for each event, add a `one_time`/`seasonal`
activity in its month AND have the owning agent `submit_draft` the promo content (social
post + newsletter + blog) so it goes through the manager's approval and gets scheduled for
visibility. Link the draft to the activity via `content_draft_id`.

## Step 6 — Report the distribution

Summarise back: the north-star + KPIs (with targets), the pillars and who owns each, the
delegated starter tasks, the annual calendar shape, and any role that needs a connection
before it can run. Then the manager reviews/approves and the agents execute via their
command-center recurring task.
