Skip to content

Core concepts

Four objects, in a line. Understanding them explains most of the product.

Idea ──promote──► Draft ──approve──► approved ──schedule──► Slot ──tick──► published

                                                             └─ failed ─► retry or skip

Idea

A one-line thing worth writing about. Ideas live in Planning, in the Library view.

Where they come from, as recorded on each idea:

SourceMeaning
commitMined from git history
vaultMined from a notes folder
manualYou typed it
researchGenerated from a tracked video
importPushed through the API or MCP
backfillCreated by a historic backfill

Statuses:

StatusMeaning
newIn the inbox, not triaged
shortlistedKept for later
promotedTurned into a draft
dismissedNot doing it

An idea also carries a format (linkedin, reel, carousel, video) and a pillar.

Everything that pushes ideas from outside, the CLI and MCP, creates them at new. Nothing external can move one past that.

Draft

The actual content. Drafts live in Planning, in the list and calendar views.

StatusMeaning
draftBeing worked on. The only status you can edit freely from
approvedYou signed off. Now it can be scheduled
scheduledHas at least one slot booked
publishedWent out
rejectedKilled. Recoverable back to draft

Types: linkedin, instagram, carousel, reel, video.

The approval gate

There is no transition from draft straight to scheduled or published. Approval is the only way out of draft toward publishing, and it exists in exactly one place in the code so it cannot be bypassed.

The one exception is Mark posted, which moves a draft to published because you posted it by hand somewhere. It records reality, it does not publish anything.

Schedule slot

A booking: this draft, on this account, at this time.

StatusMeaning
pendingWaiting for its time
publishingIn flight right now
publishedDone
skippedYou cancelled it
failedIt went wrong

One approved draft can have several slots, which is how cross-posting works: the same draft to Instagram and Bluesky at different times, with different captions.

How publishing actually runs

A scheduler ticks every minute and dispatches due slots. Each publish is a background job with 3 attempts and increasing backoff.

Why a failed slot never double-posts

A slot moves to publishing before any network call, and the connector writes a journal entry immediately before the irreversible "go live" call.

So if a retry finds a slot where the commit was attempted, there was no clean failure, and no post id came back, it does not publish again. It fails the slot and asks you to verify manually. Posting twice is worse than posting late.

On failure, the draft stays scheduled rather than reverting, so you can inspect and retry.

Recovering a failed slot

In the Queue:

  • Retry puts it back to pending. It does not re-run immediately, the next tick picks it up.
  • Skip marks it skipped. One-way.
  • Reschedule moves a pending slot to another time. It refuses a time already booked for the same account.

Brand and account

Brand is a workspace: its own profiles, drafts, connections, queue, metrics, contacts. In the API and in code a brand is called a team.

Account is the billing container. One subscription, owning one or more brands. How many comes from the brands allowance on your plan.

There is no account switcher, only a brand switcher, because you only ever have one account.

Content profile versus persona

Both feed the AI, and they are different things.

Content profile is per brand, and there can be several. Voice guide, pillars, accent colour, handle, default carousel template. It is picked per idea and per draft.

Persona is one per brand, set in Settings. Your niche, your audience, what to avoid. It grounds everything.

Rule of thumb: persona is who you are, content profile is how you sound.

Timezones

Two of them, deliberately.

Posting schedule timezone, set per brand in Settings, decides when your posts go out. This is the one you care about.

Deployment timezone is what the background jobs run in. It affects when metrics sync and when scans run, not when your content publishes.

What is automatic and what is not

StepWho
Mining ideas from commitsAutomatic, if you run the CLI
Generating ideas from researchYou click a button
Writing a draftAI, on your click
ApprovingYou. Always
SchedulingYou. Always
Publishing at the slotAutomatic
Posting an outreach commentYou, by hand. Postlyra never posts these
Replying to a DMYou type it, you click send
An automation's DM replyAutomatic, sending text you wrote and activated
Syncing metricsAutomatic, nightly

Postlyra, by MAVA Design