Inspiration
Every IT admin has a horror story. A "routine" offboarding deprovisions someone who turns out to be the sole approver on a $140K purchase order queue, or the last key custodian on a production KMS vault, and nobody finds out until something downstream is already broken. These systems are deeply interconnected — access, approvals, automations, and infrastructure all depend on each other in ways that are invisible until you pull the wrong thread.
We wanted to bring the "plan before apply" discipline that infrastructure-as-code gave DevOps to the much messier, more human side of IT operations: offboarding, credential revocation, and resource teardown — the actions that don't have a dry-run mode today.
What it does
ShadowProof intercepts an operational intent — in plain English, like "offboard Priya Sharma" — clones the current system topology into an isolated shadow graph, and rehearses the action there first. It traces multi-hop cascades across approval workflows, KMS custody, automation credentials, governance seats, and database connections, and checks the result against five policy invariants (INV-01 through INV-05).
If the direct action ("Plan A") would violate an invariant, ShadowProof doesn't just warn you — it searches for and synthesizes a non-destructive alternative ("Plan B") that preserves the same goal while avoiding the breakage, then shows both plans side by side with a risk score, blast radius, and a T+0s to T+24h consequence timeline. Nothing touches the real system until a human explicitly approves it, and every simulation is hashed and logged to an immutable audit trail.
How we built it
- Frontend: React 18, TypeScript, TailwindCSS, Vite — an interactive SVG dependency graph, blast-radius gauges, and an evidence matrix comparing Plan A vs Plan B.
- Simulation engine: a custom graph traversal engine (
genericSimulationEngine.ts) that clones system state, severs links, and cascades failures through workflows, automations, roles, and resources — computing risk severity dynamically rather than from hardcoded scenarios. - Planning engine:
genericPlanner.tsperforms a goal-preserving state search to generate the remediated Plan B when an invariant is violated. - AI layer: Google Gemini (
gemini-2.5-flash) parses natural-language operational intent into structured graph mutations, with dynamic model discovery and caching — and a fully deterministic offline parser as a zero-downtime fallback if no API key is present or the API rate-limits. - Testing: Vitest for the core simulation logic, strict TypeScript with no
anybypasses.
Challenges we ran into
- Early on, our simulation engine leaned on scripted/hardcoded scenario outcomes to make the demo look convincing — we caught this and rebuilt the engine to compute consequences and risk scores dynamically from actual graph traversal, so the results are real regardless of which node you target.
- Making the AI layer reliable enough to demo live: Gemini model availability and rate limits are unpredictable, so we built model caching and automatic fallback to a deterministic parser to guarantee the app never breaks mid-demo.
- Designing invariants that were general enough to apply across very different action types (a person offboarding vs. a database teardown) without collapsing into vague, unhelpful rules.
Accomplishments that we're proud of
- A simulation engine that's driven entirely by real graph traversal, not scripted demo paths.
- An AI integration that gracefully degrades to a deterministic fallback with zero loss of core functionality.
- A full audit trail with SHA-256 state hashing and human-approval gating, so the "responsible AI" story isn't bolted on — it's structural.
What we learned
How much of enterprise risk isn't about any single system failing, but about the dependencies between systems that nobody models explicitly — approval chains, credential custody, automation auth — until something breaks. Also, that building a trustworthy fallback path matters as much as the AI feature itself for anything meant to be demoed or relied upon live.
What's next for ShadowProof
- Real connectors to identity providers (Okta, Entra ID), cloud IAM (AWS/GCP), and ticketing systems to pull live topology instead of synthetic graphs.
- More invariant types covering compliance frameworks (SOC 2, ISO 27001) out of the box.
- A CLI/CI integration so Plan A/Plan B rehearsal can run automatically before any offboarding or infra-teardown ticket is approved.
Log in or sign up for Devpost to join the conversation.