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.

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
Source split
Units by supplier · Balanced
38
Units- Supplier C37%
- Supplier B32%
- Supplier D31%
Affected 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
- 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

At-risk value
$4,800
Budget
$300
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/
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/
No overselling
20 parallel attempts competing for 10 units commit at most 10 units, on real Postgres.
Source
tests/
Exactly once
Simultaneous executions of one plan produce exactly one commit, and a retried key returns the same execution.
Source
tests/
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/
Honest comparison
Fastest $286 with 38/38 on time, Balanced $272 with 36, Lowest cost $206 with 30 and 6 left open.
Source
scripts/
- 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.
useActionMutation("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 twistIf 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.
