Catch the silent errors before your team does.
The Integrity Engine runs scenario-based checks across every workspace — stock drift, dead integrations, expired batches, stuck MOs, ATP delays, lot mismatches — and presents them as a deduplicated findings queue. Each finding has a severity, a confidence score, an owning entity, and a one-click repair action when one is available.
| Severity | Scenario | Summary |
|---|---|---|
| Critical | dead_sync | Shopify channel — no sync 9 days |
| Critical | delayed_procurement_atp | PO-00014 line overdue (pending) |
| High | in_transit_orphan | TR-2026-114 stuck in transit |
| Warning | return_limbo | RMA-00041 received, not restocked |
| Warning | valuation_unit_cost_missing | 5 SKUs missing unit cost |
Background checks. Foreground answers.
Twenty-plus detectors run on every meaningful event, every scheduled scan, and on demand. Findings are deduplicated, scored and correlated — so the team sees one signal, not a thousand alerts.
| Severity | Scenario | Summary |
|---|---|---|
| Critical | dead_sync | Shopify channel — no sync 9 days |
| Critical | delayed_procurement_atp | PO-00014 line overdue (pending) |
| High | in_transit_orphan | TR-2026-114 stuck in transit |
| Warning | return_limbo | RMA-00041 received, not restocked |
| Warning | valuation_unit_cost_missing | 5 SKUs missing unit cost |
Scenario-based detectors
Twenty-plus built-in detectors — from negative inventory and dead sync to delayed procurement ATP, in-transit orphans, stuck MOs and machine-material mismatches. Each detector explains the issue, the affected entity, and the fix path.
Severity, status & correlation
Every finding is rated Critical, High, Warning or Info. Status moves Open → In review → Resolved. Related findings bundle into one row so dead-sync events on the same integration don't drown out everything else.
| Product / Variant | Stock qty → lot total | Difference |
|---|---|---|
| Steel Tube 40x40mm | 245 → 268 | +23 |
| Aluminum Sheet 2mm | 50 → 85 | +35 |
| PCB Module v2 | 320 → 335 | +15 |
| Power Cable 1m | 412 → 470 | +58 |
| Corner Bracket 8mm | 96 → 90 | -6 |
Drift scans for stock vs lot totals
Background scans compare on-hand qty to lot aggregates and surface under-tracked or over-tracked lines. Differences show the exact delta and the issue type so the right person can act.
| Product / Variant | Stock qty → lot total | Difference |
|---|---|---|
| Steel Tube 40x40mm | 245 → 268 | +23 |
| Aluminum Sheet 2mm | 50 → 85 | +35 |
| PCB Module v2 | 320 → 335 | +15 |
| Power Cable 1m | 412 → 470 | +58 |
| Corner Bracket 8mm | 96 → 90 | -6 |
One-click repair actions
Where a fix is mechanical (post the missing movement, release the orphan reservation, repair the lot aggregate, mark a serial as shipped), the engine offers an action button — every action is logged in the audit trail.
| Severity | Scenario | Summary |
|---|---|---|
| Critical | dead_sync | Shopify channel — no sync 9 days |
| Critical | delayed_procurement_atp | PO-00014 line overdue (pending) |
| High | in_transit_orphan | TR-2026-114 stuck in transit |
| Warning | return_limbo | RMA-00041 received, not restocked |
| Warning | valuation_unit_cost_missing | 5 SKUs missing unit cost |
Re-scan on demand
Run an integrity scan from the workspace at any time. The engine reuses the last snapshot when it can, so checks finish in seconds even on large warehouses.
| Started | Status | Trigger | Open findings |
|---|---|---|---|
| 17:00 | Completed | manual | 8 |
| 16:00 | Completed | scheduled | 8 |
| 15:00 | Completed | scheduled | 8 |
| 14:00 | Completed | scheduled | 9 |
| 13:45 | Completed | event | 10 |
Scan reports with immutable history
Every scan is stored with scope, trigger, open-finding count and per-bucket summary. You can prove to auditors which scenarios were running, when, and what they found.
See which detectors are firing today
The dashboard shows every detector that's actively producing findings, with the open count on each card. Cards stay grey when the detector is quiet and pick up red, orange or amber the moment something needs a human.
- Cards colour by current open count, not by historical noise
- Click a card to filter the findings queue to that scenario
- Mute or snooze noisy detectors per workspace
How the engine runs
From event to resolved finding — five steps, fully tracked.
Event or scheduled scan
Detectors fire on writes, on a schedule, or when you press Run integrity scan
Deduplicate & score
Same entity / same scenario merges into one finding with a confidence score
Surface in the queue
Findings appear in the active queue with severity, scenario, entity, summary
Repair or review
One-click fix when mechanical; otherwise route the finding to the right owner
Resolved & audited
Resolution closes the finding and writes an immutable line to the scan report
| Started | Status | Trigger | Open findings |
|---|---|---|---|
| 17:00 | Completed | manual | 8 |
| 16:00 | Completed | scheduled | 8 |
| 15:00 | Completed | scheduled | 8 |
| 14:00 | Completed | scheduled | 9 |
| 13:45 | Completed | event | 10 |
Every scan recorded for audit
Each integrity run is stored with scope, trigger, open-finding total and per-bucket counts. The history is append-only — perfect for SOX, ISO and finance reviews.
- Append-only run history with timestamps and triggers
- Per-scenario summary chips per run
- Export any run as CSV for finance
Stop discovering inventory errors at month-end
Spreadsheets, gut feel and end-of-month surprises don't scale. The Integrity Engine watches the whole inventory model in the background and tells you the moment something is off — before the next cycle count, before the next audit, before the next stockout.
| Product / Variant | Stock qty → lot total | Difference |
|---|---|---|
| Steel Tube 40x40mm | 245 → 268 | +23 |
| Aluminum Sheet 2mm | 50 → 85 | +35 |
| PCB Module v2 | 320 → 335 | +15 |
| Power Cable 1m | 412 → 470 | +58 |
| Corner Bracket 8mm | 96 → 90 | -6 |
Run an integrity scan now.
Bring up the dashboard, press Run integrity scan, and see what's been hiding in your stock model. Most teams find six-figure value the first week.