Skip to main content
Wildo.ai Coming soon

In-app assistant

Keep pending reviews moving with deadlines

A pending decision gets a time to be taken, a time to be answered and a final lapse. Missing a deadline sends reminders or reassigns it, and never approves or rejects anything.

What it is
Feature — something a person using the product meets.
What it does
Two service targets and one hard stop. Missing the claim or decision deadline fires the rules declared for that stage: notify the people who may answer, or reassign the decision to a person a declared resolver names. A reassignment target must be able to answer. If not, the rule notifies instead and the refusal is recorded. The lapse ends the decision as lapsed and the proposed action does not run.
What you decide
Add deadlines to the tool's approval gate: the lapse, the claim and decision targets with their clock basis, the rules per stage and any pause states. Declare reviewCalendar in the backend configuration if any clock counts working hours. A declaration that could never work, such as a calendar clock with no calendar or a target after the lapse, stops the application at startup.
Where it stops
Deadlines apply to decisions raised by conversational and autonomous agent turns.
A pending review follows business-hours deadlines through reminders and escalation, and is never automatically approved.
Drawn for In-app assistant, the area this capability belongs to.

A decision routed to a reviewer carries three clocks. The claim deadline says when someone should have taken it, the decision deadline says when someone should have answered, and the lapse is the hard stop. The first two only change who is reminded or who holds the decision. Only the lapse ends it, and it ends as lapsed, not as refused.

The problem it solves

A decision nobody takes is work that silently stops. The agent’s proposal waits, the requester does not know why, and the first sign of trouble is a customer asking. A review process needs reminders and a way to move stuck decisions to someone who will act.

It also needs honest numbers. If an unanswered decision were counted as a refusal, a report would overstate how often reviewers reject agents’ work, which is exactly the figure an auditor asks for.

What it does

Two service targets and one hard stop. Missing the claim or decision deadline fires the rules declared for that stage: notify the people who may answer, or reassign the decision to a person a declared resolver names. A reassignment target must be able to answer. If not, the rule notifies instead and the refusal is recorded. The lapse ends the decision as lapsed and the proposed action does not run.

A gate that declares nothing still gets a lapse and reminders. The default is a 24-hour lapse, with reminders when nobody has taken the decision by half of it and when nobody has answered by three quarters.

Business hours when they matter. A deadline can count elapsed time, or only the working hours of the application’s business calendar. The lapse always counts elapsed time, so a holiday period cannot keep a turn open indefinitely.

The reviewer can stop the clock while waiting on someone else. Pausing names one of the gate’s declared pause states and stops the claim and decision clocks. The paused time is added back when the clock resumes. Pausing never stops the lapse.

Each stage fires once, from a scheduled sweep, and every missed deadline and escalation is recorded.

What you decide

Add deadlines to the tool’s approval gate: the lapse, the claim and decision targets with their clock basis, the rules per stage and any pause states. Declare reviewCalendar in the backend configuration if any clock counts working hours. A declaration that could never work, such as a calendar clock with no calendar or a target after the lapse, stops the application at startup.

Wonder Todos declares a short review window on a drill agent’s delete tool so that every stage fires within minutes. Selected from deadline-drill-agent.ts; the rest of the tool is omitted.

humanApproval: {
  route: HumanDecision_RouteKind.ROLE,
  eligibleRole: CORE_ORG_ROLES.ORG_ADMIN,
  deadlines: {
    lapseAfter: DEADLINE_DRILL_LAPSE_AFTER,
    // Declared rules replace the default reminders, so each stage below is the only thing that fires there.
    rules: [
      { stage: ReviewDeadlineStage.CLAIM_MISSED, action: ReviewEscalationActionKind.NOTIFY },
      { stage: ReviewDeadlineStage.DECISION_MISSED, action: ReviewEscalationActionKind.REASSIGN, target: resolveTodoCreator },
    ],
    // The one pause state Wonder Todos declares (#1864): an administrator waiting on the todo's owner before
    // deleting it may stop the CLAIM and DECISION clocks. The inbox shows it as its word,
    // `system_enums.HumanDecisionPauseState.awaiting-todo-owner`, which the labeller plans from this line.
    // The drill's e2e never pauses, so its stage timings are unchanged.
    pauseStates: ['awaiting-todo-owner'],
  },
},

DEADLINE_DRILL_LAPSE_AFTER is 'PT4M', an ISO-8601 duration of four minutes. A missed claim notifies the eligible reviewers. A missed decision reassigns it to the todo’s creator, a resolver the application writes; a creator who is a plain member cannot answer an ORG_ADMIN gate, so that move is refused and the reviewers are notified instead. Because the rules are declared, they replace the default reminders.

Limits

Deadlines apply to decisions raised by conversational and autonomous agent turns. An execution of an actor system suspended on a person does not yet carry decision deadlines.

Deadlines are fired by the scheduled sweep, so a stage fires on the sweep after it is due, not at the exact instant.

Building a B2B product or an internal tool?

Wildo is not self-service yet. Tell us what you have in mind and we will say plainly whether it fits, and what happens next.