Inspiration
Every enterprise agentic workflow eventually hits a human-in-the-loop approval step — a refund, an access request, a production change. Companies obsess over agent hallucination rates, latency, and cost per token, but nobody measures how fast a human reviewer's judgment decays across their tenth, twentieth, or fortieth approval of the day. We found this described as a real, named failure mode — "approval fatigue" — with no existing tooling or metric attached to it. That gap became the project: not another dashboard, but a system that actually does something about fatigue instead of just displaying it.
What it does
Adaptive Approval Orchestrator is a multi-agent system built around a Sense → Decide → Act → Learn loop:
- Sense — infers reviewer fatigue live from six weighted signals: response-time decay, approval streaks, rubber-stamp ratio, session progress, digest-batch pressure, and SLA pressure. The formula is fully transparent, not a black box.
- Decide — a learned, per-reviewer confidence model (seeded from the reviewer's own early decisions) determines when it's actually safe to act without a human.
- Act — four concrete mechanisms, not one gate:
- Autonomously resolves safe, low-risk requests when fatigue is high and confidence is high, with a one-click override window.
- Locks and escalates high-risk requests to a second reviewer when fatigue crosses a critical threshold — instead of letting them get rubber-stamped.
- Runs a retroactive cold audit on decisions made during high-fatigue windows, catching mistakes after the fact (e.g. a fraud-risk gift-card cashout that was rubber-stamped in seconds during peak fatigue).
- Sends coaching feedback upstream to the requesting AI agents themselves when one agent is flooding the review queue.
- Learn — every human override adjusts the confidence model for next time.
Requests don't arrive on a steady drip either — we modeled realistic, bursty, multi-channel arrival (instant alerts, live-queue items, and batched digests) with live SLA countdowns and a visible competing "other work" load, because that's how approval queues actually behave inside real companies.
How we built it
- Frontend: React + TypeScript + Vite, styled with Tailwind CSS against a custom design system (dark, dense, restrained — inspired by professional dev-tool products) rather than default component-library styling.
- Simulation & scoring engine: a fully client-side TypeScript engine driving the entire scripted 40+ request scenario, fatigue formula, autonomous resolution logic, and retroactive audit — no backend server at all, so the whole app deploys as a static site.
- Visualization: Recharts for the gradient-filled fatigue trajectory chart, decision-breakdown donut, and response-time sparklines, with interactive hover tooltips.
- Reusability layer: the core fatigue/escalation logic is wrapped as MCP
tools, so any agentic workflow with a human-approval step (e.g. one built on
Agent Studio) can call
check_fatigue()orshould_escalate()before finalizing an action, without adopting the dashboard itself. - Build process: we used Google Antigravity's agentic coding environment to execute the build from a detailed architecture and design spec, with its browser subagent verifying the scripted demo scenario end-to-end.
- Deployment: Vercel's free tier, deployed directly from GitHub.
Challenges we ran into
- Designing a fatigue score that is genuinely explainable rather than a black box — we deliberately kept it a transparent weighted formula so every intervention can be justified in plain language to a reviewer.
- Making the request arrival pattern realistic (bursty, multi-channel, SLA-bound) instead of a flat, evenly-spaced queue, which is what most "monitoring dashboard" demos default to and what made our first pass feel generic.
- Scoping which agentic mechanisms to build fully live versus honestly present as designed-but-lightly-wired, given hackathon time constraints — we chose to be transparent about this split rather than overstate autonomy that wasn't fully implemented.
- Debugging response-time capture and threshold-trigger logic so the autonomous-resolution and escalation mechanisms actually fire during the live scripted demo, not just in theory.
Accomplishments that we're proud of
- A genuinely closed multi-agent loop — sensing, autonomous action, retroactive correction, and upstream feedback — rather than a single monitoring view.
- Zero backend, zero hosting cost, fully reusable as an MCP skill for other agentic platforms.
- A retroactive audit mechanism that catches and explains a real rubber-stamped mistake after the fact — the "aha" moment of the whole project.
What we learned
That the most valuable agentic systems aren't the ones with the most AI in every corner — some decisions (like the safety-critical escalation gate) are better left transparent and deterministic, while others (like decomposing a messy request into reviewable sub-decisions) genuinely benefit from a real language model. Knowing which is which mattered more than adding AI everywhere.
What's next
Fully wiring the two currently-stubbed mechanisms (agent-coaching and request-decomposition) with a live LLM call via a small serverless proxy, and testing the fatigue formula against real reviewer behavior data rather than a scripted scenario.
Built With
- gemini
- react
- recharts
- tailwind
- typescript
- vite
Log in or sign up for Devpost to join the conversation.