Human-in-the-loop for legal products

A lawyer signs it, not the model.

The supervising attorney signs off from their phone, and you keep a record of who approved what.

How do legal AI products get an attorney to review output before it goes out?

Pushary lets legal AI products get a named attorney to review output before it goes out. Put one call before the filing, the client letter or the advice. The attorney approves it, sends it back or stops it. You can also ask them to type corrected text instead. Your agent waits for that answer. If nobody answers in time, nothing is sent. Each answer is saved with the reviewer and the time, the evidence a supervision duty asks for.

What needs a yes

The calls that should not be automatic

fileDocument(matterId, draft)
A filing is a deadline and a public record at once. There is no way of undoing one that costs nothing.
sendToClient(matterId, letter)
Once advice reaches a client, they act on it. That is the moment a draft becomes something a person relied on.
acceptContractTerms(dealId, redlines)
Accepting the other side's wording means agreeing to it. The model can spot the change. It cannot decide whether your client is willing to live with it.
answerLegalQuestion(query)
The gap between summarizing a document and giving advice is the gap a supervising lawyer exists to stand in.

The code

One call inside the step you already have

Wrap the action, not the whole agent. Everything the agent does that is safe keeps running without asking anyone.

bash
npm i @pushary/server
one call
import { createPusharyServer } from "@pushary/server"

const px = createPusharyServer({ apiKey: process.env.PUSHARY_API_KEY! })

async function releaseWorkProduct(matter: Matter, draft: Draft) {
  const decision = await px.decisions.ask({
    externalId: matter.supervisingAttorneyId,
    type: "select",
    question: `Release "${draft.title}" on matter ${matter.reference}?`,
    options: ["Approve as drafted", "Return with changes", "Do not send"],
  })

  // The ledger row is the supervision record: who, what, when.
  if (decision.value === "Approve as drafted") {
    return sendToClient(matter.id, draft)
  }
  return returnToDraftingQueue(matter.id, draft, decision.value)
}

Who answers

The approver is not at a desk

The approver is a licensed attorney who answers for the work however it was produced. They spend the day in court, with clients or in meetings. A review queue in your product assumes they will come back to a screen. Their duty does not pause while they are away. So the test is whether they can answer within the time the matter allows. Pushary reaches the phone they carry.

Our users are lawyers. Will they accept approving something on a phone?

They already do the same thing all the time. What matters is what they are approving. Nobody should redline a merger agreement on a phone, and Pushary does not ask them to. A phone works for a decision narrowed to something they can answer: this draft, on this matter, with the change flagged, release or return. The reading happens wherever they normally read. The decision is the part that has been stuck waiting for them to reach a desk. If a matter truly needs a full review before anyone can say yes, send the question later. Do not make the reviewer the bottleneck for hours.

Worth reading: ABA Model Rule 5.3 on responsibilities regarding nonlawyer assistance.

$99/ month, Partner plan

Add it to your product. Your users never make a Pushary account or pay us.

What the Partner plan covers

FAQ

Questions, answered

Can the reviewer choose between more than approve and deny?
Yes. The select type takes a list of options, such as approve as drafted, return with changes, or do not send. The chosen option comes back as the answer. That fits legal review better than yes or no, because returning a draft for changes is a different outcome from refusing it. A list opens the Pushary app rather than showing buttons on the lock screen.
Is the ledger enough to evidence supervision?
It gives you the facts, and your counsel decides whether that is enough. The record shows who was asked, what they were shown, what they chose and when, and you can export it. Pushary keeps it for your plan's history window: 90 days on Partner Launch, 365 on Partner Growth. Ask your own counsel and your regulator whether that meets a given duty, rather than taking a vendor's word for it. Pushary is GDPR-aligned. It holds no certification, and we do not claim one.
Can we keep matter content out of Pushary?
Yes, and most legal products should. Put a reference and a short summary in the question rather than the document itself. Keep the draft in your own system. Pushary stores the question you send and the answer, not your work product.
What happens if the attorney does not respond before a deadline?
Nothing is released. When your time limit runs out, the answer counts as no, so a missed review never becomes an unreviewed send. Your agent decides what happens next. Usually that means asking a second named reviewer. Set the time limit well inside the filing deadline, so the second reviewer still has time to act.

Put a person on the step that needs one.

Connect a user once, ask with one call, and run the action only on a yes. Every answer is saved.

Start free