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 skipIdea
A one-line thing worth writing about. Ideas live in Planning, in the Library view.
Where they come from, as recorded on each idea:
| Source | Meaning |
|---|---|
commit | Mined from git history |
vault | Mined from a notes folder |
manual | You typed it |
research | Generated from a tracked video |
import | Pushed through the API or MCP |
backfill | Created by a historic backfill |
Statuses:
| Status | Meaning |
|---|---|
new | In the inbox, not triaged |
shortlisted | Kept for later |
promoted | Turned into a draft |
dismissed | Not 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.
| Status | Meaning |
|---|---|
draft | Being worked on. The only status you can edit freely from |
approved | You signed off. Now it can be scheduled |
scheduled | Has at least one slot booked |
published | Went out |
rejected | Killed. 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.
| Status | Meaning |
|---|---|
pending | Waiting for its time |
publishing | In flight right now |
published | Done |
skipped | You cancelled it |
failed | It 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
pendingslot 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
| Step | Who |
|---|---|
| Mining ideas from commits | Automatic, if you run the CLI |
| Generating ideas from research | You click a button |
| Writing a draft | AI, on your click |
| Approving | You. Always |
| Scheduling | You. Always |
| Publishing at the slot | Automatic |
| Posting an outreach comment | You, by hand. Postlyra never posts these |
| Replying to a DM | You type it, you click send |
| An automation's DM reply | Automatic, sending text you wrote and activated |
| Syncing metrics | Automatic, nightly |