Skip to Content
Activity TypesActivity Types

Activity Types

An activity type is the kind of deliverable an agent produces for a tenant during a monthly execution cycle. The deliverable planner selects which types to include based on the tenant’s plan tier, connected channels, and strategy goals. The activity planner then schedules individual activities (one per deliverable) for each period.


All Types

TypeLabelAgent QueuePlanCredits/unitMonthly Range
backlinksBacklink Researchbacklink-researcherPro11
blog_postSEO Blog Postblog-writerFree+22–8
content_briefSEO Content Briefcontent-brief-writerFree+11 per blog_post
gbp_postGBP Postgbp-post-writerFree+14–12
keyword_clusterKeyword Research Clusterkeyword-researcherFree+11
social_postSocial Media Postsocial-post-writerFree+18–30
social_calendarSocial Media Calendarsocial-calendar-plannerFree+11
email_newsletterEmail Newsletteremail-writerFree+21–4
landing_pageLanding Page Copylanding-page-writerPro30–2
google_ads_copyGoogle Ads RSA Setgoogle-ads-writerPro21–3
meta_ads_copyMeta Ads Copy Setmeta-ads-writerPro21–3
monthly_reportMonthly Performance Reportreport-writerPro21

HITL Gate Summary

TypeDM GateClient GateAuto-approve
backlinksYes — campaign ready for outreach (→ /seo/link-building)No
blog_postYes — copy reviewYes — final approvalNo
social_postYes — copy review + design sign-offYes — final approvalNo
content_briefYes
gbp_postYes
keyword_clusterYes
social_calendarYes
email_newsletterYes
landing_pageYes
google_ads_copyYes
meta_ads_copyYes
monthly_reportYes

Dependency Graph

keyword_cluster └──→ content_brief └──→ blog_post social_calendar └──→ social_post (each slot)

All other types are independent.


Key Rules

  • blog_post always requires a paired content_brief — planner includes 1 brief per blog post.
  • social_post always requires a paired social_calendar — planner includes 1 calendar per month if social posts are planned.
  • google_ads_copy and meta_ads_copy require the corresponding ad platform to be listed in the tenant’s connected channels.
  • social_post and social_calendar do not require connected channels — content is drafted first, published once channels are connected.
  • Free-tier types: all types except landing_page, google_ads_copy, meta_ads_copy, monthly_report.

Data Model

Note: backlinks activities create a Campaign record (via Campaign.activityId). The Campaign→Activity link is a raw String field with no Prisma @relation — always query db.campaign.findFirst({ where: { activityId } }) separately; you cannot eager-load it via include.


Data Model

Each activity type maps to these database records:

RecordPurpose
DeliverableTemplateMonthly quota for a type (e.g., “4 blog posts/month”) — created by deliverable-planner
ActivityA single execution task queued to an agent — created by activity-planner
DeliverableClient-facing status record linking the activity to the content output — created by activity-planner
Content recordType-specific record (e.g., BlogPost, SocialPost) — created by the content agent worker

Plan Tier Map

DB plan nameTier
starter0 (free)
growth0 (free)
professional1 (pro)

Defined in packages/agents/src/workers/strategy.worker.tsPLAN_TIER.

© 2026 Leadmetrics — Internal use only