{ "id": "brand", "type": "agent" }
{ "id": "legal", "type": "human" }Agent and human nodes
Agent checks and human approvals compose one pipeline through one API. The agent pre-screens the deck before legal signs off on the clause.
Approval flowsBeta
Your users define the steps: who reviews, in what order, what happens on approve or reject. Velt runs the pipeline and records every step.
No more building a workflow engine to close an enterprise deal.
Free tier. No credit card. First comment in 5 minutes.
Approval chain
Approval chain
Committee · quorum step
Threshold: 2 of 3 · Q3 forecast approval
Invoice $22,400: within the $25k pre-approval limit. All policy rules passed.
Approval workflows running inside products at












































What it is
Velt Approval Flows is a workflow engine for review and sign-off, embeddable in your product. Your users define multi-step pipelines through your product’s UI; your product authors them through Velt’s definition API: human reviewers, parallel groups with quorum, and AI review agents, in whatever order the work requires. One workflow execution can carry both actor types, with every override recorded.
override · recorded
Dismissing the agent finding needs a comment — recorded as overrideOfAi by the team lead.
consent visible·both actor types
How it works
Wrap your app, define a workflow as JSON through the REST API, dispatch a run per work item, and record decisions from your own review panel. Signed events stream every transition back to your backend.
npm install @veltdev/react<VeltProvider
apiKey={VELT_API_KEY}>
<YourApp />
</VeltProvider>// define via REST, dispatch a run,
// record decisions from your panel
await velt.workflow.recordReviewerDecision({
executionId, stepId: "legal", decision: "approve",
});A workflow is a JSON-configured graph of steps: agent and human node types, with parallel groups as containers. A definition is a versioned template; each submission dispatches an execution that tracks its own progress. Approve advances; reject follows your declared route, a follow-up step or a bounded revision loop back to the author with prior attempts attached. Routing is static or conditional, with edges carrying sandboxed JSON-AST expressions over step output and dispatch context, no eval. Dispatch is idempotent, so retries never spawn duplicate runs. Every transition is timestamped, attributed, and persisted; HMAC-signed webhooks fire on each, and a polling API replays by sequence number.
// execution.dispatched · step.awaiting-approval · group.quorum-met · step.completed
Teams that build it budget a quarter for the first version and keep paying for the long tail. The 3 steps above replace the first quarter; the capability wall below replaces the long tail.
Skip the steps. Have your agent set it up.
npx -y @velt-js/mcp-installer
claude mcp add velt-installer -- npx -y @velt-js/mcp-installer
npx -y @velt-js/mcp-installer
npx -y @velt-js/mcp-installer
npx -y @velt-js/mcp-installer
Notification channels
Launch approval workflows this week.
No credit card. Works with React, Next.js, Vue, Angular, and HTML.
Capabilities
Each card shows the real mechanics. Toggle to Code for the exact snippet behind it.
{ "id": "brand", "type": "agent" }
{ "id": "legal", "type": "human" }Agent checks and human approvals compose one pipeline through one API. The agent pre-screens the deck before legal signs off on the clause.
{ "type": "group", "quorum": 2,
"cancelOnQuorum": true }Reviewers run simultaneously under an N-of-M threshold; once quorum is met, waiting siblings are released. Two of three sign-offs move the contract without the third calendar.
{ "if": "amount > 25000",
"then": "cfo", "else": "budget-owner" }Edges carry sandboxed predicates over step output and dispatch context, with no code execution. Invoices over 25,000 route to the CFO, the rest to the budget owner.
{ "requiredNodeIds": ["legal", "finance"] }Per-step reviewer lists carry mandatory flags, and quorum groups can name members whose approval is required. Legal and finance must both sign; brand counts as a bonus voice.
{ "slaMs": 86400000,
"onBreach": "escalate" }Per-step deadlines mark a stalled step breached and route it along the escalation edge you define, firing an event. The filing stops sitting because the approver is on vacation.
{ "onReject": "loop-to-author",
"maxIterations": 3 }A rejection loops the run back to the author with every prior attempt and reason attached, capped before escalation. The legal redline returns to the deck writer instead of failing the run.
Force-approved the parked step: reviewer unreachable.
velt.workflow.forceApprove({
step, reason: "reviewer unreachable",
});An operator can force-approve, force-reject, or cancel a parked step, and the audit log separates reviewer decisions from overrides. The contract moves while the reviewer is unreachable, on the record.
// in-flight runs keep v3
// new runs dispatch on v4Every save creates a version; in-flight runs keep the rules they started with, new runs get the current ones. A mid-quarter policy change never breaks an open budget review.
sinceSeqGET /v2/workflow/events?sinceSeq=4210Every transition posts an HMAC-signed webhook with retries, and missed deliveries replay by sequence number from the events API. Your audit pipeline never misses a sign-off.
GET /v2/workflow/executions/exec_8842One call returns a run’s status, pending step, and every recorded decision. Your publishing agent checks the approval state before touching the counterparty’s data.
We had agent and human steps in one pipeline within a sprint. The quorum math and the retries we’d scoped a quarter for were already done.
Staff engineer · contract platform
Little big details
Shipped functionality only. The confirmed set leads; coming-soon items are labeled. This is the part of an in-house build that never ends.
Make it yours
Prebuilt review components for the fast path, headless mode for fully custom approval UIs, and JSON definitions, signed webhooks, and version pinning underneath.
The five prebuilt components (VeltApprovalFlow, VeltApprovalStep, VeltApprovalComments, VeltApprovalActions, VeltApprovalAuditLog), all white-label and themeable, with headless mode for fully custom approval UIs and template variables and dark mode.
<VeltApprovalFlowWireframe>
// your review markup, Velt routes
</VeltApprovalFlowWireframe>JSON workflow definitions with your own node ids and routing, free-form trigger context that edge conditions and agents read, signed event webhooks into your pipeline, version pinning per execution, and definitions scoped to workspace, organization, or document.
legal_gatecfo_signoffamount > 25000velt.workflow.definitions.create(config);
velt.webhooks.subscribe({ events: ["step.*"] });We built the builder UI our PMs wanted on top of Velt’s definition API. The engine, the quorum, and the audit record were the parts we didn’t have to write.
Product lead · agency platform
In production
Tabbed by vertical, with verified customer screenshots.
This Digital Sales Room gives you everything you need to move forward — from proposal to plan.
@Fin We need to make a working demo for Rene and his team
Brand agent first, brand lead second, legal last: every deck and campaign email walks the same chain before the client sees it. A rejection routes back with the redline attached.For sales enablement
finance / receivables
Can we confirm the PO before approving this one? @Sarah
1 ReplyInvoices over the threshold route to the CFO, the filing needs two of three sign-offs, every step timestamped. The auditor’s “who approved this?” has an answer on the record.For fintech and FP&A
Cotton Supplier Ltd.
AgriCotton Farms
Village Kheda, Gujarat, India
SpinCo Yarns
18 Narol Rd, Gujarat, India
DyeWorks International
Calle de Mayo, Mexico
Can you attach the GOTS cert for this lot before we approve? @Sean
1 ReplySign-off on the order, the shipment, the change request, with SLA escalation when the reviewer is off shift. The counterparty sees progress, never your internal debate.For operations
Privacy Risk Review
Wren discovered a feature request in Jira involving users' health data and triggered a review after analyzing the PRD in Confluence against company policy and US regulation.
JStarted by Juan MendezThis feature processes PHI, so HIPAA applies. I recommend a PIA and a vendor BAA review before any data flows. @Juan
The disclosure walks the attestation chain: analyst first, compliance officer second, two of three sign-offs required before it files. A rejection routes back with the control gap attached.For compliance
Superflow
1 · Subscription & Fees
Customer subscribes to the Service on a monthly basis and shall pay the then-current fees in advance of each billing period. Fees are non-refundable except as expressly set out in this Agreement.
2 · Term & Auto-Renewal
The subscription renews automatically for successive one-month terms unless either party gives at least thirty (30) days' written notice of non-renewal before the end of the then-current term.
3 · Limitation of Liability
Except for breaches of confidentiality, each party's total aggregate liability under this Agreement shall not exceed the fees paid by Customer in the one (1) month preceding the event giving rise to the claim.
4 · Governing Law
This Agreement is governed by the laws of the State of Delaware, without regard to its conflict-of-laws provisions, and the parties consent to the exclusive jurisdiction of its courts.
Every contract routes through counsel before it leaves the building, escalating when the reviewer is off shift. The counterparty sees progress, never the internal debate over the redline.For legal
Make the hero headline punchier and add a primary CTA.
Done — rewrote the headline, tightened the subtext, and added a primary CTA in hero.tsx.
Add a logo strip with social proof under the CTA.
Added a five-logo trust strip below the CTA and wired it into hero.tsx.
Ship your app in a weekend
Get startedUse our brand orange on the CTA and cut the headline to one line. @Sean
Agent steps pre-screen generated work, humans hold the gates, and your publishing agent queries the approval state before acting. Nothing the AI produces ships unapproved.For AI-native SaaS
See it running in products like yours.
30 minutes, with an engineer, not a sales deck.
Related primitives
Agent steps, the recorded chain, and the nudge that keeps reviewers moving.
An agent step invokes them; findings land as comments inside the workflow.
An agent step invokes a review agent: findings land as comments.
Every transition is already a record; the workflow’s full history is the export.
The pipeline only completes if reviewers see their turn.
Sarah, it's your turn to approve
reviewers see their turn · the pipeline completes
Comment content at workflow steps can live on your infrastructure via the self-host data provider, with only minimal identifiers on Velt. Flow metadata is stored in a configurable region, encrypted at rest, and client-side encryption keys are available before data leaves the browser. See self-hosting and governance.
Book DemoProof
“Build us a workflow engine” stopped blocking our deals.
1 enterprise deal
The customer demanded a multi-step approval engine before they would sign. We shipped it on Velt instead of building one, and closed the quarter.
2 of 3
Our close week needs quorum sign-off on every filing. Two-of-three with required members was a config change, not a project.
0 spinners
Agent steps pre-screen generated work and humans hold the gates. Our users watch the pipeline instead of trusting a black box.
FAQ
Install @veltdev/react, wrap your app in VeltProvider with your API key, and define a workflow as JSON through the REST API. Dispatching against a work item creates an execution that routes itself; your review panel records decisions through the decision API.
Yes. Agent is a node type: it runs automatically when the workflow reaches it and reports pass or fail with a findings summary that downstream routing reads. For human judgment on agent output, a human step downstream holds the gate.
Yes. A step declares its reviewer list with mandatory and optional members, and a parallel group runs steps simultaneously with an N-of-M threshold that can require specific approvers. When quorum is met the group resolves and remaining assignments are released; resolving "whoever is on call" happens in your backend, which passes the chosen userIds in.
Per-step SLA timers. If no action lands within the configured duration, the step is marked breached and routes along the escalation path you define, and a breach event fires so your backend knows.
You decide per step: route the run to a follow-up step, or loop it back to the author with every prior attempt and rejection reason attached, capped at a set iteration count with an escalation route when the cap is hit. Every human step must declare a reject path; the engine refuses definitions with silent dead-ends.
No. Every save creates a new version; in-flight executions keep the version they started on, and new runs use the current one. Updates are guarded against concurrent edits, and prior versions are snapshotted.
Every transition creates a timestamped, attributed event: who was asked, who acted, what they decided, and whether an admin overrode a reviewer. The full chain per run is queryable through the events API. See /audit-trail.
No. Velt ships the engine, the definition APIs, and the review-surface components; you build the builder UI that fits your product, and your users define workflows through it.
Beta means the feature is real and running in production with two caveats: API contracts may still change between releases, and access requires being added to the beta list. Ask through Book Demo or your existing Velt contact.
Velt is priced on usage, not seats: you pay for documents with review activity in a month, and there is a free tier for development and early production. Approval flows are part of the SDK, not a separately priced add-on.
Free tier. No credit card. First comment in 5 minutes.
30 minutes, with an engineer, not a sales deck.
@Jordan Auto-renewal needs 60 days' notice to match our policy, not 30.
@Maya Liability cap is one month of fees — Legal wants 12 months before we sign.
@Maya Governing law should be New York to match the MSA.