Workflows
State machines for documents, not tickets.
Every document type has its own workflow. Each transition decides who can run it, whether AI is involved, and what gets snapshotted.
Shape
An article is not a planning item.
A solo operator runs Draft → Published. A 400-reporter newsroom runs the long version: Draft → Sub-edit → Legal → Categorise → Done → Schedule → Published, with role gates on Legal and Schedule, a confirm prompt before Published, and an AI translation on the way to Done.
Per-document-type means an article carries one lifecycle, a planning item another, a newswire item a third. They share the editor, the collaboration layer, and the webhook system. Their workflows are yours to define.
Transitions
Five things a transition can be.
Combine them. A Sub-edit → Legal transition can be role-gated to legal, confirm-prompted, and version-bumping, with no AI. A Draft → Translated transition can be AI-bound, version-bumping, and open to any author. The shape of the workflow is yours.
- Human-onlyNo automation, just a button.
- Role-gatedRestricted to one or more roles.
- Confirm-promptedAre-you-sure dialog before it runs.
- Version-bumpingWrites a new version on transition.
- AI-boundRuns an AI operation as part of the move.
AI operations
A prompt, some inputs, and a place to land.
textPatch produces a patch the editor can apply without flattening marks, so a translation keeps your bold and your links. inputPath writes to a single field, so a “rewrite the headline shorter” operation updates exactly that. The snapshot lets you roll back one operation, not the whole document.
- PromptSystem + user prompt, with document context.
- InputsTarget language, audience, tone - collected at trigger time.
- Output targettextPatch to the body, inputPath to a meta field.
- SnapshotAlways taken before the model runs.
- AdaptersOpenAI, Anthropic, Mistral, OpenAI-compatible.
In the editor
What the operator sees.
One operation, declared once, bound to any transition. The user picks the language at trigger time; the operation writes the translated text and updates meta.lang in the same atomic step.
Translate article
Bound to the Translate transition on every article workflow.
meta.lang in the same atomic step.Snapshots
Roll back one AI move, keep the rest.
Every AI operation snapshots the document first. If the model gets the tone wrong, restore the snapshot and rerun, or restore and write by hand. The snapshot on usable is the one that flows into your downstream systems through signed webhooks. What you signed off on is what they get.
Next step