Your agents draft the payout, send the customer email, file the claim. Ratifia pauses the steps that matter for a human decision — then resumes your workflow with the verdict in hand. It runs on top of the engine you already use and never touches your code. Reviewers get whatever context the decision needs — the prompt, the tool call, the data at stake — before they approve.
Private beta — book 15 minutes and you're in with a key + SDK access.
one call inside your workflow · no infrastructure to run · every decision audited
verb to sign off on what your AI does — approve the action before it ships.
A play on ratify — to give something your formal stamp of approval.
// pause a step in the workflow you already run
const decision = await ratifia.awaitApproval(ctx, {
policy: "payouts-over-5k",
route: { role: "finance", quorum: 2 },
context: { blocks: [ aiOutput, toolCall, balanceDiff ] },
});
if (!decision.approved) return escalate();
// ...resumes here once a human decidesSame one call — ratifia.awaitApproval — across payouts, patient care, or a production change. The right panel is an example of what a reviewer can see — a free-form context payload carrying whatever the decision needs. Inngest, Temporal, and Hatchet never show this.
The big picture
Your engines and agents propose consequential actions. Ratifia holds each one for a human, then routes the verdict to wherever your reviewers already work.
The surfaces are where a person is asked — not where the action goes. Ratifia routes the decision out, waits, then resumes your workflow with the verdict.
The approval lifecycle
Every human checkpoint runs the same path — from “does this even need a person?” to your workflow picking back up.
A declarative policy — or AI triage — decides. AI proposes, policy bounds. No hard-coded if.
Send to a person, role, or group — with M-of-N quorum so no single sign-off clears a big call.
The reviewer gets whatever the decision needs — prompt, reasoning, the tool call, the data at stake — not a bare “approve?” button.
Approve or reject in the dashboard or by email today — Slack, DocuSign, and others next.
Your workflow continues with the verdict — no polling, no glue code, no lost state.
Built for AI engineers
Everything below is what the product is for. Where we’re not done yet, we say so — plainly.
Pause any AI step for a human decision and resume with the verdict in hand — one call inside the workflow you already have.
The human layer on top of Inngest today. Temporal, Trigger.dev, and Hatchet adapters are next. It never executes your code.
Attach whatever the reviewer needs — the prompt, the tool call, the records at stake, your own fields. A free-form context payload, not a bare yes/no.
Send a decision to a person, role, or group with M-of-N approval. Automatic escalation when no one acts is on the way.
Declarative policy decides when a human is required — by amount, risk, or AI triage — with a mandatory floor the AI can't undercut.
Who, what, when, and the full AI context — every decision recorded for compliance, with per-org retention.
Decision surfaces
The binding decision can happen on any of these. Two are live now; two are close behind.
A reviewer queue with the full context inline.
ShippedSigned approve / reject links, no login needed.
ShippedApprove from a Slack card with the context attached.
In the pipelineAudited e-signature for decisions of record.
In the pipelineBook 15 minutes and we'll set you up with a key and SDK access — no waitlist.
Not ready to talk? Leave your email and we'll reach out.