Content module

The Content module manages campaigns, the publishing calendar, and multi-network social posting. It's the production side of the "create content that drives pipeline" loop — the consumption side shows up in CRM's content-attribution cards.

Entities

EntityWhat it represents
CampaignA themed publishing initiative. Has start/end, goals, target audience, owner.
PostAn individual piece of content. Belongs to a campaign, targets one or more networks, has draft → approved → scheduled → published lifecycle.
Calendar slotA scheduled time + network slot. Holds a post once scheduled.
EngagementA post's measured outcomes — impressions, clicks, replies, shares — fetched from each network.
NetworkLinkedIn, X, Instagram, Facebook, TikTok, etc. — abstracted via Ayrshare.

The calendar view

The default Content dashboard surface is a 14-day calendar grid. Rows are networks, columns are days. Each cell shows scheduled posts or empty slots.

  • Click an empty cell → quick-add a post for that network + day.
  • Click a scheduled post → drawer with full content, target audiences, edit/reschedule/cancel.
  • Drag posts between cells to reschedule.

The agent surfaces a calendar gap card on Today if there are days with no scheduled content per the tenant's cadence target.

The post lifecycle

draft → review → approved → scheduled → published → engaged
                                  ↘ canceled
                                  ↘ failed
StateMeaning
draftBeing written. Not visible outside the author.
reviewSubmitted for approval (multi-author tenants).
approvedReady to schedule.
scheduledHas a calendar slot.
publishedSent to network(s).
engagedHas measured outcomes.
canceledAuthor or admin canceled before publish.
failedPublish attempt failed (network down, content rejected, etc.).

State transitions go through the TASKS namespace — agent-proposed posts land as planned actions, you confirm, they advance.

Agent-drafted posts

Drafting is one of the most-leveraged agent flows:

  1. You ask the orchestrator: "draft a LinkedIn post about our Q3 pricing update."
  2. The orchestrator delegates to a draft_post subagent.
  3. The subagent pulls relevant context (the pricing page, recent posts on similar topics, your brand voice from semantic memory).
  4. Returns a draft with rationale + suggested networks + suggested time.
  5. The proposal lands in your Inbox.
  6. You edit or confirm; on confirm it moves to scheduled.

The brand voice piece is the differentiator. Because tenant- authored skills + promoted memory both feed the SKILLS + MEMORY namespaces, the agent learns "we don't use exclamation marks", "we quote customer logos by initials only", "our posts open with a question" — and applies them consistently.

Multi-network publishing

Ayrshare is the abstraction layer; one API call publishes the same post (or per-network variant) to multiple networks. See Social integration for setup.

Networks have different constraints (character limits, image requirements, hashtag etiquette). The Content module knows them and surfaces per-network previews + warnings before scheduling.

Engagement tracking

After a post publishes, the platform polls Ayrshare's metrics endpoint at increasing intervals (5 min → 1 h → 6 h → 24 h → 7 d). Each poll updates the post's Engagement entity. The Today surface's social_engagement_anomaly card watches for posts performing far above/below the tenant's baseline.

Engagement data feeds back into:

  • Pipeline-to-content attribution — when a deal closes, the agent walks back to see which posts that deal's contacts engaged with during the cycle.
  • Brand voice tuning — high-engagement posts become reference exemplars; the agent learns the patterns.

Campaigns

A Campaign groups posts thematically over a time window. Each Campaign has:

  • Goal (awareness, demand, retention, etc.)
  • Target audience description
  • Owner
  • Posts (many-to-one)

The Campaign view shows posts + cumulative engagement + estimated attribution. Useful for "did the Q4 launch campaign actually move pipeline" retrospectives.

Approvals (cloud Scale tier and up)

For tenants with multiple content authors, post drafts go through a review queue. Designated reviewers see an "Awaiting review" Inbox filter; approving advances to approved state. Required-reviewer counts are tenant-configurable.

Starter tier and self-host treat all members as auto-approvers.

Content × CRM × Analytics

The same cross-module overlap as CRM, from the other side:

  • Content × CRM: which posts touched the deals that closed?
  • Content × Analytics: engagement by topic over time.
  • Content × Memory: posts referencing customer wins that we later promoted into semantic memory.

Read next