Curiosity

Technical support blueprint

A complete sample workspace for a customer-support knowledge graph. Drawn from the curiosity-ai/technical-support repository, which you can clone and run as-is.

For the page-by-page walkthrough, see the Technical Support tutorial. This page is the at-a-glance blueprint: schema, retrieval, AI, deployment.

The graph

flowchart LR Customer -->|HasTicket| Ticket Ticket -->|ForDevice| Device Device -->|HasPart| Part Part -->|MadeBy| Manufacturer Ticket -->|HasStatus| Status Ticket -->|HasMessage| Message Message -->|MentionsEntity| Entity
Node Key Indexed
Customer Id Name text
Device Name text
Part Name text
Manufacturer Name text
Status Code label text
Ticket Id Subject text (high boost), Body text + vector
Message Id Text vector
Entity Name name

Retrieval

Search experience — text-heavy for identifiers (ticket IDs, device names, part numbers) and hybrid for paraphrased symptom searches. Facets on Status, Device, Manufacturer, and Customer.Tier.

Similar-cases endpoint — combines StartAtSimilarText over Ticket.Body with an optional ForDevice graph constraint, returning scored matches.

class SimilarRequest { public string Query { get; set; } public string Device { get; set; } public int Limit { get; set; } = 10; }
var req = Body.FromJson<SimilarRequest>();

var search = SearchRequest.For(req.Query);
search.BeforeTypesFacet = new([] { "Ticket" });

if (!string.IsNullOrWhiteSpace(req.Device))
    search.TargetUIDs = Q().StartAt("Device", req.Device).In("ForDevice").AsUIDEnumerable().ToArray();

var q = await Graph.CreateSearchAsUserAsync(search, CurrentUser, CancellationToken);
return q.Take(Math.Min(req.Limit, 50)).Emit("N");

AI

Support chat with three tools:

  • SearchTickets(query, productSku?, limit?) — returns similar tickets with snippet IDs for citations.
  • GetTicketDetails(ticketId) — fetches a ticket and its messages.
  • FindRelatedKBArticles(query) — searches the connected knowledge base (if present).

The agent shape is: search → pick the top snippets → synthesize an answer with citations → never invent ticket IDs.

Permissions

Ticket nodes are restricted to teams that correspond to the customer's tier — Enterprise tickets are visible only to the Enterprise support team, and to the Customer's own users via the HasTicket ownership edge. Every search runs through CreateSearchAsUserAsync, so users see only what they're allowed to.

Deployment

  • Single-container deployment is enough for ≤ 500 users.
  • The connector runs as a scheduled task every 15 minutes against the ticketing system's webhook log.
  • Embeddings: text-embedding-3-small hosted, or a local MiniLM for air-gapped deployments.
  • Chat: gpt-4o-mini for low-latency, claude-haiku-4-5 as fallback.

Where to clone

git clone https://github.com/curiosity-ai/technical-support

The repo contains:

  • Connector/ — the C# data connector with sample data.
  • Endpoints/ — the custom endpoints used by the support UI.
  • Tools/ — the AI tools for the support chat.
  • FrontEnd/ — a Tesserae-based UI tailored for the support workflow.
  • README.md — setup instructions.
© 2026 Curiosity. All rights reserved.
Powered by Neko