Back to projects

AI / MLPrototype2026

Tidal

IT and support ticket routing: one TypeSafe Jev request per ticket picks the team, priority, mood and risk, and its probabilities decide when a human should step in.

96.9%
Team accuracy on 96 labelled tickets
176 ms
Median routing time per ticket
1.04 s
To re-route the backlog after a reorg

Timeline

Oct 2026

Role

Design, routing logic and front end

Team

Solo

Domain

IT service management · Customer support

Status

Prototype

Stack

Next.js 16React 19TypeScriptJev (TypeSafe)Tailwind CSS 4

Source

Section 01

Overview

Ticket triage is repetitive, and a router that guesses is risky. Tidal sends each incoming IT or support ticket to Jev, TypeSafe's decision model, as one request with six typed questions: which team owns it (with a probability for every team), priority, the requester's mood, whether many people are affected, whether it is a security risk, and which saved reply to start from.

Because the answers are probabilities rather than generated text, the routing rule lives in plain code that anyone can read and tune.

Inbox with live intake
Help-desk inbox with a newly arrived ticket routed to Facilities at full confidence
A stolen laptop, routed
Ticket about a stolen laptop routed to Security as P1 with a security-risk flag

Section 02

When a Human Steps In

A ticket whose team confidence clears the threshold (0.60 by default) routes itself; anything below waits in a Needs review mailbox. When Jev splits a new-starter request between Identity & Access and the IT Service Desk at 52% and 45%, a person decides.

A confidence-gating chart shows the trade-off for every threshold: how much is automated and how accurate that automated slice is against hand labels.

Held for review
Needs review mailbox with a ticket split between two teams below the confidence threshold
Choosing a threshold
Chart of automated share and accuracy across confidence thresholds
Ticket held for review on a phone with its team probabilities
A held ticket on a phone
Tidal inbox on a phone
Inbox on a phone

Section 03

Org Changes Without Retraining

Teams change. Merge Network and Hardware into one Infrastructure team, split Product Support, or mark a team unavailable, and Tidal re-asks only the team question for every open ticket. Re-routing the 92-ticket backlog took 1.04 s and $0.0021, and a Sankey diagram shows exactly which tickets moved. There is no model to retrain because the teams are just the options in the question.

Re-routing after a merge
Sankey diagram of 24 of 92 tickets moving after two teams were merged
The exact request
The JSON request body and the typed answers for a lost-phone ticket

Section 04

Measured Results

On 96 hand-labelled synthetic tickets, Jev picked the right team 96.9% of the time (93 of 96). Routing the whole 92-ticket backlog took 1.2 to 1.6 s with 24 requests in flight, a median 176 ms per ticket, about 1,000 input tokens each, and under half a cent in total.

The data also showed the limit of thresholds: the two misroutes came back at high confidence (0.82 and 0.97), so a threshold catches uncertain tickets but not confident mistakes. That is why agents can override and re-ask any ticket. The hosted-LLM costs on the Insights page are estimates from published prices.

Labelled-ticket benchmark
Benchmark table with 97% accuracy, latency percentiles and tokens per ticket
Insights and cost
Insights page with routing KPIs and cost to triage 1,000 tickets
Dark mode
Tidal inbox in dark mode with a security alert ticket