All docs
Automate

Projects: let the agent plan, run and monitor a campaign over weeks

TL;DR

A project is a goal over a period (for example a holiday push on Google Ads and Meta with a budget and a CPA target). You describe it, answer a few questions, review the plan the agent writes, and activate it: dated tasks run on their day, recurring items become schedules, and an overseer agent checks the numbers and runs the optimization. Projects is open to every workspace.

Create a project

  1. 1Projects → New project. Name it, describe the goal, pick the accounts (the same picker as a task), the period, the budget, the campaigns it covers (optional) and the KPIs (for example cost per conversion at most 25).
  2. 2Direct the agent (optional): write where it should optimize and what it must protect, pin skills from your library, create a new skill in a popup (the agent can draft it from a rough idea) or save your direction as a skill, and choose approvals — ask before every change (the default) or auto-approve ordinary changes.
  3. 3Clarify: the agent asks up to five questions only when the answer changes the plan (budget split, which campaigns, report cadence). Answer what you can — every answer is optional.
  4. 4Plan: the agent writes an editable plan. This takes 40–90 seconds; the page shows each step while it works.
  5. 5Review: open the Plan tab — move items, change dates or goals, add or delete items. Nothing has run yet.
  6. 6Activate: dated tasks, schedules and the overseer start. Until you press Activate, nothing runs.

Plan items and what runs when

  • Dependencies: an item can wait for others. A task that waits stays queued; a recurring item's schedule stays paused until every item it waits for is done.
  • Every task the project starts carries the project's context (goal, period, budget, KPIs, recent results) and shows in Task history like any other task.
  • Every change on an AD PLATFORM (budgets, bids, campaigns, ads, audiences), an email send and a plan change goes through the normal approvals: by default each one waits for a person; with the project's auto-approve on, ordinary ones apply inside the workspace's guardrails.
KindWhat it isWhen it runs
TaskOne agent task with a full instructionOnce, on its start date at 9:00 in the project's time zone (at activation when it has no date)
RecurringA repeated agent task (a schedule)On its cron in its time zone, for the project's period
MilestoneA dated markerNever — you mark it done
ChecklistA manual item for a personNever by itself — you mark it done, or start a task for it

Direct the agent: direction, skills and approvals

  • Direction: free text on where to optimize, what to protect and what to avoid (for example "focus on Performance Max; never pause brand campaigns"). It shapes the plan, it travels with every task the project runs, and it outranks the overseer's default playbook.
  • Skills: pin up to ten skills from your Skills library — each one loads on every task the project runs and the plan uses them. Or press "Save direction as a skill" to keep your direction as a new skill you can reuse on other projects and tasks.
  • Approvals: "Ask me before every change" (the default) puts every change — on a platform, an email send, a budget move and every plan change — in an approval card. "Auto-approve ordinary changes" lets them apply inside the workspace's spend caps and guardrails; deletes, live sends, code and other changes a person must decide still wait for a person whatever the setting.
  • Change any of them later from the project page (Agent settings). Every task the project runs — its plan items, its schedules and the overseer — follows the new setting; turning auto-approve on or off is recorded in the audit log.
  • The agent behind a project is your ORCHESTRATOR: the questions, the plan and the overseer's decisions run on the model chosen for the Orchestrator on the Agents page — the same model every task the project runs plans with. Change it there; the project page shows which model it uses.
  • The tasks of a project share its context and memory: the goal, budget, KPIs and direction, the latest numbers of every channel, the recent results of the other plan items and the overseer's notes, plus the accounts' own memory.

The overseer agent

Each active project has one overseer: an agent loop that wakes on its own, reads the project's accounts and the results of its recent tasks, compares them with the KPIs and the budget, and reports progress. You can run it now from the Overview (once per 30 minutes).

The overseer runs the project's marketing: it reads the reports and data of every channel, moves budget between campaigns and channels within the project budget, adjusts bids, statuses and creatives, plans and sends email campaigns (Klaviyo or HubSpot when connected) and sends the team its reports.

It adjusts the PLAN too: it adds items and changes existing ones (dates, goals, a recurring item's schedule, pausing or resuming it). Like every other change, a plan change waits for approval unless the project's auto-approve is on. Every applied edit is recorded on the Activity tab with what changed and its reason, and an admin or editor can undo it there. Removing an item and marking a milestone done stay a person's.

With auto-approve off (the default) its budget shifts, bid changes, pauses, new creatives and email sends are proposals, each in an approval card; with it on, ordinary changes apply inside the workspace's guardrails and the rest still wait for a person.

Its playbook uses these thresholds:

RuleValue
CPA above the target × 1.2 for the set number of days → propose a budget shift or a lower bid / target CPA1.2
ROAS below the target × 0.8 → the same0.8
CPA at or below the target × 0.8 → room to scale0.8
ROAS at or above the target × 1.2 → room to scale1.2
A signal must hold for 3 days3
At least 5 conversions before judging CPA / ROAS5
At least 200 clicks before judging CTR200
Spend above 110% of the expected spend to date → propose caps110
Spend below 85% of the expected spend to date → propose raises85
No conversion and spend above 2 × the target CPA → propose pausing2
Without a CPA target: no conversion and spend above 5% of the budget → propose pausing0.05
CTR down 30% vs the previous period → creative fatigue30
Frequency above 4 (Meta / TikTok / Snapchat) → creative fatigue4
One proposal moves at most 20% of a budget20
One proposal changes a bid by at most 15%15
Next check within 6 hours when a write waits or pacing is off6
Next check within 12 hours when a threshold fired12
Next check after 24 hours when everything is on track24

The tabs and what the numbers mean

  • Overview: the period, the overseer's next check and last decision, the KPI scorecards (actual vs target and the trend vs the previous equal period), spend vs budget (expected by today and projected at the end), what needs attention, and what runs next.
  • Performance: every channel (one row per platform and currency) and every campaign, with the change vs the previous equal period, and a daily trend. A channel that could not be read shows its error; a platform without a campaign read says so; a read that worked with no rows shows 0 — no activity.
  • Plan: the timeline (a Gantt on a computer, an agenda on a phone), the items list and recent runs.
  • Activity: approvals waiting, the overseer's decisions, every run and the project's changes.
  • Partial numbers: when an account could not be read, a read was cut short, or a channel cannot be narrowed to the project's campaigns, the numbers are shown but pacing and KPIs say “Partial — not judged”.
  • Whole account vs campaigns: when the project names campaigns, the numbers cover those campaigns only; otherwise the whole account.
  • Currencies are never added together: totals are shown per currency.
  • The comparison with the previous period uses only the accounts read in both periods.

Pause, archive, delete

  • Pause stops the project's schedules and its overseer; Resume starts them again.
  • Archive pauses everything and makes the project read-only; Restore brings it back paused.
  • Delete cancels the overseer and deletes the project's schedules and plan. Tasks that already ran stay in Task history.

Permissions

  • Admins and editors create and change projects, refresh the numbers and run the overseer.
  • Edit accounts, KPIs & budget (next to the project's facts) changes the project's accounts, KPIs, budget, campaigns and period; platforms follow the selected accounts. A fix in “Before this plan can run” about an account or a KPI opens it at that field. The plan is re-checked only when the period or the accounts change.
  • Members read every project.
  • Every change is recorded in the audit log.

Projects over MCP and the REST API

Agents (over MCP) and your own systems (the REST API) can work with projects — see the API reference for the arguments. Reads need the tasks:read scope, changes tasks:write; the change is made as the key's creator (or the connected app's approver) with their current role — admins and editors change, members read.

MCP tools: projects__list (the workspace's projects with status, progress and the next action; tasks:read); projects__get (one project: its plan, KPIs, budget, cross-platform numbers and recent runs; tasks:read); projects__create (create a draft project (nothing runs); tasks:write); projects__generate_plan (write the plan for review (a draft only); tasks:write); projects__activate (activate a reviewed project (its schedules, tasks and overseer start); tasks:write); projects__pause (pause the project's schedules and overseer; tasks:write); projects__resume (resume them; tasks:write); projects__add_item (add a plan item; tasks:write); projects__update_item (change a plan item (dates, goal, dependencies); tasks:write); projects__status (a compact status: progress, KPIs, pacing, per-channel numbers; tasks:read); projects__activity (the project's activity: overseer decisions and notes, agent plan edits, runs, the audit trail (paged); tasks:read); projects__refresh_numbers (re-read the project's cross-platform numbers (read-only on the platforms; costs credits); tasks:write); projects__wake_overseer (run the overseer now (at most once every 30 minutes per project); tasks:write); projects__archive (archive the project (pauses everything; read-only until restored); tasks:write); projects__restore (restore an archived project (it comes back paused, or as a draft); tasks:write).

REST: GET /api/v1/projects (tasks:read); POST /api/v1/projects (tasks:write); GET /api/v1/projects/{projectId} (tasks:read); POST /api/v1/projects/{projectId}/plan (tasks:write); POST /api/v1/projects/{projectId}/activate (tasks:write); POST /api/v1/projects/{projectId}/pause (tasks:write); POST /api/v1/projects/{projectId}/resume (tasks:write); POST /api/v1/projects/{projectId}/items (tasks:write); PATCH /api/v1/projects/{projectId}/items/{itemId} (tasks:write); GET /api/v1/projects/{projectId}/activity (tasks:read); POST /api/v1/projects/{projectId}/refresh (tasks:write); POST /api/v1/projects/{projectId}/wake (tasks:write); POST /api/v1/projects/{projectId}/archive (tasks:write); POST /api/v1/projects/{projectId}/restore (tasks:write).

Monitoring: get and status carry the project's approval setting (autoApprove), its overseer's live state (active, paused or stopped, with the next check) and the credits it has used. The activity tool is one newest-first timeline of the overseer's decisions and notes, the agent's plan edits, the runs and the audit trail (audit rows carry ids, names and outcomes only — never arguments or bodies); page it with before = the previous page's nextBefore. GET /api/v1/tasks?projectId=… (and &itemId=…) lists the tasks the project ran; get_task / GET /api/v1/tasks/{taskId} adds the task's project and plan item, what waits for a person's approval, the task page to review it on (reviewUrl) and its steps — never their arguments or results.

Changes need the tasks:write scope and an admin or editor behind the credential (the key's creator or the connected app's approver, with their current role) — a member's credential reads only. A credential whose writes wait for a person (a third-party connected app's default) has its project change QUEUED for approval: the answer is 202 with a requestId and a statusUrl, nothing changes yet, an admin or editor approves or rejects it on API & MCP → Write approvals (the request names the project, the operation and the fields it sets), and once approved it runs as that person with the project's rules of the moment. Poll GET /api/v1/requests/{requestId} (MCP: raw_request_status), or set a webhook for write.queued / write.decided. A retry with the same Idempotency-Key returns the same request. Asking to create a project with auto-approve on is still refused (403). Running the overseer by hand is allowed once every 30 minutes per project (429 with Retry-After otherwise); refreshing the numbers needs credits (402 otherwise). Deleting a project is done in the app only.

These follow the same rules as the page: a plan is reviewed before activation, and every change follows the project's approval setting — by default each waits for approval, and auto-approve is switched on only in the app by an admin or editor. A change from a credential whose writes wait for approval is queued for a person, never refused.

Frequently asked questions

Does a project change my campaigns by itself?
Only if you turn on the project's auto-approve. By default every change — on an ad platform, an email send, a budget move or the plan — waits for an approval in the normal flow. With auto-approve on, ordinary changes apply inside the workspace's guardrails; deletes, live sends and other changes a person must decide still wait. Applied plan changes are listed on the Activity tab with their reason and can be undone.
How do I tell the agent where to optimize?
Write it in Direction (on the New project form, or Agent settings on the project page) and pin the skills it should follow — or save the direction itself as a skill. The plan, every task the project runs and the overseer read them.
What if a number shows “Partial — not judged”?
An account could not be read, a read was cut, or a channel cannot be narrowed to the named campaigns. The Performance tab says which; refresh once it is fixed.
Can I edit the plan after activating?
Yes. Edit, move, add or delete items on the Plan tab; schedules and queued tasks follow.

Related