Blueprint: customer support
Support context that survives every handoff.
Keep TICKET, MESSAGE, and RESOLUTION records connected to the CUSTOMER across email, chat, and calls, so a resolved issue like the CSV export failure on customer cust-88 stays linked to the fix that resolved it. A support agent or copilot opens ticket tkt-512 already knowing the plan, prior tickets, and which RESOLUTION record answered a similar problem before.
Customer Support Memory is a RushDB pattern that connects CUSTOMER, TICKET, MESSAGE, and RESOLUTION records with semantic search over message text so support agents recall similar past issues and their fixes scoped to one customer across channels.
Support context resets on every new ticket.
Customers move across email, chat, and calls, and their history lands in separate tools each time. Without a connected record, ticket history stays split across channels, resolutions for similar issues are hard to find, account and plan context is missing when a ticket opens, and keyword search misses a problem described in different words than last time — so agents re-ask questions and miss fixes that already worked.
Before
- Ticket history split across channels and tools
- Resolutions hard to find for similar issues
- Account context missing at the start of a ticket
- Keyword search misses differently worded problems
With RushDB
- Tickets, messages, and resolutions persist as records
- Similar past issues recalled by meaning
- Account and plan context attached to each ticket
- One backend for search, filters, and relationships
Graph intelligence on ingest
Incoming data becomes queryable graph context.
A ticket lands as a TICKET record nested under its CUSTOMER, carrying channel and status, with MESSAGE and RESOLUTION records nested inside it, like the CSV export fix on ticket tkt-512. RushDB types those fields on write, auto-links MESSAGE and RESOLUTION records to their parent TICKET and CUSTOMER, and keeps message body text searchable so a differently worded export complaint still matches the resolution that already worked.
01
Normalize as tickets arrive
CUSTOMER, TICKET, MESSAGE, and RESOLUTION payloads are typed on write, so fields like channel and status are filterable the moment a ticket lands.
02
Auto-link nested structure
MESSAGE and RESOLUTION records nested under a TICKET are automatically related to it and to the owning CUSTOMER, without manual foreign keys.
03
Enrich scattered sources
Suggested-relationship analysis surfaces links between tickets opened on different channels by the same CUSTOMER, so a chat follow-up connects to the original email ticket.
Suggested relationship analysis requires an LLM configured for the project. Suggestions stay in draft form until you approve them, so inferred domain meaning never mutates the graph silently. You can also add explicit relationships through the SDK or API.
Review suggested relationship patternsData model
One flexible graph for the workflow.
Start with the payload shape your product already produces. RushDB stores it as Records, infers typed properties, and keeps nested or approved domain relationships queryable.
One customer write can carry tickets, messages, and resolutions while later replies append new messages across channels.
{
"customerId": "cust-88",
"plan": "pro",
"TICKET": [{
"ticketId": "tkt-512",
"channel": "email",
"status": "resolved",
"MESSAGE": [{ "role": "customer", "body": "Export to CSV fails on large datasets." }],
"RESOLUTION": [{ "summary": "Raised export row limit; advised chunked export." }]
}]
}Working example
Resolve once. Recall the fix for the next similar ticket.
A resolved ticket stores its messages and resolution linked to the customer. A later ticket recalls similar past issues by meaning, scoped to the same customer.
CUSTOMER cust-88 plan: pro
TICKET tkt-512 channel: email status: resolved
MESSAGE "Export to CSV fails on large datasets."
RESOLUTION "Raised export row limit; advised chunked export."{
"labels": ["MESSAGE"],
"propertyName": "body",
"query": "CSV export failing for big exports",
"where": { "CUSTOMER": { "customerId": "cust-88" } }
}{
"ticket": "tkt-512",
"match": "Export to CSV fails on large datasets.",
"resolution": "Raised export row limit; advised chunked export."
}Python SDK
Persist the ticket trail. Recall the resolution that worked.
RushDB keeps customers, tickets, messages, and resolutions connected and keeps message text searchable. Your support workflow and model decide how to use the recalled history.
from rushdb import RushDB
db = RushDB('RUSHDB_API_KEY')
db.ai.indexes.create({'label': 'MESSAGE', 'propertyName': 'body'})
db.records.import_json({
'label': 'CUSTOMER',
'data': {
'customerId': 'cust-88',
'plan': 'pro',
'TICKET': [{
'ticketId': 'tkt-512',
'channel': 'email',
'status': 'resolved',
'MESSAGE': [{'role': 'customer', 'body': 'Export to CSV fails on large datasets.'}],
'RESOLUTION': [{'summary': 'Raised export row limit; advised chunked export.'}],
}],
},
})
similar = db.ai.search({
'labels': ['MESSAGE'],
'propertyName': 'body',
'query': 'CSV export failing for big exports',
'where': {'CUSTOMER': {'customerId': 'cust-88'}},
'limit': 10,
})Implementation blueprint
Build the customer support memory path.
Use this sequence to connect ticket history across channels and retrieve similar past issues with their resolutions.
- 01Import CUSTOMER records with TICKET, MESSAGE, and RESOLUTION records
- 02Create a managed index for MESSAGE.body
- 03Append new messages and resolutions to the customer's ticket history
- 04Recall similar past issues by meaning, scoped to the customer
- 05Surface the linked RESOLUTION records with each match
Build path
- Scope tickets, messages, and resolutions to a customer and channel.
- Keep resolutions as records linked to the ticket they resolved.
- Recall by meaning so differently worded problems still match.
- Attach account and plan context so agents see it at ticket open.
Relevant docs
Read the exact primitives behind this pattern.
These links point to the RushDB docs pages that map directly to this blueprint: ingestion, labels, properties, values, SearchQuery, relationships, semantic search, MCP, or deployment.
Semantic search
Index message text and recall similar past issues by meaning while keeping customer-scoped filters.
Open docsRelationships
Connect tickets, messages, and resolutions to the customer across email, chat, and call channels.
Open docsImport JSON data
Push nested customer, ticket, message, and resolution data and let RushDB create the connected records.
Open docsHow it works
Build the smallest useful workflow first.
01
Connect the ticket history
Import customers with their tickets, messages, and resolutions so cross-channel history stays linked.
02
Index message text
Create a managed embedding index once on the message body so issues are recalled by meaning, not keyword.
03
Recall before responding
Retrieve similar past tickets and their resolutions scoped to the customer before the agent replies.
Know where it fits.
Context across channels
Email, chat, and call records live in one graph, so an agent sees the full history regardless of where the customer started.
Reuse what already worked
Linking resolutions to tickets lets agents surface the fix that resolved a similar issue instead of starting over.
Questions developers ask.
Next step
Start with one focused workflow.
Related use cases
Explore all use casesCustomer 360 graph analytics
Connect users, orders, subscriptions, support interactions, and events into one queryable customer graph.
Explore customer 360 analyticsAgent memory
Keep state, decisions, and tool output available across sessions.
Explore agent memoryRAG and knowledge bases
Retrieve related context, not only the nearest similar chunks.
Explore graph-aware RAG