Multi-round approvals with AI helpers.
A real review workflow — draft, submitted, in-review, decided, reopened, superseded. Per-file approve / changes / reject. Threaded comments with severity. Annotation overlays. Plus three AI helpers that summarise changes, summarise comments, and estimate approval readiness.
What this app solves.
Approvals happen in email and Slack threads that no one can find later. Frame.io is too narrow for a full creative pipeline. Half the time, "approved" means "the latest message was a thumbs-up emoji."
- 01 No clear handoff between artist and approver
- 02 Comments scattered across DMs and screenshots
- 03 Which version was approved? — unanswerable a week later
- 04 Approvers have no idea what changed since the last round
Built for the way teams actually work.
Multi-round workflow
Reviews have explicit states — draft, submitted, in-review, decided, reopened, superseded. Every transition is logged. There's always one answer to "where is this in the process?"
Per-file decisions
One review can hold many files. Each one gets its own decision — approve, request changes, or reject. Aggregate into the review's decision automatically.
Threaded comments with severity
Comments are threaded and severity-tagged — normal, critical, minor. Resolve or reopen each one. The thread is the audit log.
Annotation layer for visual feedback
Draw on the file preview. Markup overlays sit on top of the asset so feedback points at exactly what the reviewer means.
Three AI helpers
Summarise what changed between rounds. Summarise the comment pile. Estimate approval readiness. Each is an MCP tool — usable inside the product or from your own agent.
Native MCP. Full REST.
Every endpoint Layerline uses internally is yours. Call it from an agent, from a CI step, from your DCC plugin. No vendor SDK, no rate-limit surprises.
// Submit a per-file decision
await client.callTool({
name: "mcp__layerline__submit_file_decision",
arguments: {
reviewId: "rev_44ab",
fileId: "f_8s3m1",
decision: "changes_requested",
note: "Spec map reads as plastic in the third pass.",
},
});
// Ask the AI what changed since last round
const summary = await client.callTool({
name: "mcp__layerline__generate_review_change_summary",
arguments: { reviewId: "rev_44ab" },
});
The rest of the platform.
Asset Management
Every asset has a status, an output tag, and a comment thread. Override which task types complete which outputs per asset. Get AI naming and tagging suggestions when you create something new.
App · TasksTask Management
Create, update, and archive up to 200 tasks per call. Track active time with a billable flag. Link tasks to milestones and custom statuses per project. Sync from Notion when you already work there.
App · StorageLayerline Storage
Lock the file you're working on, restore any prior version, share with a public or password-protected link, and keep cloud and desktop in sync via a Rust engine — without paying for a separate version-control product.
One OS. Every app. Yours.
Start free. No credit card, no procurement loop. Scale to a studio when you're ready.