Skip to content

Ticket Deduplicator

Finds duplicate tickets and emerging issue clusters.

Industry Level Difficulty Recommended mode
Customer support 3 of 5 Advanced flat
  • Outages create hundreds of duplicate tickets.
  • Duplicates hide the real volume.
  • New issues are spotted late.
  1. New tickets are compared with open ones by cosine similarity.
  2. Duplicates are linked to a parent.
  3. Bursts near one vector reveal incidents.
  4. search_batch for volume.
Today With Ticket Deduplicator on SrvDB
Each duplicate handled Handled once
Volume unclear True issue counts
Incidents found late Bursts detected early
  1. Embed tickets.
  2. Match against open tickets.
  3. Link duplicates.
  4. Alert on bursts.
  5. Close in bulk.
  • True cosine scores: scores in [-1, 1] mean the same in every mode, so thresholds are stable.
  • search_batch: runs many queries at once, in parallel inside Rust.
  • upsert: inserts new items and replaces changed ones, so the knowledge base stays current.
  • Crash-safe persist(): after it returns, data survives a crash or power loss and reopens exactly as committed.
  • Outage detection
  • Duplicate merging
  • Knowledge-base gaps
  • Bug triage
  • Topic reports
  • Churn-risk signals

embed() is your embedding model (for example sentence-transformers, or a function that turns your records into feature vectors).

import json
import srvdb
db = srvdb.Database("./ticket-deduplicator-db", dimension=384)
def ingest(items):
"""items: list of (id, text, metadata dict)"""
db.upsert(
ids=[i for i, _, _ in items],
embeddings=[embed(t) for _, t, _ in items],
metadatas=[json.dumps(m) for _, _, m in items],
)
db.persist() # crash-safe checkpoint
def duplicates_of(ticket_text, k=5):
hits = db.search(embed(ticket_text), k)
return [(json.loads(db.get(i)), round(score, 3)) for i, score in hits]
  • Tune thresholds per product.
  1. Prototype: load a sample of real data with flat mode and check that searches return what an expert expects.
  2. Measure: if you move to an approximate mode, compare its results with flat on the same queries (recall).
  3. Pipeline: add continuous upsert and decide when to call persist().
  4. Harden: test restarts and crashes, add logging, review every output path with domain experts.
  5. Deploy: ship the database directory with the application or service.
Level Project What it does
1 · Beginner Knowledge Base Search Customers and agents find the right article from their own words.
2 · Intermediate Helpdesk Answer Bot Drafts replies from similar solved tickets and articles.
3 · Advanced Ticket Deduplicator (this page) Finds duplicate tickets and emerging issue clusters.
4 · Expert Customer Memory Agent Remembers each customer’s history across conversations.
5 · Frontier Offline Support Kiosk A self-service assistant that works without internet.

See also: Use cases · Live examples (coming soon)