Abhishek Kumar Java Backend Developer · Bengaluru, India (Remote)
Back to work

Case study

HandOff

AI agent supervision platform. Humans monitor AI agents working on support tickets, with approval gates and an audit trail.

Java 21 Spring Boot 3 PostgreSQL Flyway React 19 TypeScript Vite
01

At a glance

When an AI agent acts on a real support ticket, the main risk is not whether the task is done. The risk is whether a human can still see what happened, approve the right actions, and stop bad outcomes before they spread.

That creates a supervision problem rather than only a model problem. The system needs authenticated sessions, secure ticket channels, and an audit trail that can explain each step after the fact.

02

The problem

AI agents can take actions on behalf of a team, but there is no real trust without human oversight. In a support workflow, a ticket can move from simple automation to a sensitive operation in a single step, and the system has to make that decision visible.

Without secure session handling and approval gates, the agent layer becomes hard to audit and easy to misuse. The platform needed a clear boundary between automated work and real human sign-off.

03

What I built

  • JWT and RBAC for role-based access to ticket operations and admin functions.
  • Refresh-token rotation with reuse detection to reduce token theft and replay risks.
  • Redis rate limiting to slow abuse and prevent repeated high-volume requests.
  • Single-use WebSocket tickets so each live monitoring session was scoped and not shared across clients.
  • Approval gates before important actions reached the next stage.
  • An audit trail for each ticket action and approval decision.
04

Architecture

System overview Human oversight
HandOff architecture diagram A support dashboard sends ticket actions through a Spring Boot API, which checks JWT and RBAC, stores actions in PostgreSQL, and streams approval events through a single-use WebSocket ticket. Support team Spring Boot API JWT · RBAC · approvals PostgreSQL Audit trail Redis Rate limits Ticket socket Single-use
Simplified overview.
05

Key decisions

Decision

Refresh-token rotation with reuse detection

Decision

Single-use WebSocket tickets

Decision

Approval gates before sensitive actions