AI recovery for supply disruptions

When plans break,move forward.

A supplier fails. Orvane finds every order at risk, computes recoveryplans you can compare, and executes only the one you approve.

Orvane · Recovery RoomNOV 6, 2026 ORV-01 scenario

At-risk order value

$4,800

38 orders · 36 protected on time

Recovery cost

$272

91% of the $300 cap

Alternative supply

44 units

38 used by Balanced

On time

36/38

2 late · 0 open

Arrivals vs promises

Orders landed by hour, from the scenario clock

▼36/38 on time

Source split

Units by supplier · Balanced

38

Units
  • Supplier C37%
  • Supplier B32%
  • Supplier D31%

Affected orders

Rev 1 38 orders
  • NS-1004Northstar customer #1004Supplier Bcritical+24hOn time, promised Nov 7 · 09:00
  • NS-1013Northstar customer #1013Supplier Bcritical+24hOn time, promised Nov 7 · 09:00
  • NS-1073Northstar customer #1073Supplier Cnormal+72hLate, promised Nov 8 · 09:00
  • NS-1001Northstar customer #1001Supplier Bhigh+24hOn time, promised Nov 7 · 09:00

Built on

  • Agent-Native
  • React Router
  • PostgreSQL
  • Drizzle ORM
  • Vercel AI SDK
  • OpenAI

What Orvane handles

Impact, plans, andthe human call.

Five jobs an operations lead does under pressure. Orvane does the arithmetic and stops at the decision.

Reads the notice

The supplier's message becomes a structured incident. Unknowns stay unknown until you confirm them.

Counts what's at risk

Every affected order and its value, joined from order rows. Nothing estimated.

Three plans, honestly compared

Real cost and on-time counts for each strategy, with ties called out.

You and the agent, one plan

Select orders, ask in plain words. The agent edits through the same actions you use.

Refuses stale plans

Stock moves after approval? Execution stops, nothing is written, you decide again.

Supplier B drops from 18 units to 5 after the plan is approved. Orvane refuses to execute the old plan, writes nothing, and asks for a new decision.

The signature moment

Spec journey J2 · in the demo, one click

Recovery stale
Business writes on a stale execute
0
Commit per approved plan
1
Same-key retries, one execution
10 → 1

From the integration and real-Postgres test suites

The product

One room for thewhole recovery.

Six surfaces, one source of truth. Pick a tab.

Recovery Room

Every fact about the incident on one screen: the notice, the impact, the plans and what changed since you last looked.

  • Impact computed from order rows
  • Evidence highlighted in the notice
  • Agent edits appear live, revision always shown
Orvane · Recovery RoomSynced

At-risk value

$4,800

Budget

$300

12 ordersdue +24h$1,537.50
14 ordersdue +48h$1,725
12 ordersdue +96h$1,537.50

At risk

38

orders · rev 1

Proof

Checked,not claimed.

Every statement below is asserted by a test or computed by the planner. The source is on each card.

Exact impact

ORV-01 yields 38 affected orders and $4,800 of order value at risk, from order rows, on every run.

Source

tests/integration/landing-snapshot.test.ts

Stale plans can't run

After Supplier B drops 18 → 5, the approved plan is refused and business rows stay byte-for-byte unchanged.

Source

tests/integration/h3-execution.test.ts

No overselling

20 parallel attempts competing for 10 units commit at most 10 units, on real Postgres.

Source

tests/integration/concurrency.pg.test.ts

Exactly once

Simultaneous executions of one plan produce exactly one commit, and a retried key returns the same execution.

Source

tests/integration/concurrency.pg.test.ts

People approve

Approval calls from the agent, the CLI or the raw API are rejected. Only a person in the app can approve.

Source

tests/integration/h3-execution.test.ts

Honest comparison

Fastest $286 with 38/38 on time, Balanced $272 with 36, Lowest cost $206 with 30 and 6 left open.

Source

scripts/landing-snapshot.ts · planner output

38
Orders at risk in ORV-01
$4,800
Order value at risk
3
Strategies computed per change
0
Writes on a refused stale plan

Safety

The agent proposes.You decide.

Same action, called fromUIAgentuseActionMutation("set-order-priority")

Human approval

Every committed recovery needs a person to approve the exact plan.

  • Bound to plan hash and revision
  • Hidden from the agent's tools
  • Actor and time on record

Stale-plan protection

The twist

If stock or priorities change after approval, the old plan can't run.

  • Inventory fingerprint checked at commit
  • Zero writes on refusal
  • Fresh approval required

Exactly-once execution

One locked transaction: reservations, order status and audit, or nothing.

  • Row locks in a fixed order
  • Idempotency key on every attempt
  • Retries return the first result

Synthetic demo dataNo real orders or paymentsEvery number sourced

Try it now

Break a supply chain.Watch it recover.

Your own sandbox with 120 synthetic orders, seeded fresh. Reset whenever you like.

See how it works